Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
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//};