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_CampaignDefendTaskSupportEntity.c
Go to the documentation of this file.
1
//------------------------------------------------------------------------------------------------
2
//[EntityEditorProps(category: "GameScripted/Tasks", description: "Campaign defend task support entity.", color: "0 0 255 255")]
3
//class SCR_CampaignDefendTaskSupportEntityClass: SCR_RequestedTaskSupportEntityClass
4
//{
5
//};
6
7
//------------------------------------------------------------------------------------------------
8
//void OnCharacterDeath(SCR_ChimeraCharacter character);
9
//typedef func OnCharacterDeath;
10
//typedef ScriptInvokerBase<OnCharacterDeath> OnCharacterDeathInvoker;
11
12
//------------------------------------------------------------------------------------------------
13
//class SCR_CampaignDefendTaskSupportEntity : SCR_RequestedTaskSupportEntity
14
//{
15
// [Attribute("300", desc: "From how far can an ally request reinforcements. (in m)")]
16
// protected float m_fMinAllyDistance;
17
//
18
// [Attribute("400", desc: "How far an ally can be to receive rewards for this task. (in m)")]
19
// protected float m_fMaxAllyDistance;
20
//
21
// [Attribute("300", desc: "How far an enemy has to be, for an ally to be able to request reinforcements. (in m)")]
22
// protected float m_fMinEnemyDistance;
23
//
24
// [Attribute("400", desc: "How far an enemy has to be, to be outside of the radius of an existing defend task. (in m)")]
25
// protected float m_fMaxEnemyDistance;
26
//
27
// // This only holds living characters, no need to check whether they are alive!!
28
// protected ref map<SCR_CampaignFaction, ref array<SCR_ChimeraCharacter>> m_mFactionSortedCharacters = new map<SCR_CampaignFaction, ref array<SCR_ChimeraCharacter>>();
29
//
30
// protected ref OnCharacterDeathInvoker m_OnCharacterDeath;
31
//
32
// protected SCR_CampaignMilitaryBaseComponent m_ClosestBase;
33
//
34
// //------------------------------------------------------------------------------------------------
35
// OnCharacterDeathInvoker GetOnCharacterDeath()
36
// {
37
// if (!m_OnCharacterDeath)
38
// m_OnCharacterDeath = new OnCharacterDeathInvoker();
39
//
40
// return m_OnCharacterDeath;
41
// }
42
//
43
// //------------------------------------------------------------------------------------------------
44
// override bool CanRequest()
45
// {
46
// SCR_PlayerController playerController = SCR_PlayerController.Cast(GetGame().GetPlayerController());
47
// if (!playerController)
48
// return false;
49
//
50
// if (!SCR_CampaignDefendTask.CheckDefendRequestConditions(playerController, m_ClosestBase))
51
// return false;
52
//
53
// return true;
54
// }
55
//
56
// //------------------------------------------------------------------------------------------------
57
// override void Request()
58
// {
59
// PlayerController playerController = GetGame().GetPlayerController();
60
// if (!playerController)
61
// return;
62
//
63
// SCR_UIRequestEvacTaskComponent.RequestReinforcements(playerController);
64
// }
65
//
66
// //------------------------------------------------------------------------------------------------
67
// override void SetRequestButtonText(notnull TextWidget textWidget)
68
// {
69
// if (!m_ClosestBase)
70
// return;
71
//
72
// textWidget.SetTextFormat(m_sRequestButtonText, m_ClosestBase.GetBaseName());
73
// }
74
//
75
// //------------------------------------------------------------------------------------------------
76
// [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
77
// void RPC_SetTargetBase(int taskID, int baseID)
78
// {
79
// if (!GetTaskManager())
80
// return;
81
//
82
// SCR_CampaignBaseTask task = SCR_CampaignBaseTask.Cast(GetTaskManager().GetTask(taskID));
83
// if (!task)
84
// return;
85
//
86
// SCR_CampaignMilitaryBaseComponent base = SCR_GameModeCampaign.GetInstance().GetBaseManager().FindBaseByCallsign(baseID);
87
// if (!base)
88
// return;
89
//
90
// task.SetTargetBase(base);
91
// }
92
//
93
// //------------------------------------------------------------------------------------------------
94
// void SetTargetBase(notnull SCR_CampaignBaseTask task, notnull SCR_CampaignMilitaryBaseComponent base)
95
// {
96
// if (!GetTaskManager())
97
// return;
98
//
99
// int taskID, baseID;
100
//
101
// taskID = task.GetTaskID();
102
// baseID = base.GetCallsign();
103
//
104
// Rpc(RPC_SetTargetBase, taskID, baseID);
105
// RPC_SetTargetBase(taskID, baseID);
106
// }
107
//
108
// //------------------------------------------------------------------------------------------------
109
// void CreateCampaignDefendTask(SCR_CampaignMilitaryBaseComponent targetBase, Faction targetFaction)
110
// {
111
// if (!GetTaskManager())
112
// return;
113
//
114
// SCR_CampaignDefendTask defendTask = SCR_CampaignDefendTask.Cast(CreateTask());
115
// if (!defendTask)
116
// return;
117
//
118
// SetTargetBase(defendTask, targetBase); // Replicated internally
119
// SetTargetFaction(defendTask, targetFaction); // Replicated internally
120
// }
121
//
122
// //------------------------------------------------------------------------------------------------
123
// void OnControllableCreated(IEntity controllable)
124
// {
125
// SCR_ChimeraCharacter character = SCR_ChimeraCharacter.Cast(controllable);
126
// if (!character)
127
// return;
128
//
129
// SCR_CampaignFaction faction = SCR_CampaignFaction.Cast(character.GetFaction());
130
// if (!faction)
131
// return;
132
//
133
// array<SCR_ChimeraCharacter> factionCharacters = GetCharactersByFaction(faction);
134
// if (!factionCharacters)
135
// {
136
// factionCharacters = new array<SCR_ChimeraCharacter>();
137
// m_mFactionSortedCharacters.Insert(faction, factionCharacters);
138
// }
139
//
140
// factionCharacters.Insert(character);
141
//
142
// SCR_CharacterControllerComponent characterControllerComponent = SCR_CharacterControllerComponent.Cast(character.FindComponent(SCR_CharacterControllerComponent));
143
// if (!characterControllerComponent)
144
// return;
145
//
146
// characterControllerComponent.GetOnPlayerDeathWithParam().Insert(OnCharacterDeath);
147
// }
148
//
149
// //------------------------------------------------------------------------------------------------
150
// void OnCharacterDeath(SCR_CharacterControllerComponent characterControllerComponent, IEntity killerEntity, Instigator killer)
151
// {
152
// SCR_ChimeraCharacter character = characterControllerComponent.GetCharacter();
153
// if (!character)
154
// return;
155
//
156
// SCR_CampaignFaction faction = SCR_CampaignFaction.Cast(character.GetFaction());
157
// if (!faction)
158
// return;
159
//
160
// array<SCR_ChimeraCharacter> factionCharacters = m_mFactionSortedCharacters.Get(faction);
161
// if (!factionCharacters)
162
// return;
163
//
164
// factionCharacters.RemoveItem(character);
165
//
166
// if (m_OnCharacterDeath)
167
// m_OnCharacterDeath.Invoke(character);
168
// }
169
//
170
// //------------------------------------------------------------------------------------------------
171
// //Only for cases when character is removed before dying
172
// void OnControllableDeleted(IEntity controllable)
173
// {
174
// SCR_ChimeraCharacter character = SCR_ChimeraCharacter.Cast(controllable);
175
// if (!character)
176
// return;
177
//
178
// SCR_CampaignFaction faction = SCR_CampaignFaction.Cast(character.GetFaction());
179
// if (!faction)
180
// return;
181
//
182
// array<SCR_ChimeraCharacter> factionCharacters = m_mFactionSortedCharacters.Get(faction);
183
// if (!factionCharacters)
184
// return;
185
//
186
// if (factionCharacters.Find(character) > -1)
187
// factionCharacters.RemoveItem(character);
188
// }
189
//
190
// //------------------------------------------------------------------------------------------------
191
// array<SCR_ChimeraCharacter> GetCharactersByFaction(SCR_CampaignFaction faction)
192
// {
193
// array<SCR_ChimeraCharacter> characters = m_mFactionSortedCharacters.Get(faction);
194
//
195
// if (!characters)
196
// return characters;
197
//
198
// // TODO matousvoj1: Proper removal of these items once OnDelete is called on entities
199
// // Added to avoid nulls in arrays
200
// for (int i = characters.Count() - 1; i >= 0; i--)
201
// {
202
// if (!characters[i])
203
// characters.Remove(i);
204
// }
205
//
206
// return characters;
207
// }
208
//
209
// //------------------------------------------------------------------------------------------------
210
// float GetMinAllyDistance()
211
// {
212
// return m_fMinAllyDistance;
213
// }
214
//
215
// //------------------------------------------------------------------------------------------------
216
// float GetMaxAllyDistance()
217
// {
218
// return m_fMaxAllyDistance;
219
// }
220
//
221
// //------------------------------------------------------------------------------------------------
222
// float GetMinEnemyDistance()
223
// {
224
// return m_fMinEnemyDistance;
225
// }
226
//
227
// //------------------------------------------------------------------------------------------------
228
// float GetMaxEnemyDistance()
229
// {
230
// return m_fMaxEnemyDistance;
231
// }
232
//
233
// //------------------------------------------------------------------------------------------------
234
// [Obsolete("Use new SCR_TaskManagerUIComponent instead")]
235
// override void OnTaskListOpen(notnull SCR_TaskManagerUIComponent uiTaskManagerComponent)
236
// { /*
237
// if (!CanRequest())
238
// return;
239
//
240
// if (!m_ClosestBase)
241
// return;
242
//
243
// array<Widget> widgets = uiTaskManagerComponent.GetWidgetsArray();
244
// if (!widgets)
245
// return;
246
//
247
// Widget button = CreateButtonAndSetPadding(uiTaskManagerComponent.GetParentWidget(), widgets);
248
// if (!button)
249
// return;
250
//
251
// TextWidget textWidget = TextWidget.Cast(button.FindAnyWidget("Text"));
252
// if (textWidget)
253
// SetRequestButtonText(textWidget);
254
// */
255
// }
256
//
257
// //------------------------------------------------------------------------------------------------
258
// override void Initialize()
259
// {
260
// SCR_BaseGameMode gameMode = SCR_BaseGameMode.Cast(GetGame().GetGameMode());
261
// if (!gameMode)
262
// return;
263
//
264
// gameMode.GetOnControllableSpawned().Insert(OnControllableCreated);
265
// gameMode.GetOnControllableDeleted().Insert(OnControllableDeleted);
266
// }
267
//
268
// //------------------------------------------------------------------------------------------------
269
// void ~SCR_CampaignDefendTaskSupportEntity()
270
// {
271
// SCR_BaseGameMode gameMode = SCR_BaseGameMode.Cast(GetGame().GetGameMode());
272
// if (gameMode)
273
// {
274
// gameMode.GetOnControllableSpawned().Remove(OnControllableCreated);
275
// gameMode.GetOnControllableDeleted().Remove(OnControllableDeleted);
276
// }
277
//
278
// SCR_CharacterControllerComponent characterControllerComponent;
279
// array<SCR_ChimeraCharacter> characters;
280
// for (int i = m_mFactionSortedCharacters.Count() - 1; i >= 0; i--)
281
// {
282
// characters = m_mFactionSortedCharacters.GetElement(i);
283
// if (!characters)
284
// continue;
285
//
286
// for (int j = characters.Count() - 1; j >= 0; j--)
287
// {
288
// if (!characters[j])
289
// continue;
290
//
291
// characterControllerComponent = SCR_CharacterControllerComponent.Cast(characters[j].FindComponent(SCR_CharacterControllerComponent));
292
// if (!characterControllerComponent)
293
// return;
294
//
295
// characterControllerComponent.GetOnPlayerDeathWithParam().Remove(OnCharacterDeath);
296
// }
297
// }
298
// }
299
//};
scripts
Game
Tasks
SupportEntities
SCR_CampaignDefendTaskSupportEntity.c
Generated by
1.17.0