Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_TutorialLogic_Heli.c
Go to the documentation of this file.
1
[
BaseContainerProps
()]
2
class
SCR_TutorialLogic_Heli
:
SCR_BaseTutorialCourseLogic
3
{
4
protected
const
float
TIME_FOR_ANGLE_WARNING
= 3000;
5
protected
const
float
TIME_FOR_ALTITUDE_WARNING
= 2500;
6
7
protected
SCR_TutorialGamemodeComponent
m_TutorialGamemode
;
8
protected
Vehicle
m_CourseHelicopter
;
9
protected
SCR_HelicopterControllerComponent
m_HelicopterController
;
10
protected
SignalsManagerComponent
m_SignalsManagerComponent
;
11
protected
float
m_fAngleTimer
,
m_fAltitudeTimer
;
12
protected
VehicleHelicopterSimulation
m_HelicopterSimulation
;
13
bool
m_bForceAutohover
,
m_bCheckAngle
,
m_bCheckAltitude
;
14
15
//------------------------------------------------------------------------------------------------
16
protected
void
RotorCheck
()
17
{
18
if
(!
m_CourseHelicopter
)
19
return
;
20
21
if
(!
m_HelicopterSimulation
)
22
m_HelicopterSimulation
=
VehicleHelicopterSimulation
.Cast(
m_CourseHelicopter
.FindComponent(
VehicleHelicopterSimulation
));
23
24
if
(!
m_HelicopterSimulation
)
25
return
;
26
27
if
(
m_HelicopterSimulation
.RotorGetState(0) ==
RotorState
.DESTROYED ||
m_HelicopterSimulation
.RotorGetState(1) ==
RotorState
.DESTROYED)
28
m_TutorialGamemode
.RequestBreakCourse(
SCR_ETutorialBreakType
.FORCED);
29
}
30
31
//------------------------------------------------------------------------------------------------
32
protected
void
HelicopterDrownedCheck
()
33
{
34
if
(!
m_CourseHelicopter
)
35
return
;
36
37
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_CourseHelicopter
.FindComponent(VehicleControllerComponent));
38
if
(!vehicleController)
39
return
;
40
41
if
(!vehicleController.GetEngineDrowned())
42
return
;
43
44
m_TutorialGamemode
.RequestBreakCourse(
SCR_ETutorialBreakType
.FORCED);
45
}
46
47
//------------------------------------------------------------------------------------------------
48
protected
void
PrepareDamageInvokers
()
49
{
50
if
(!
m_CourseHelicopter
)
51
return
;
52
53
//general helicopter damage check
54
SCR_VehicleDamageManagerComponent
damageManager =
SCR_VehicleDamageManagerComponent
.Cast(
m_CourseHelicopter
.GetDamageManager());
55
if
(damageManager)
56
damageManager.GetOnDamageStateChanged().Insert(
OnHelicopterDamaged
);
57
58
SlotManagerComponent slotManager = SlotManagerComponent.Cast(
m_CourseHelicopter
.FindComponent(SlotManagerComponent));
59
if
(!slotManager)
60
return
;
61
62
IEntity
rotor;
63
EntitySlotInfo
slot = slotManager.GetSlotByName(
"RotorMain"
);
64
if
(slot)
65
{
66
rotor = slot.GetAttachedEntity();
67
SCR_RotorDamageManagerComponent rotorDmgComp = SCR_RotorDamageManagerComponent.Cast(rotor.
FindComponent
(SCR_RotorDamageManagerComponent));
68
rotorDmgComp.GetOnDamageStateChanged().Insert(
OnHelicopterDamaged
);
69
}
70
71
slot = slotManager.GetSlotByName(
"RotorTail"
);
72
if
(slot)
73
{
74
rotor = slot.GetAttachedEntity();
75
SCR_RotorDamageManagerComponent rotorDmgComp = SCR_RotorDamageManagerComponent.Cast(rotor.
FindComponent
(SCR_RotorDamageManagerComponent));
76
rotorDmgComp.GetOnDamageStateChanged().Insert(
OnHelicopterDamaged
);
77
}
78
}
79
80
//------------------------------------------------------------------------------------------------
81
protected
void
RemoveHelicopterInvokers
()
82
{
83
if
(!
m_CourseHelicopter
)
84
return
;
85
86
//General damage invoker
87
SCR_VehicleDamageManagerComponent
heliDamageManager =
SCR_VehicleDamageManagerComponent
.Cast(
m_CourseHelicopter
.GetDamageManager());
88
if
(heliDamageManager)
89
heliDamageManager.GetOnDamageStateChanged().Remove(
OnHelicopterDamaged
);
90
91
//Rotor damage invoker
92
SlotManagerComponent slotManager = SlotManagerComponent.Cast(
m_CourseHelicopter
.FindComponent(SlotManagerComponent));
93
if
(!slotManager)
94
return
;
95
96
EntitySlotInfo
slot = slotManager.GetSlotByName(
"RotorMain"
);
97
if
(slot)
98
{
99
IEntity
rotor = slot.GetAttachedEntity();
100
if
(!rotor)
101
return
;
102
103
SCR_RotorDamageManagerComponent rotorDmgComp = SCR_RotorDamageManagerComponent.Cast(rotor.
FindComponent
(SCR_RotorDamageManagerComponent));
104
if
(!rotorDmgComp)
105
return
;
106
107
rotorDmgComp.GetOnDamageStateChanged().Remove(
OnHelicopterDamaged
);
108
}
109
110
slot = slotManager.GetSlotByName(
"RotorTail"
);
111
if
(slot)
112
{
113
IEntity
rotor = slot.GetAttachedEntity();
114
if
(!rotor)
115
return
;
116
117
SCR_RotorDamageManagerComponent rotorDmgComp = SCR_RotorDamageManagerComponent.Cast(rotor.
FindComponent
(SCR_RotorDamageManagerComponent));
118
if
(!rotorDmgComp)
119
return
;
120
121
rotorDmgComp.GetOnDamageStateChanged().Remove(
OnHelicopterDamaged
);
122
}
123
124
}
125
126
//------------------------------------------------------------------------------------------------
127
protected
void
OnHelicopterDamaged
(
EDamageState
state)
128
{
129
if
(state ==
EDamageState
.DESTROYED)
130
return
;
131
132
m_TutorialGamemode
.RequestBreakCourse(
SCR_ETutorialBreakType
.FORCED);
133
}
134
135
//------------------------------------------------------------------------------------------------
136
protected
void
ContinuousCheck
()
137
{
138
if
(!
m_CourseHelicopter
|| !
m_HelicopterController
|| !
m_SignalsManagerComponent
)
139
m_TutorialGamemode
.SetCourseConfig(
SCR_ETutorialCourses
.FREE_ROAM);
140
141
if
(
m_bForceAutohover
&& !
m_HelicopterController
.GetAutohoverEnabled())
142
{
143
if
(
m_TutorialGamemode
.GetCurrentStage().Type() !=
SCR_Tutorial_Heli_AUTOHOVER_ON
)
144
{
145
m_TutorialGamemode
.InsertStage(
"TURN_AUTOHOVER"
,
m_TutorialGamemode
.GetActiveStageIndex());
146
m_TutorialGamemode
.SetStage(
m_TutorialGamemode
.GetActiveStageIndex());
147
}
148
}
149
150
if
(
m_bCheckAngle
)
151
{
152
float
angle =
m_SignalsManagerComponent
.GetSignalValue(
m_SignalsManagerComponent
.AddOrFindSignal(
"PitchAngle"
));
153
float
roll =
m_SignalsManagerComponent
.GetSignalValue(
m_SignalsManagerComponent
.AddOrFindSignal(
"RollAngle"
));
154
155
if
((angle <= -60 || angle >= 50) || (roll <= -45 || roll >= 45))
156
{
157
if
(
m_fAngleTimer
== 0)
158
m_fAngleTimer
=
GetGame
().GetWorld().GetWorldTime();
159
160
if
(((
m_fAngleTimer
+
TIME_FOR_ANGLE_WARNING
) <
GetGame
().GetWorld().GetWorldTime()) && (
m_TutorialGamemode
.GetCurrentStage().Type() !=
SCR_Tutorial_Heli_DANGER_ANGLE
))
161
{
162
m_TutorialGamemode
.InsertStage(
"Danger_ANGLE"
,
m_TutorialGamemode
.GetActiveStageIndex());
163
m_TutorialGamemode
.SetStage(
m_TutorialGamemode
.GetActiveStageIndex());
164
}
165
}
166
else
167
{
168
m_fAngleTimer
= 0;
169
}
170
}
171
172
if
(
m_bCheckAltitude
)
173
{
174
if
(
m_SignalsManagerComponent
.GetSignalValue(
m_SignalsManagerComponent
.AddOrFindSignal(
"AltitudeAGL"
)) < 10)
175
{
176
if
(
m_fAltitudeTimer
== 0)
177
m_fAltitudeTimer
=
GetGame
().GetWorld().GetWorldTime();
178
179
if
(((
m_fAltitudeTimer
+
TIME_FOR_ALTITUDE_WARNING
) <
GetGame
().GetWorld().GetWorldTime()) && (
m_TutorialGamemode
.GetCurrentStage().Type() !=
SCR_Tutorial_Heli_DANGER_ALTITUDE
))
180
{
181
m_TutorialGamemode
.InsertStage(
"DANGER_ALTITUDE"
,
m_TutorialGamemode
.GetActiveStageIndex());
182
m_TutorialGamemode
.SetStage(
m_TutorialGamemode
.GetActiveStageIndex());
183
}
184
}
185
else
186
{
187
m_fAltitudeTimer
= 0;
188
}
189
}
190
191
HelicopterDrownedCheck
();
192
RotorCheck
();
193
}
194
195
//------------------------------------------------------------------------------------------------
196
override
void
OnCourseStart
()
197
{
198
m_TutorialGamemode
= SCR_TutorialGamemodeComponent.GetInstance();
199
if
(!
m_TutorialGamemode
)
200
return
;
201
202
m_CourseHelicopter
=
Vehicle
.Cast(
GetGame
().GetWorld().FindEntityByName(
"UH1COURSE"
));
203
if
(!
m_CourseHelicopter
)
204
return
;
205
206
ChimeraCharacter
copilot =
ChimeraCharacter
.Cast(
GetGame
().GetWorld().FindEntityByName(
"HELICOPTER_Copilot"
));
207
if
(copilot)
208
m_TutorialGamemode
.MoveCharacterIntoVehicle(copilot,
m_CourseHelicopter
,
ECompartmentType
.PILOT, 1);
209
210
PrepareDamageInvokers
();
211
212
m_HelicopterController
= SCR_HelicopterControllerComponent.Cast(
m_CourseHelicopter
.FindComponent(SCR_HelicopterControllerComponent));
213
m_SignalsManagerComponent
=
SignalsManagerComponent
.Cast(
m_CourseHelicopter
.FindComponent(
SignalsManagerComponent
));
214
215
GetGame
().GetCallqueue().CallLater(
ContinuousCheck
, 500,
true
);
216
}
217
218
//------------------------------------------------------------------------------------------------
219
override
void
OnCourseEnd
()
220
{
221
if
(
m_TutorialGamemode
&&
m_CourseHelicopter
)
222
m_TutorialGamemode
.ChangeVehicleLockState(
m_CourseHelicopter
,
true
);
223
224
m_bCheckAngle
=
false
;
225
m_bCheckAltitude
=
false
;
226
m_bForceAutohover
=
false
;
227
228
m_fAngleTimer
= 0;
229
m_fAltitudeTimer
= 0;
230
231
GetGame
().GetCallqueue().Remove(
ContinuousCheck
);
232
RemoveHelicopterInvokers
();
233
}
234
}
ECompartmentType
ECompartmentType
Definition
ECompartmentType.c:8
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
SCR_ETutorialBreakType
SCR_ETutorialBreakType
Definition
SCR_ETutorialBreakType.c:2
SCR_ETutorialCourses
SCR_ETutorialCourses
Definition
SCR_ETutorialCourses.c:2
SCR_VehicleDamageManagerComponent
void SCR_VehicleDamageManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_VehicleDamageManagerComponent.c:2166
ChimeraCharacter
Definition
ChimeraCharacter.c:13
EntitySlotInfo
Adds ability to attach an object to a slot.
Definition
EntitySlotInfo.c:9
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
SCR_BaseTutorialCourseLogic
Definition
SCR_BaseTutorialCourseLogic.c:3
SCR_Tutorial_Heli_AUTOHOVER_ON
Definition
SCR_Tutorial_Heli_AUTOHOVER_ON.c:8
SCR_Tutorial_Heli_DANGER_ALTITUDE
Definition
SCR_Tutorial_Heli_DANGER_ALTITUDE.c:8
SCR_Tutorial_Heli_DANGER_ANGLE
Definition
SCR_Tutorial_Heli_DANGER_ANGLE.c:8
SCR_TutorialLogic_Heli
Definition
SCR_TutorialLogic_Heli.c:3
SCR_TutorialLogic_Heli::RotorCheck
void RotorCheck()
Definition
SCR_TutorialLogic_Heli.c:16
SCR_TutorialLogic_Heli::OnCourseEnd
override void OnCourseEnd()
Definition
SCR_TutorialLogic_Heli.c:219
SCR_TutorialLogic_Heli::m_HelicopterSimulation
VehicleHelicopterSimulation m_HelicopterSimulation
Definition
SCR_TutorialLogic_Heli.c:12
SCR_TutorialLogic_Heli::TIME_FOR_ALTITUDE_WARNING
const float TIME_FOR_ALTITUDE_WARNING
Definition
SCR_TutorialLogic_Heli.c:5
SCR_TutorialLogic_Heli::ContinuousCheck
void ContinuousCheck()
Definition
SCR_TutorialLogic_Heli.c:136
SCR_TutorialLogic_Heli::m_HelicopterController
SCR_HelicopterControllerComponent m_HelicopterController
Definition
SCR_TutorialLogic_Heli.c:9
SCR_TutorialLogic_Heli::OnHelicopterDamaged
void OnHelicopterDamaged(EDamageState state)
Definition
SCR_TutorialLogic_Heli.c:127
SCR_TutorialLogic_Heli::m_fAltitudeTimer
float m_fAltitudeTimer
Definition
SCR_TutorialLogic_Heli.c:11
SCR_TutorialLogic_Heli::OnCourseStart
override void OnCourseStart()
Definition
SCR_TutorialLogic_Heli.c:196
SCR_TutorialLogic_Heli::m_bForceAutohover
bool m_bForceAutohover
Definition
SCR_TutorialLogic_Heli.c:13
SCR_TutorialLogic_Heli::TIME_FOR_ANGLE_WARNING
const float TIME_FOR_ANGLE_WARNING
Definition
SCR_TutorialLogic_Heli.c:4
SCR_TutorialLogic_Heli::m_bCheckAngle
bool m_bCheckAngle
Definition
SCR_TutorialLogic_Heli.c:13
SCR_TutorialLogic_Heli::RemoveHelicopterInvokers
void RemoveHelicopterInvokers()
Definition
SCR_TutorialLogic_Heli.c:81
SCR_TutorialLogic_Heli::m_bCheckAltitude
bool m_bCheckAltitude
Definition
SCR_TutorialLogic_Heli.c:13
SCR_TutorialLogic_Heli::m_TutorialGamemode
SCR_TutorialGamemodeComponent m_TutorialGamemode
Definition
SCR_TutorialLogic_Heli.c:7
SCR_TutorialLogic_Heli::HelicopterDrownedCheck
void HelicopterDrownedCheck()
Definition
SCR_TutorialLogic_Heli.c:32
SCR_TutorialLogic_Heli::m_SignalsManagerComponent
SignalsManagerComponent m_SignalsManagerComponent
Definition
SCR_TutorialLogic_Heli.c:10
SCR_TutorialLogic_Heli::PrepareDamageInvokers
void PrepareDamageInvokers()
Definition
SCR_TutorialLogic_Heli.c:48
SCR_TutorialLogic_Heli::m_fAngleTimer
float m_fAngleTimer
Definition
SCR_TutorialLogic_Heli.c:11
SCR_TutorialLogic_Heli::m_CourseHelicopter
Vehicle m_CourseHelicopter
Definition
SCR_TutorialLogic_Heli.c:8
SignalsManagerComponent
Definition
SignalsManagerComponent.c:13
VehicleHelicopterSimulation
Definition
VehicleHelicopterSimulation.c:13
Vehicle
enum EPhysicsLayerPresets Vehicle
Definition
gameLib.c:24
EDamageState
EDamageState
Definition
EDamageState.c:13
RotorState
RotorState
Definition
RotorState.c:13
scripts
Game
GameMode
Tutorial
Stages
Helicopters
SCR_TutorialLogic_Heli.c
Generated by
1.17.0