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_CustomTriggerConditionsFactionControl.c
Go to the documentation of this file.
1
[
BaseContainerProps
()]
2
class
SCR_CustomTriggerConditionsFactionControl
:
SCR_CustomTriggerConditions
3
{
4
[
Attribute
(
desc
:
"Factions triggering control over trigger radius"
)]
5
protected
ref array<FactionKey>
m_aControlFactionKeys
;
6
7
[
Attribute
(
desc
:
"Ignored factions, not counting towards control check"
)]
8
protected
ref array<FactionKey>
m_aIgnoredFactionKeys
;
9
10
[
Attribute
(uiwidget:
UIWidgets
.ComboBox, enumType:
SCR_EScenarioFrameworkComparisonOperator
)]
11
protected
SCR_EScenarioFrameworkComparisonOperator
m_eComparisonOperator
;
12
13
[
Attribute
(
"0.5"
,
UIWidgets
.Slider,
"Control faction ratio over rest of checked factions"
,
params
:
"0 1 0.1"
)]
14
protected
float
m_fControlRatio
;
15
16
[
Attribute
(
desc
:
"(optional) Custom Trigger getter"
)]
17
protected
ref
SCR_ScenarioFrameworkGet
m_TriggerGetter
;
18
19
protected
SCR_FactionAliasComponent
m_FactionAliasComponent
;
20
//------------------------------------------------------------------------------------------------
23
override
bool
Init
(
IEntity
entity)
24
{
25
if
(!
m_aControlFactionKeys
||
m_aControlFactionKeys
.IsEmpty())
26
{
27
PrintFormat
(
"SCR_CustomTriggerConditionsFactionControl: No control faction keys provided for condition %1."
,
this
, level:
LogLevel
.ERROR);
28
return
false
;
29
}
30
31
if
(!
m_FactionAliasComponent
)
32
{
33
FactionManager factionManager =
GetGame
().GetFactionManager();
34
if
(factionManager)
35
m_FactionAliasComponent
= SCR_FactionAliasComponent.Cast(
GetGame
().GetFactionManager().FindComponent(SCR_FactionAliasComponent));
36
}
37
38
if
(
m_TriggerGetter
)
39
{
40
SCR_ScenarioFrameworkParam<IEntity> entityWrapper = SCR_ScenarioFrameworkParam<IEntity>.Cast(
m_TriggerGetter
.Get());
41
if
(!entityWrapper)
42
{
43
PrintFormat
(
"ScenarioFramework Action: Issue with Getter detected for Condition %1."
,
this
, level:
LogLevel
.ERROR);
44
return
false
;
45
}
46
47
entity = entityWrapper.GetValue();
48
}
49
50
SCR_ScenarioFrameworkTriggerEntity
trigger =
SCR_ScenarioFrameworkTriggerEntity
.Cast(entity);
51
if
(!trigger)
52
{
53
PrintFormat
(
"SCR_CustomTriggerConditionsFactionControl: Provided entity is not SCR_ScenarioFrameworkTriggerEntity for condition %1."
,
this
, level:
LogLevel
.ERROR);
54
return
false
;
55
}
56
57
array <IEntity> entities = {};
58
trigger.GetEntitiesInside(entities);
59
int
controlFactionCount, opposingFactionCount;
60
FactionAffiliationComponent factionComp;
61
FactionKey
factionKey;
62
63
foreach
(
IEntity
ent : entities)
64
{
65
factionComp = FactionAffiliationComponent.Cast(ent.FindComponent(FactionAffiliationComponent));
66
if
(!factionComp)
67
continue
;
68
69
factionKey = factionComp.GetAffiliatedFactionKey();
70
//Check, if faction is ignored first
71
if
(
m_aIgnoredFactionKeys
&&
CheckFactionKey
(factionKey,
m_aIgnoredFactionKeys
))
72
continue
;
73
74
if
(
CheckFactionKey
(factionKey,
m_aControlFactionKeys
))
75
controlFactionCount++;
76
else
77
opposingFactionCount++;
78
}
79
80
float
ratio = controlFactionCount /
Math
.Max(controlFactionCount + opposingFactionCount, 1);
81
82
return
(
83
((
m_eComparisonOperator
==
SCR_EScenarioFrameworkComparisonOperator
.LESS_THAN) && (ratio <
m_fControlRatio
)) ||
84
((
m_eComparisonOperator
==
SCR_EScenarioFrameworkComparisonOperator
.LESS_OR_EQUAL) && (ratio <=
m_fControlRatio
)) ||
85
((
m_eComparisonOperator
==
SCR_EScenarioFrameworkComparisonOperator
.EQUAL) && (ratio ==
m_fControlRatio
)) ||
86
((
m_eComparisonOperator
==
SCR_EScenarioFrameworkComparisonOperator
.GREATER_OR_EQUAL) && (ratio >=
m_fControlRatio
)) ||
87
((
m_eComparisonOperator
==
SCR_EScenarioFrameworkComparisonOperator
.GREATER_THEN) && (ratio >
m_fControlRatio
)));
88
}
89
90
//------------------------------------------------------------------------------------------------
91
protected
bool
CheckFactionKey
(
FactionKey
factionKey, notnull array<FactionKey> arrayToCheck)
92
{
93
if
(
m_FactionAliasComponent
)
94
{
95
array<string> aliases =
m_FactionAliasComponent
.GetAllFactionKeyAliases(factionKey);
96
foreach
(
string
alias : aliases)
97
{
98
if
(arrayToCheck.Contains(alias))
99
return
true
;
100
}
101
}
102
103
return
arrayToCheck.Contains(factionKey);
104
}
105
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
SCR_EScenarioFrameworkComparisonOperator
SCR_EScenarioFrameworkComparisonOperator
Definition
SCR_EScenarioFrameworkComparisonOperator.c:2
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
FactionKey
Definition
FactionKey.c:3
IEntity
Definition
IEntity.c:13
Math
Definition
Math.c:13
SCR_CustomTriggerConditionsFactionControl
Definition
SCR_CustomTriggerConditionsFactionControl.c:3
SCR_CustomTriggerConditionsFactionControl::m_FactionAliasComponent
SCR_FactionAliasComponent m_FactionAliasComponent
Definition
SCR_CustomTriggerConditionsFactionControl.c:19
SCR_CustomTriggerConditionsFactionControl::CheckFactionKey
bool CheckFactionKey(FactionKey factionKey, notnull array< FactionKey > arrayToCheck)
Definition
SCR_CustomTriggerConditionsFactionControl.c:91
SCR_CustomTriggerConditionsFactionControl::m_aIgnoredFactionKeys
ref array< FactionKey > m_aIgnoredFactionKeys
Definition
SCR_CustomTriggerConditionsFactionControl.c:8
SCR_CustomTriggerConditionsFactionControl::Init
override bool Init(IEntity entity)
Definition
SCR_CustomTriggerConditionsFactionControl.c:23
SCR_CustomTriggerConditionsFactionControl::m_fControlRatio
float m_fControlRatio
Definition
SCR_CustomTriggerConditionsFactionControl.c:14
SCR_CustomTriggerConditionsFactionControl::m_TriggerGetter
ref SCR_ScenarioFrameworkGet m_TriggerGetter
Definition
SCR_CustomTriggerConditionsFactionControl.c:17
SCR_CustomTriggerConditionsFactionControl::m_aControlFactionKeys
ref array< FactionKey > m_aControlFactionKeys
Definition
SCR_CustomTriggerConditionsFactionControl.c:5
SCR_CustomTriggerConditionsFactionControl::m_eComparisonOperator
SCR_EScenarioFrameworkComparisonOperator m_eComparisonOperator
Definition
SCR_CustomTriggerConditionsFactionControl.c:11
SCR_CustomTriggerConditions
Definition
SCR_CustomTriggerConditions.c:4
SCR_ScenarioFrameworkGet
Definition
SCR_ScenarioFrameworkGet.c:3
SCR_ScenarioFrameworkTriggerEntity
Definition
SCR_ScenarioFrameworkTriggerEntity.c:10
UIWidgets
Definition
attributes.c:40
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
PrintFormat
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
ScenarioFramework
Entities
Triggers
TriggerConditions
SCR_CustomTriggerConditionsFactionControl.c
Generated by
1.17.0