Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_TutorialLogic_Driving.c
Go to the documentation of this file.
3{
5
6 //------------------------------------------------------------------------------------------------
7 protected void OnCompartmentLeft(IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
8 {
9 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
10 if (tutorial)
11 tutorial.RequestBreakCourse(SCR_ETutorialBreakType.FORCED);
12 }
13
14 //------------------------------------------------------------------------------------------------
16 {
17 if (hitzone.GetDamageState() != EDamageState.DESTROYED)
18 return;
19
20 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
21 if (tutorial)
22 tutorial.RequestBreakCourse(SCR_ETutorialBreakType.FORCED);
23 }
24
25 //------------------------------------------------------------------------------------------------
26 protected void OnVehicleDamaged(EDamageState state)
27 {
28 if (state != EDamageState.DESTROYED)
29 return;
30
31 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
32 if (tutorial)
33 tutorial.RequestBreakCourse(SCR_ETutorialBreakType.FORCED);
34 }
35
36 //------------------------------------------------------------------------------------------------
37 protected void OnEngineStoppedJeep()
38 {
39 if (!m_CourseVehicle)
40 return;
41
42 VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(m_CourseVehicle.FindComponent(VehicleControllerComponent));
43 if (!vehicleController || !vehicleController.GetEngineDrowned())
44 return;
45
46 vehicleController.GetOnEngineStop().Remove(OnEngineStoppedJeep);
47
48 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
49 if (tutorial)
50 tutorial.RequestBreakCourse(SCR_ETutorialBreakType.FORCED);
51 }
52
53 //------------------------------------------------------------------------------------------------
54 override void OnCourseStart()
55 {
56 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
57 if (!tutorial)
58 return;
59
60 m_CourseVehicle = Vehicle.Cast(GetGame().GetWorld().FindEntityByName("SmallJeep"));
61
63 if (damageManager)
64 {
65 damageManager.GetOnDamageStateChanged().Insert(OnVehicleDamaged);
66
67 SCR_HitZone engine = SCR_HitZone.Cast(damageManager.GetHitZoneByName("Engine_01"));
68
69 if (engine)
71
72 SCR_HitZone gearbox = SCR_HitZone.Cast(damageManager.GetHitZoneByName("Gearbox_01"));
73
74 if (gearbox)
76 }
77
78 VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(m_CourseVehicle.FindComponent(VehicleControllerComponent));
79 if (vehicleController)
80 vehicleController.GetOnEngineStop().Insert(OnEngineStoppedJeep);
81
82 IEntity instructor = GetGame().GetWorld().FindEntityByName("DRIVING_Copilot");
83 if (!instructor)
84 return;
85
87 if (compartmentAccess)
88 compartmentAccess.GetOnCompartmentLeft().Insert(OnCompartmentLeft);
89 };
90
91 //------------------------------------------------------------------------------------------------
93 {
94 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
95 if (!tutorial)
96 return;
97
98 IEntity oldEnt = GetGame().GetWorld().FindEntityByName("DRIVING_Copilot");
99 if (oldEnt)
100 {
101 oldEnt.SetName(string.Empty);
102 tutorial.InsertIntoGarbage(oldEnt);
103
104 SCR_TutorialInstructorComponent instructorComp = SCR_TutorialInstructorComponent.Cast(oldEnt.FindComponent(SCR_TutorialInstructorComponent));
105 if (instructorComp)
106 instructorComp.EnableCourse(false);
107 }
108
109 oldEnt = GetGame().GetWorld().FindEntityByName("SmallJeep");
110 if (oldEnt)
111 {
112 oldEnt.SetName(string.Empty);
113 tutorial.InsertIntoGarbage(oldEnt);
114 tutorial.ChangeVehicleLockState(oldEnt, true);
115 }
116 }
117
118 //------------------------------------------------------------------------------------------------
119 override void OnCourseEnd()
120 {
121 IEntity instructor = GetGame().GetWorld().FindEntityByName("DRIVING_Copilot");
122 if (instructor)
123 {
125 if (compartmentAccess)
126 compartmentAccess.GetOnCompartmentLeft().Remove(OnCompartmentLeft);
127 }
128
129 if (!m_CourseVehicle)
130 return;
131
133 if (damageManager)
134 {
135 damageManager.GetOnDamageStateChanged().Remove(OnVehicleDamaged);
136
137 SCR_HitZone engine = SCR_HitZone.Cast(damageManager.GetHitZoneByName("Engine_01"));
138 if (engine)
140
141 SCR_HitZone gearbox = SCR_HitZone.Cast(damageManager.GetHitZoneByName("Gearbox_01"));
142 if (gearbox)
144 }
145
146 VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(m_CourseVehicle.FindComponent(VehicleControllerComponent));
147 if (vehicleController)
148 vehicleController.GetOnEngineStop().Remove(OnEngineStoppedJeep);
149
150 SCR_TutorialGamemodeComponent tutorial = SCR_TutorialGamemodeComponent.GetInstance();
151 if (!tutorial)
152 return;
153
154 if (tutorial.CanBreakCourse())
156 };
157}
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
SCR_ETutorialBreakType
void SCR_VehicleDamageManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
proto external Managed FindComponent(typename typeName)
proto external BaseWorld GetWorld()
proto external void SetName(string name)
ScriptInvoker GetOnCompartmentLeft(bool createNew=true)
ScriptInvoker GetOnDamageStateChanged(bool createNew=true)
Definition SCR_HitZone.c:32
void OnVehicleDamaged(EDamageState state)
void OnHitZoneDamageStateChanged(SCR_HitZone hitzone)
void OnCompartmentLeft(IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
enum EPhysicsLayerPresets Vehicle
Definition gameLib.c:24
EDamageState