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_HitZoneStateSignal.c
Go to the documentation of this file.
1
class
SCR_HitZoneStateSignal
2
{
3
ref array<ref SCR_HitZone> m_aScriptedHitZones = {};
4
int
m_iSignalIdx;
5
6
//------------------------------------------------------------------------------------------------
7
bool
RegisterSignal(SCR_DamageManagerComponent hitZoneContainerComponent,
SCR_HitZoneStateSignalData
hitZoneStateSignalData,
SignalsManagerComponent
signalsManagerComponent)
8
{
9
array<string> hitZoneNames = hitZoneStateSignalData.m_aHitZoneNames;
10
if
(!hitZoneNames || hitZoneNames.Count() == 0)
11
{
12
Print
(
"AUDIO: SCR_HitZoneStateSignal: Missing HitZoneNames"
,
LogLevel
.WARNING);
13
return
false
;
14
}
15
16
foreach
(
string
hitZoneName : hitZoneNames)
17
{
18
HitZone
hitZone = hitZoneContainerComponent.GetHitZoneByName(hitZoneName);
19
SCR_HitZone
hitzone =
SCR_HitZone
.Cast(hitZone);
20
if
(!hitzone)
21
continue
;
22
23
hitzone.
GetOnDamageStateChanged
().Insert(
OnStateChanged
);
24
m_aScriptedHitZones.Insert(hitzone);
25
}
26
27
// No hitzones are spawned in the edit mode so only check the playmode
28
if
(!
SCR_Global
.
IsEditMode
() && m_aScriptedHitZones.Count() == 0)
29
{
30
Print
(
"AUDIO: SCR_HitZoneStateSignal: No HitZone found"
,
LogLevel
.WARNING);
31
return
false
;
32
}
33
34
string
signalName = hitZoneStateSignalData.m_sSignalName;
35
if
(signalName.IsEmpty())
36
{
37
Print
(
"AUDIO: SCR_HitZoneStateSignal: Missing signal name"
,
LogLevel
.WARNING);
38
return
false
;
39
}
40
41
m_iSignalIdx = signalsManagerComponent.AddOrFindSignal(signalName);
42
43
return
true
;
44
}
45
46
//------------------------------------------------------------------------------------------------
47
void
UnregisterSignal()
48
{
49
foreach
(
SCR_HitZone
hitzone : m_aScriptedHitZones)
50
{
51
hitzone.GetOnDamageStateChanged().Remove(
OnStateChanged
);
52
}
53
}
54
55
//------------------------------------------------------------------------------------------------
56
protected
void
OnStateChanged
()
57
{
58
int
max;
59
60
foreach
(
SCR_HitZone
hitzone : m_aScriptedHitZones)
61
{
62
int
state =
DamageStateToSignalValue
(hitzone.GetDamageState());
63
if
(state > max)
64
max = state;
65
}
66
67
IEntity
owner = m_aScriptedHitZones[0].GetOwner();
68
if
(!owner)
69
return
;
70
71
SignalsManagerComponent
signalsManager =
SignalsManagerComponent
.Cast(owner.
GetRootParent
().
FindComponent
(
SignalsManagerComponent
));
72
if
(!signalsManager)
73
return
;
74
75
signalsManager.SetSignalValue(m_iSignalIdx, max);
76
}
77
78
//------------------------------------------------------------------------------------------------
79
static
int
DamageStateToSignalValue
(
EDamageState
damageState)
80
{
81
switch
(damageState)
82
{
83
case
EDamageState
.UNDAMAGED: {
return
0;};
84
case
EDamageState
.INTERMEDIARY: {
return
1;};
85
case
EDamageState
.STATE1: {
return
2;};
86
case
EDamageState
.STATE2: {
return
3;};
87
case
EDamageState
.STATE3: {
return
4;};
88
case
EDamageState
.DESTROYED: {
return
5;};
89
}
90
91
return
0;
92
}
93
}
HitZone
Definition
HitZone.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetRootParent
proto external IEntity GetRootParent()
SCR_Global
Definition
Functions.c:7
SCR_Global::IsEditMode
static bool IsEditMode()
Definition
Functions.c:1566
SCR_HitZone
Definition
SCR_HitZone.c:2
SCR_HitZone::GetOnDamageStateChanged
ScriptInvoker GetOnDamageStateChanged(bool createNew=true)
Definition
SCR_HitZone.c:32
SCR_HitZoneStateSignalData
Definition
SCR_HitZoneStateSignalData.c:3
SCR_HitZoneStateSignal
Definition
SCR_HitZoneStateSignal.c:2
SCR_HitZoneStateSignal::DamageStateToSignalValue
static int DamageStateToSignalValue(EDamageState damageState)
Definition
SCR_HitZoneStateSignal.c:79
SCR_HitZoneStateSignal::OnStateChanged
void OnStateChanged()
Definition
SCR_HitZoneStateSignal.c:56
SignalsManagerComponent
Definition
SignalsManagerComponent.c:13
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
EDamageState
EDamageState
Definition
EDamageState.c:13
scripts
Game
HitZone
SCR_HitZoneStateSignal.c
Generated by
1.17.0