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_AlternativeRequirementsDeployablePart.c
Go to the documentation of this file.
1
class
SCR_AlternativeRequirementsDeployablePart
:
SCR_RequiredDeployablePart
2
{
3
[
Attribute
(
desc
:
"Alternative Requirement"
)]
4
protected
ref
SCR_RequiredDeployablePart
m_AlternativeRequirement
;
5
6
[
Attribute
(defvalue:
"1"
,
desc
:
"Can game use X elements from this requirement and Y elements from alternative requirement to reach this required number of elements"
)]
7
protected
bool
m_bCanMix
;
8
9
protected
bool
m_bRequirementMet
;
10
11
//------------------------------------------------------------------------------------------------
12
override
bool
EvaluateFoundEntity
(
vector
origin,
float
distanceSqToFoundEntity, notnull
BaseContainer
foundPrefab, notnull
IEntity
foundEntity)
13
{
14
bool
isAnAlternative =
m_AlternativeRequirement
.EvaluateFoundEntity(origin, distanceSqToFoundEntity, foundPrefab, foundEntity);
15
if
(isAnAlternative)
16
{
17
if
(!
m_bCanMix
)
18
return
true
;
19
}
20
else
21
{
22
bool
result = super.EvaluateFoundEntity(origin, distanceSqToFoundEntity, foundPrefab, foundEntity);
23
if
(result &&
m_iNumberOfRequiredPrefabs
==
m_aFoundEntities
.Count())
24
m_bRequirementMet
=
true
;
25
26
return
result;
27
}
28
29
if
(!
m_aFoundEntities
||
m_aFoundEntities
.Count() <
m_iNumberOfRequiredPrefabs
)
30
{
31
AddFoundEntity
(foundEntity);
32
return
true
;
33
}
34
35
foreach
(
int
id
,
IEntity
foundElement :
m_aFoundEntities
)
36
{
37
if
(
vector
.DistanceSq(foundElement.GetOrigin(), origin) <= distanceSqToFoundEntity)
38
continue
;
39
40
ReplaceFoundEntity
(foundEntity,
id
);
41
return
true
;
42
}
43
44
return
false
;
45
}
46
47
//------------------------------------------------------------------------------------------------
48
override
bool
IsRequirementMet
(out
int
difference)
49
{
50
bool
result = super.IsRequirementMet(difference);
51
if
(
m_bCanMix
|| result)
52
return
result;
53
54
return
m_AlternativeRequirement
.IsRequirementMet(difference);
55
}
56
57
//------------------------------------------------------------------------------------------------
58
override
LocalizedString
GetMissingPartName
()
59
{
60
if
(
m_bCanMix
)
61
return
m_sPartName
;
62
63
if
(
m_AlternativeRequirement
.GetNumberOfFoundEntities() > 0 && super.GetNumberOfFoundEntities() == 0)
64
return
m_AlternativeRequirement
.GetMissingPartName();
65
66
return
m_sPartName
;
67
}
68
69
//------------------------------------------------------------------------------------------------
70
override
int
GetNumberOfFoundEntities
()
71
{
72
if
(
m_bCanMix
)
73
return
super.GetNumberOfFoundEntities();
74
75
int
difference;
76
if
(super.IsRequirementMet(difference))
77
return
m_aFoundEntities
.Count();
78
79
return
m_AlternativeRequirement
.GetNumberOfFoundEntities();
80
}
81
82
//------------------------------------------------------------------------------------------------
83
override
array<IEntity>
GetFoundEntities
()
84
{
85
if
(
m_bCanMix
)
86
return
super.GetFoundEntities();
87
88
array<IEntity> combinedList =
m_AlternativeRequirement
.GetFoundEntities();
89
if
(!combinedList)
90
return
super.GetFoundEntities();
91
92
if
(!
m_aFoundEntities
)
93
return
combinedList;
94
95
combinedList.InsertAll(
m_aFoundEntities
);
96
return
combinedList;
97
}
98
99
//------------------------------------------------------------------------------------------------
100
override
bool
DeleteFoundEntity
(
int
id
, notnull
IEntity
user)
101
{
102
if
(!
m_bCanMix
)
103
{
//if we cannot mix
104
//and we completed this requirement
105
if
(
m_bRequirementMet
)
106
return
super.DeleteFoundEntity(
id
, user);
107
108
//otherwise we operate on the alternative requirement
109
return
m_AlternativeRequirement
.DeleteFoundEntity(
id
, user);
110
}
111
112
//if we have not found anything then pass the delition request to the alternative
113
if
(!
m_aFoundEntities
||
m_aFoundEntities
.IsEmpty())
114
return
m_AlternativeRequirement
.DeleteFoundEntity(
id
, user);
115
116
int
numberOfFoundElements =
m_aFoundEntities
.Count();
117
if
(
id
>= numberOfFoundElements)
118
return
m_AlternativeRequirement
.DeleteFoundEntity(
id
- numberOfFoundElements, user);
119
120
return
super.DeleteFoundEntity(
id
, user);
121
}
122
123
//------------------------------------------------------------------------------------------------
124
override
SCR_RequiredDeployablePart
DeepClone
()
125
{
126
SCR_AlternativeRequirementsDeployablePart
copy =
SCR_AlternativeRequirementsDeployablePart
.Cast(super.DeepClone());
127
128
copy.
AlternativeRequirementOverride
(
m_AlternativeRequirement
.DeepClone());
129
return
copy;
130
}
131
132
//------------------------------------------------------------------------------------------------
133
void
AlternativeRequirementOverride
(
SCR_RequiredDeployablePart
newRequirement)
134
{
135
m_AlternativeRequirement
= newRequirement;
136
}
137
138
//------------------------------------------------------------------------------------------------
139
void
SCR_AlternativeRequirementsDeployablePart
()
140
{
141
if
(
m_bCanMix
&&
m_AlternativeRequirement
)
142
m_AlternativeRequirement
.SetNumberOfRequiredPrefabs(
m_iNumberOfRequiredPrefabs
);
143
}
144
}
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
BaseContainer
Definition
BaseContainer.c:13
IEntity
Definition
IEntity.c:13
LocalizedString
Definition
LocalizedString.c:22
SCR_AlternativeRequirementsDeployablePart::EvaluateFoundEntity
override bool EvaluateFoundEntity(vector origin, float distanceSqToFoundEntity, notnull BaseContainer foundPrefab, notnull IEntity foundEntity)
Definition
SCR_AlternativeRequirementsDeployablePart.c:12
SCR_AlternativeRequirementsDeployablePart::m_AlternativeRequirement
ref SCR_RequiredDeployablePart m_AlternativeRequirement
Definition
SCR_AlternativeRequirementsDeployablePart.c:4
SCR_AlternativeRequirementsDeployablePart::AlternativeRequirementOverride
void AlternativeRequirementOverride(SCR_RequiredDeployablePart newRequirement)
Definition
SCR_AlternativeRequirementsDeployablePart.c:133
SCR_AlternativeRequirementsDeployablePart::SCR_AlternativeRequirementsDeployablePart
void SCR_AlternativeRequirementsDeployablePart()
Definition
SCR_AlternativeRequirementsDeployablePart.c:139
SCR_AlternativeRequirementsDeployablePart::DeleteFoundEntity
override bool DeleteFoundEntity(int id, notnull IEntity user)
Definition
SCR_AlternativeRequirementsDeployablePart.c:100
SCR_AlternativeRequirementsDeployablePart::DeepClone
override SCR_RequiredDeployablePart DeepClone()
Definition
SCR_AlternativeRequirementsDeployablePart.c:124
SCR_AlternativeRequirementsDeployablePart::GetMissingPartName
override LocalizedString GetMissingPartName()
Definition
SCR_AlternativeRequirementsDeployablePart.c:58
SCR_AlternativeRequirementsDeployablePart::GetNumberOfFoundEntities
override int GetNumberOfFoundEntities()
Definition
SCR_AlternativeRequirementsDeployablePart.c:70
SCR_AlternativeRequirementsDeployablePart::m_bRequirementMet
bool m_bRequirementMet
Definition
SCR_AlternativeRequirementsDeployablePart.c:9
SCR_AlternativeRequirementsDeployablePart::GetFoundEntities
override array< IEntity > GetFoundEntities()
Definition
SCR_AlternativeRequirementsDeployablePart.c:83
SCR_AlternativeRequirementsDeployablePart::m_bCanMix
bool m_bCanMix
Definition
SCR_AlternativeRequirementsDeployablePart.c:7
SCR_AlternativeRequirementsDeployablePart::IsRequirementMet
override bool IsRequirementMet(out int difference)
Definition
SCR_AlternativeRequirementsDeployablePart.c:48
SCR_RequiredDeployablePart
Definition
SCR_RequiredDeployablePart.c:2
SCR_RequiredDeployablePart::m_aFoundEntities
ref array< IEntity > m_aFoundEntities
Definition
SCR_RequiredDeployablePart.c:18
SCR_RequiredDeployablePart::AddFoundEntity
void AddFoundEntity(notnull IEntity entity)
Definition
SCR_RequiredDeployablePart.c:156
SCR_RequiredDeployablePart::m_sPartName
LocalizedString m_sPartName
Definition
SCR_RequiredDeployablePart.c:10
SCR_RequiredDeployablePart::m_iNumberOfRequiredPrefabs
int m_iNumberOfRequiredPrefabs
Definition
SCR_RequiredDeployablePart.c:7
SCR_RequiredDeployablePart::ReplaceFoundEntity
void ReplaceFoundEntity(notnull IEntity entity, int id)
Definition
SCR_RequiredDeployablePart.c:168
vector
Definition
vector.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
Components
SCR_AlternativeRequirementsDeployablePart.c
Generated by
1.17.0