Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_SecondaryExplosions.c
Go to the documentation of this file.
1//---- REFACTOR NOTE START: This code will need to be refactored as current implementation is not conforming to the standards ----
2// TODO: Separate file
13
15enum SCR_ESecondaryExplosionScale
16{
21 MASSIVE
22}
23//---- REFACTOR NOTE END ----
24
25[BaseContainerProps(configRoot: true)]
26class SCR_SecondaryExplosions
29 protected ref array<ref SCR_SecondaryExplosionType> m_aSecondaryExplosionTypes;
31 //------------------------------------------------------------------------------------------------
32 SCR_SecondaryExplosion GetSecondaryExplosionForScale(SCR_ESecondaryExplosionScale scale, SCR_ESecondaryExplosionType explosionType, EResourceType resourceType = EResourceType.INVALID)
33 {
34 foreach (SCR_SecondaryExplosionType explosions : m_aSecondaryExplosionTypes)
35 {
36 if (explosions.GetExplosionType() != explosionType)
37 continue;
38
39 if (explosionType == SCR_ESecondaryExplosionType.RESOURCE && explosions.GetResourceType() != resourceType)
40 continue;
41
42 return explosions.GetSecondaryExplosionForScale(scale);
43 }
44
45 return null;
46 }
47
48 //------------------------------------------------------------------------------------------------
49 SCR_ESecondaryExplosionScale GetSecondaryExplosionScale(float value, SCR_ESecondaryExplosionType explosionType, EResourceType resourceType = EResourceType.INVALID)
50 {
51 foreach (SCR_SecondaryExplosionType explosions : m_aSecondaryExplosionTypes)
52 {
53 if (explosionType == SCR_ESecondaryExplosionType.RESOURCE && explosions.GetResourceType() != resourceType)
54 continue;
55
56 if (explosions.GetExplosionType() != explosionType)
57 continue;
58
59 return explosions.GetSecondaryExplosionScale(value);
60 }
61
62 return SCR_ESecondaryExplosionScale.NONE;
63 }
64
65 //------------------------------------------------------------------------------------------------
66 ResourceName GetExplosionPrefab(float value, SCR_ESecondaryExplosionType explosionType, EResourceType resourceType = EResourceType.INVALID)
67 {
68 foreach (SCR_SecondaryExplosionType explosions : m_aSecondaryExplosionTypes)
69 {
70 if (explosionType == SCR_ESecondaryExplosionType.RESOURCE && explosions.GetResourceType() != resourceType)
71 continue;
72
73 if (explosions.GetExplosionType() != explosionType)
74 continue;
75
76 return explosions.GetExplosionPrefab(value);
77 }
78 return ResourceName.Empty;
79 }
80
81 //------------------------------------------------------------------------------------------------
82 ResourceName GetFireParticles(float value, SCR_ESecondaryExplosionType explosionType, EResourceType resourceType = EResourceType.INVALID)
83 {
84 foreach (SCR_SecondaryExplosionType explosions : m_aSecondaryExplosionTypes)
85 {
86 if (explosionType == SCR_ESecondaryExplosionType.RESOURCE && explosions.GetResourceType() != resourceType)
87 continue;
88
89 if (explosions.GetExplosionType() != explosionType)
90 continue;
91
92 return explosions.GetFireParticles(value);
93 }
94 return ResourceName.Empty;
95 }
96}
97
98[BaseContainerProps(), SCR_SecondaryExplosionTypeContainerTitle()]
100{
101 [Attribute(defvalue: SCR_Enum.GetDefault(SCR_ESecondaryExplosionType.DEFAULT), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ESecondaryExplosionType))]
103
104 [Attribute(defvalue: SCR_Enum.GetDefault(EResourceType.INVALID), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(EResourceType))]
106
107 [Attribute()]
108 protected ref array<ref SCR_SecondaryExplosion> m_aSecondaryExplosions;
109
110 //------------------------------------------------------------------------------------------------
115
116 //------------------------------------------------------------------------------------------------
121
122 //------------------------------------------------------------------------------------------------
124 {
126 {
127 if ( scale == explosion.m_eSecondaryExplosionScale)
128 return explosion;
129 }
130
131 return null;
132 }
133
134 //------------------------------------------------------------------------------------------------
135 SCR_ESecondaryExplosionScale GetSecondaryExplosionScale(float value)
136 {
137 SCR_ESecondaryExplosionScale scale;
138 float topValue;
139
141 {
142 if (value < explosion.m_fMinValue)
143 continue;
144
145 if (topValue > explosion.m_fMinValue)
146 continue;
147
148 topValue = explosion.m_fMinValue;
149 scale = explosion.m_eSecondaryExplosionScale;
150 }
151
152 return scale;
153 }
154
155 //------------------------------------------------------------------------------------------------
157 {
158 ResourceName prefab;
159 float topValue;
160
162 {
163 if (value < explosion.m_fMinValue)
164 continue;
165
166 if (topValue > explosion.m_fMinValue)
167 continue;
168
169 topValue = explosion.m_fMinValue;
170 prefab = explosion.m_sSecondaryExplosionPrefab;
171 }
172
173 return prefab;
174 }
175
176 //------------------------------------------------------------------------------------------------
178 {
179 ResourceName particles;
180 float topValue;
181
183 {
184 if (value < explosion.m_fMinValue)
185 continue;
186
187 if (topValue > explosion.m_fMinValue)
188 continue;
189
190 topValue = explosion.m_fMinValue;
191 particles = explosion.m_sSecondaryFireParticles;
192 }
193
194 return particles;
195 }
196}
197
198class SCR_SecondaryExplosionTypeContainerTitle : BaseContainerCustomTitle
199{
200 //------------------------------------------------------------------------------------------------
201 override bool _WB_GetCustomTitle(BaseContainer source, out string title)
202 {
204 if (!source.Get("m_eSecondaryExplosionType", type))
205 return false;
207 title = "Type: " + SCR_Enum.GetEnumName(SCR_ESecondaryExplosionType, type);
208 return true;
210}
211
212[BaseContainerProps(), SCR_SecondaryExplosionContainerTitle()]
214{
215 [Attribute()]
216 float m_fMinValue;
217
218 [Attribute(defvalue: SCR_Enum.GetDefault(SCR_ESecondaryExplosionScale.NONE), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(SCR_ESecondaryExplosionScale))]
219 SCR_ESecondaryExplosionScale m_eSecondaryExplosionScale;
220
221 [Attribute(desc: "Explosion prefab", UIWidgets.ResourcePickerThumbnail, params: "et")]
223
224 [Attribute(desc: "Fire particles", UIWidgets.ResourcePickerThumbnail, params: "ptc")]
226}
227
228class SCR_SecondaryExplosionContainerTitle : BaseContainerCustomTitle
229{
230 //------------------------------------------------------------------------------------------------
231 override bool _WB_GetCustomTitle(BaseContainer source, out string title)
232 {
233 float minValue;
234 if (source.Get("m_fMinValue", minValue))
235 title = minValue.ToString(-1, 3);
237 SCR_ESecondaryExplosionScale state;
238 if (source.Get("m_eSecondaryExplosionScale", state))
239 title += " - fire state: " + SCR_Enum.GetEnumName(SCR_ESecondaryExplosionScale, state);
240
241 return true;
243}
vector scale
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
enum SCR_EAITalkRequestState MEDIUM
SCR_SecondaryExplosion GetSecondaryExplosionForScale(SCR_ESecondaryExplosionScale scale, SCR_ESecondaryExplosionType explosionType, EResourceType resourceType=EResourceType.SUPPLIES)
Determine secondary explosion prefab based on explosion scale, type and resource type if defined.
EDamageType type
override float GetSecondaryExplosionScale()
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
SCR_ESecondaryExplosionType
Exploding material type.
ResourceName GetExplosionPrefab(float value)
ResourceName m_sSecondaryFireParticles
SCR_ESecondaryExplosionScale m_eSecondaryExplosionScale
ResourceName GetFireParticles(float value)
enum SCR_ESecondaryExplosionType LARGE
enum SCR_ESecondaryExplosionType SMALL
ResourceName m_sSecondaryExplosionPrefab
SCR_ESecondaryExplosionType GetExplosionType()
SCR_SecondaryExplosion GetSecondaryExplosionForScale(SCR_ESecondaryExplosionScale scale)
ResourceName GetFireParticles(float value)
SCR_ESecondaryExplosionScale GetSecondaryExplosionScale(float value)
ResourceName GetExplosionPrefab(float value)
ref array< ref SCR_SecondaryExplosion > m_aSecondaryExplosions
SCR_ESecondaryExplosionType m_eSecondaryExplosionType
@ NONE
When Shape is created and not initialized yet.
Definition ShapeType.c:15
@ DEFAULT
Use currently set main RT format (based on game options).
SCR_FieldOfViewSettings Attribute
class SCR_BaseManualCameraComponent _WB_GetCustomTitle(BaseContainer source, out string title)