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_ScenarioFrameworkTaskDefend.c
Go to the documentation of this file.
1
class
SCR_TaskDefendClass
:
SCR_ScenarioFrameworkTaskClass
2
{
3
};
4
5
class
SCR_TaskDefend
:
SCR_ScenarioFrameworkTask
6
{
7
//------------------------------------------------------------------------------------------------
9
void
OnObjectDamage(
EDamageState
state)
10
{
11
if
(state !=
EDamageState
.DESTROYED || !
m_Asset
)
12
return
;
13
14
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
15
if
(objectDmgManager)
16
{
17
objectDmgManager.GetOnDamageStateChanged().Remove(OnObjectDamage);
18
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().Remove(CheckEngineDrowned);
19
20
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
21
if
(vehicleController)
22
vehicleController.GetOnEngineStop().Remove(CheckEngineDrowned);
23
}
24
25
m_LayerTask
.ProcessLayerTaskState(
SCR_ETaskState
.FAILED);
26
}
27
28
//------------------------------------------------------------------------------------------------
30
void
CheckEngineDrowned()
31
{
32
if
(!
m_Asset
)
33
return
;
34
35
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
36
if
(vehicleController && vehicleController.GetEngineDrowned())
37
{
38
vehicleController.GetOnEngineStop().Remove(CheckEngineDrowned);
39
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().Remove(CheckEngineDrowned);
40
41
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
42
if
(objectDmgManager)
43
objectDmgManager.GetOnDamageStateChanged().Remove(OnObjectDamage);
44
45
m_LayerTask
.ProcessLayerTaskState(
SCR_ETaskState
.FAILED);
46
}
47
}
48
49
//------------------------------------------------------------------------------------------------
50
void
OnGroupEmpty(AIGroup group)
51
{
52
SCR_AIGroup
aiGroup =
SCR_AIGroup
.Cast(group);
53
if
(!aiGroup)
54
return
;
55
56
aiGroup.
GetOnEmpty
().Remove(OnGroupEmpty);
57
m_LayerTask
.ProcessLayerTaskState(
SCR_ETaskState
.FAILED);
58
}
59
60
//------------------------------------------------------------------------------------------------
63
override
void
HookTaskAsset(
IEntity
object
)
64
{
65
if
(!
object
)
66
return
;
67
68
super.HookTaskAsset(
object
);
69
70
SCR_AIGroup
group =
SCR_AIGroup
.Cast(
m_Asset
);
71
if
(!group)
72
{
73
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
74
if
(objectDmgManager)
75
objectDmgManager.GetOnDamageStateChanged().Insert(OnObjectDamage);
76
77
if
(
Vehicle
.Cast(
m_Asset
))
78
{
79
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
80
if
(vehicleController)
81
vehicleController.GetOnEngineStop().Insert(CheckEngineDrowned);
82
83
//---- REFACTOR NOTE START: This code will need to be refactored as current implementation is not conforming to the standards ----
84
85
// Since there is no invoker and no reliable way how to tackle drowned vehicles, in order to make it reliable,
86
// We cannot solely rely on GetOnEngineStop because vehicle could have been pushed/moved into the water without started engine.
87
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().CallLater(CheckEngineDrowned, 5000,
true
);
88
89
//---- REFACTOR NOTE END ----
90
}
91
}
92
else
93
{
94
group.
GetOnEmpty
().Insert(OnGroupEmpty);
95
}
96
}
97
}
SCR_ETaskState
SCR_ETaskState
Definition
SCR_Task.c:3
IEntity
Definition
IEntity.c:13
SCR_AIGroup
Definition
SCR_AIGroup.c:75
SCR_AIGroup::GetOnEmpty
ScriptInvoker_AIGroupOnEmpty GetOnEmpty()
Definition
SCR_AIGroup.c:2228
SCR_ScenarioFrameworkSystem
Definition
SCR_ScenarioFrameworkSystem.c:2
SCR_ScenarioFrameworkSystem::GetCallQueuePausable
static ScriptCallQueue GetCallQueuePausable()
Definition
SCR_ScenarioFrameworkSystem.c:87
SCR_ScenarioFrameworkTaskClass
Definition
SCR_ScenarioFrameworkTask.c:2
SCR_ScenarioFrameworkTask
Definition
SCR_ScenarioFrameworkTask.c:6
SCR_ScenarioFrameworkTask::m_Asset
IEntity m_Asset
Definition
SCR_ScenarioFrameworkTask.c:7
SCR_ScenarioFrameworkTask::m_LayerTask
SCR_ScenarioFrameworkLayerTask m_LayerTask
Definition
SCR_ScenarioFrameworkTask.c:8
SCR_TaskDefendClass
Definition
SCR_ScenarioFrameworkTaskDefend.c:2
SCR_TaskDefend
Definition
SCR_ScenarioFrameworkTaskDefend.c:6
Vehicle
enum EPhysicsLayerPresets Vehicle
Definition
gameLib.c:24
EDamageState
EDamageState
Definition
EDamageState.c:13
scripts
Game
ScenarioFramework
Tasks
SCR_ScenarioFrameworkTaskDefend.c
Generated by
1.17.0