Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_BaseUseSupportStationAction.c
Go to the documentation of this file.
2 {
3  [Attribute("#AR-SupportStation_ActionInvalid_NotInRange", desc: "No support stations of type in range", uiwidget: UIWidgets.LocaleEditBox)]
4  protected LocalizedString m_sInvalidRangeActionReason;
5 
6  [Attribute("#AR-SupportStation_ActionInvalid_Destroyed", desc: "Support station in range but the only one is destroyed", uiwidget: UIWidgets.LocaleEditBox)]
7  protected LocalizedString m_sInvalidDestroyedActionReason;
8 
9  [Attribute("#AR-SupportStation_ActionInvalid_HostileFaction", desc: "There are support stations in range but user is an invalid faction (Generally means faction is hostile)", uiwidget: UIWidgets.LocaleEditBox)]
10  protected LocalizedString m_sInvalidFactionActionReason;
11 
12  [Attribute("#AR-SupportStation_ActionInvalid_Supplies", desc: "There are support stations in range but non of them have enough supplies", uiwidget: UIWidgets.LocaleEditBox)]
13  protected LocalizedString m_sInvalidSuppliesActionReason;
14 
15  [Attribute("#AR-SupportStation_ActionInvalid_IsMoving", desc: "There are support stations in range but all of them are moving", uiwidget: UIWidgets.LocaleEditBox)]
16  protected LocalizedString m_sInvalidMovingActionReason;
17 
18  [Attribute("#AR-SupportStation_ActionInvalid_Disabled", desc: "There are support stations use range and are in range but all of them are disabled (by the game master)", uiwidget: UIWidgets.LocaleEditBox)]
19  protected LocalizedString m_sInvalidDisabledActionReason;
20 
21  [Attribute("1", desc: "Show supplies in action if there is a supply cost")]
22  protected bool m_bShowSupplyCostOnAction;
23 
24  [Attribute("0", desc: "If true will check if support station component can be found on children. Only enable if support station is on Vehicle part and support station does not have range")]
25  protected bool m_bAllowCheckChildrenSupportStation;
26 
27  [Attribute("-1", desc: "What animation the player should play if using the support station with a gadget. Leave -1 to not play any animation")]
28  protected int m_iGadgetAnimationCommand;
29 
30  [Attribute("1", desc: "If an animation is assigned, does the animation loop?")]
31  protected bool m_bDoesGadgetAnimationLoop;
32 
33  [Attribute("0", desc: "If an animation is assigned, does the animation play while the character is in a vehicle?")]
34  protected bool m_bAnimateGadgetInVehicle;
35 
36  protected bool m_bIsMaster;
37  protected bool m_bActionActive;
38 
39  protected IEntity m_ActionUser; //~ The player that uses is currently using the action
40  protected SCR_BaseSupportStationComponent m_ActionOwnerSupportStationComponent;
41  protected SCR_BaseSupportStationComponent m_SupportStationComponent;
42 
43  //~ To save performance it will only look for valid support station every x miliseconds or if no current supply station or if current is no longer valid
44  protected BaseWorld m_World;
45  protected float m_fLastCheckedCanPerform = 0;
46  protected bool m_bSupportStationWasNull = false;
47  protected const int DELAY_CAN_PERFORM = 500; //~ In milisecs if player hovers over action it will check every x miliseconds the highest priority Support station, Else it will simply check if the current is still valid
48 
49  protected int m_iSuppliesOnUse;
50  protected int m_iAvailableSupplies;
51  protected bool m_bCanPerform;
52  protected ESupportStationReasonInvalid m_eCannotPerformReason;
53 
54  protected SCR_SupportStationGadgetComponent m_SupportStationGadget;
55  protected bool m_bOnActionAnimationInDone;
56 
57  protected const LocalizedString ACTION_WITH_SUPPLYCOST_FORMATTING = "#AR-ActionFormat_SupplyCost";
58  protected const LocalizedString ACTION_WITH_PARAM_FORMATTING = "#AR-SupportStation_ActionFormat_WithParam";
59  protected const LocalizedString ACTION_PERCENTAGE_FORMATTING = "#AR-SupportStation_ActionFormat_Percentage";
60 
61  //------------------------------------------------------------------------------------------------
62  protected ESupportStationType GetSupportStationType()
63  {
64  Print("Do not use 'SCR_BaseUseSupportStationAction' as action, inherit from it and override ' SupportStationActionType' function to the correct type!", LogLevel.ERROR);
65  return ESupportStationType.NONE;
66  }
67 
68  //------------------------------------------------------------------------------------------------
69  //~ Executed on perform (server only) and on CanBePerformedScript every time DELAY_CAN_PERFORM passes (Local only)
70  protected SCR_BaseSupportStationComponent GetClosestValidSupportStation(IEntity actionOwner, IEntity actionUser, out ESupportStationReasonInvalid reasonInvalid = 0)
71  {
72  SCR_BaseSupportStationComponent supportStationComponent;
73  vector actionWorldPosition = GetWorldPositionAction();
74 
75  //~ Should always take held gadget over any other support station unless the user holds no Gadget
76  if (m_SupportStationGadget && PrioritizeHeldGadget() && AllowGetSupportStationFromGadget())
77  {
78  supportStationComponent = m_SupportStationGadget.GetSupportStation(GetSupportStationType());
79  if (supportStationComponent)
80  {
81  //~ Held Gadget is valid
82  if (supportStationComponent.IsValid(actionOwner, actionUser, this, actionWorldPosition, reasonInvalid, m_iSuppliesOnUse))
83  return supportStationComponent;
84  //~ The held gadget wasn't valid
85  else
86  {
87  m_iAvailableSupplies = supportStationComponent.GetMaxAvailableSupplies();
88  return null;
89  }
90 
91  }
92  }
93 
94  //~ Only execute without manager if its owner has a SCR_BaseSupportStationComponent on it that must be executed without manager
95  if (m_ActionOwnerSupportStationComponent && !m_ActionOwnerSupportStationComponent.UsesRange() && !m_ActionOwnerSupportStationComponent.IgnoreSelf())
96  {
97  if (m_ActionOwnerSupportStationComponent.IsValid(actionOwner, actionUser, this, actionWorldPosition, reasonInvalid, m_iSuppliesOnUse))
98  return m_ActionOwnerSupportStationComponent;
99 
100  m_iAvailableSupplies = m_ActionOwnerSupportStationComponent.GetMaxAvailableSupplies();
101  return null;
102  }
103 
104  //~ Get manager
105  SCR_SupportStationManagerComponent supportStationManager = SCR_SupportStationManagerComponent.GetInstance();
106  if (supportStationManager)
107  {
108  //~ If not get First valid SCR_BaseSupportStationComponent
109  supportStationComponent = supportStationManager.GetClosestValidSupportStation(GetSupportStationType(), actionUser, actionOwner, this, actionWorldPosition, reasonInvalid, m_iSuppliesOnUse);
110  if (supportStationComponent)
111  return supportStationComponent;
112  }
113 
114  //~ Only check held gadget if other support stations around at least did not fail because there were no supplies
115  if (reasonInvalid != ESupportStationReasonInvalid.NO_SUPPLIES)
116  {
117  //~ Get held Gadget support station if it did not already check it because it had priority
118  if (m_SupportStationGadget && !PrioritizeHeldGadget() && AllowGetSupportStationFromGadget())
119  {
120  supportStationComponent = m_SupportStationGadget.GetSupportStation(GetSupportStationType());
121  if (supportStationComponent)
122  {
123  //~ Held Gadget is valid
124  if (supportStationComponent.IsValid(actionOwner, actionUser, this, actionWorldPosition, reasonInvalid, m_iSuppliesOnUse))
125  return supportStationComponent;
126  else
127  {
128  m_iAvailableSupplies = supportStationComponent.GetMaxAvailableSupplies();
129  return null;
130  }
131  }
132  }
133  }
134 
135  if (supportStationComponent)
136  m_iAvailableSupplies = supportStationComponent.GetMaxAvailableSupplies();
137  else
138  m_iAvailableSupplies = 0;
139 
140  return null;
141  }
142 
143  //------------------------------------------------------------------------------------------------
144  override bool CanBeShownScript(IEntity user)
145  {
146  if (!super.CanBeShownScript(user))
147  return false;
148 
149  m_SupportStationGadget = SCR_SupportStationGadgetComponent.GetHeldSupportStationGadget(GetSupportStationType(), user);
150  if (RequiresGadget() && !m_SupportStationGadget)
151  return false;
152 
153  //~ Don't show if support station is on owner and it is disabled
154  SCR_BaseSupportStationComponent supportStationComponent = SCR_BaseSupportStationComponent.Cast(GetOwner().FindComponent(SCR_BaseSupportStationComponent));
155  if (supportStationComponent && !supportStationComponent.UsesRange() && !supportStationComponent.IsEnabled())
156  return false;
157 
158  //~ Don't show if fully destroyed (vehicle parts will check parent)
159  if (!CanShowDestroyed())
160  return false;
161 
162  //~ All checks passed
163  return true;
164  }
165 
166  //------------------------------------------------------------------------------------------------
167  protected bool CanShowDestroyed()
168  {
169  //~ Don't show if damage manager destroyed
170  SCR_DamageManagerComponent damageComponent = SCR_DamageManagerComponent.Cast(GetOwner().FindComponent(SCR_DamageManagerComponent));
171  if (damageComponent)
172  return damageComponent.GetState() != EDamageState.DESTROYED;
173 
174  //~ Don't show if default hitZone is destroyed
176  if (hitZoneContainer)
177  {
178  HitZone defaultHitZone = hitZoneContainer.GetDefaultHitZone();
179 
180  if (defaultHitZone)
181  return defaultHitZone.GetDamageState() != EDamageState.DESTROYED;
182  }
183 
184  return true;
185  }
186 
187  //------------------------------------------------------------------------------------------------
188  override bool CanBePerformedScript(IEntity user)
189  {
190  //~ To optimize only get perform if action is active
191  //if (!m_bActionActive && !m_bIsMaster)
192  // return true;
193 
194  //~ Only one player can perform at the same time
195  if (!CanHaveMultipleUsers() && m_ActionUser && m_ActionUser != user)
196  {
197  SetCanPerform(false, ESupportStationReasonInvalid.IN_USE);
198  return false;
199  }
200 
201  ESupportStationReasonInvalid reasonInvalid;
202  //~ Only check every x seconds if support station is still valid (valid support station is also checked on execute action). This is for performance issue as checking for all support stations can be performance heavy
203  if (m_World.GetWorldTime() < (m_fLastCheckedCanPerform + DELAY_CAN_PERFORM))
204  {
205  //~ Support station assigned and still valid. So action can be performed
206  if (m_SupportStationComponent && m_SupportStationComponent.IsValid(GetOwner(), user, this, GetWorldPositionAction(), reasonInvalid, m_iSuppliesOnUse))
207  {
208  SetCanPerform(true, -1);
209  return true;
210  }
211  //~ No support station was valid but only recheck once DELAY_CAN_PERFORM if it is valid again. So make sure action cannot be performed
212  else if (m_bSupportStationWasNull)
213  {
214  SetCanPerform(false, -1);
215  return false;
216  }
217  }
218 
219  //~ Support station is no longer valid so check for a new one
220  m_SupportStationComponent = GetClosestValidSupportStation(GetOwner(), user, reasonInvalid);
222  m_iAvailableSupplies = m_SupportStationComponent.GetMaxAvailableSupplies();
223 
224  //~ Only called when updated
225  CanBePerformedUpdate(user);
226 
227  //~ Save if support station was null to make sure it only checks for valid support station after the delay
228  m_bSupportStationWasNull = m_SupportStationComponent == null;
229 
230  SetCanPerform(m_SupportStationComponent != null, reasonInvalid);
231  return m_SupportStationComponent != null;
232  }
233 
234  //------------------------------------------------------------------------------------------------
235  //~ Set if action can be performed and to update displayed action name and invalid reason
236  protected void SetCanPerform(bool canPerform, ESupportStationReasonInvalid reasonInvalid)
237  {
238  m_bCanPerform = canPerform;
239 
240  if (reasonInvalid >= 0)
241  {
242  m_eCannotPerformReason = reasonInvalid;
243  m_sCannotPerformReason = GetInvalidPerformReasonString(reasonInvalid);
244  }
245  }
246 
247  //------------------------------------------------------------------------------------------------
248  bool CanPerform(out ESupportStationReasonInvalid cannotPerformReason)
249  {
250  cannotPerformReason = m_eCannotPerformReason;
251  return m_bCanPerform;
252  }
253 
254  //------------------------------------------------------------------------------------------------
255  //~ Executed every time can be performed delay is done
256  protected void CanBePerformedUpdate(IEntity user)
257  {
258  //~ Save last performed
259  m_fLastCheckedCanPerform = m_World.GetWorldTime();
260  }
261 
262  //------------------------------------------------------------------------------------------------
263  //~ Get invalid perform reason text
264  protected LocalizedString GetInvalidPerformReasonString(ESupportStationReasonInvalid reasonInvalid)
265  {
266  //~ No stations of type in range
267  if (reasonInvalid == ESupportStationReasonInvalid.NOT_IN_RANGE)
268  return m_sInvalidRangeActionReason;
269  if (reasonInvalid == ESupportStationReasonInvalid.DESTROYED_STATION)
270  return m_sInvalidDestroyedActionReason;
271  //~ Disabled by Editor
272  else if (reasonInvalid == ESupportStationReasonInvalid.DISABLED)
273  return m_sInvalidDisabledActionReason;
274  //~ Faction of user is invalid compaired to faction of Support station
275  else if (reasonInvalid == ESupportStationReasonInvalid.INVALID_FACTION)
276  return m_sInvalidFactionActionReason;
277  //~ Stations have no supplies
278  else if (reasonInvalid == ESupportStationReasonInvalid.NO_SUPPLIES)
279  return m_sInvalidSuppliesActionReason;
280  //~ Stations are all moving
281  else if (reasonInvalid == ESupportStationReasonInvalid.IS_MOVING)
282  return m_sInvalidMovingActionReason;
283 
284  //~ Show default unavailible
285  return string.Empty;
286  }
287 
288  //------------------------------------------------------------------------------------------------
289  protected void ResetReferencesOnServer()
290  {
291  m_fLastCheckedCanPerform = 0;
293  m_bSupportStationWasNull = false;
294  }
295 
296  //------------------------------------------------------------------------------------------------
297  //~ If continues action it will only execute everytime the duration is done
298  override void PerformContinuousAction(IEntity pOwnerEntity, IEntity pUserEntity, float timeSlice)
299  {
300  if (!m_bIsMaster && SCR_PlayerController.GetLocalControlledEntity() != pUserEntity)
301  return;
302 
303  if (!LoopActionUpdate(timeSlice))
304  return;
305 
306  //~ Has gadget and loops animation
307  if (m_SupportStationGadget && m_iGadgetAnimationCommand > 0 && m_bDoesGadgetAnimationLoop)
308  {
309  //~ Character animates in vehicle or is not in vehicle
310  if (m_bAnimateGadgetInVehicle || !IsUserInVehicle(pUserEntity))
311  {
312  //~ Not yet in loop animation
313  if (!m_SupportStationGadget.InUseAnimationLoop(pUserEntity))
314  return;
315  }
316  }
317 
318  //~ Only start showing progress after first action completed
319  m_bLoopAction = true;
320 
321  PerformAction(pOwnerEntity, pUserEntity);
322  }
323 
324  //------------------------------------------------------------------------------------------------
325  override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
326  {
327  //~ Action can be performed server only
328  if (!m_bIsMaster)
329  return;
330 
331  //~ Resets all references so server grabs them all fresh
332  ResetReferencesOnServer();
333 
334  if (!CanBeShownScript(pUserEntity))
335  return;
336 
337  if (!CanBePerformedScript(pUserEntity))
338  return;
339 
340  //Execute Supply station
341  m_SupportStationComponent.OnExecutedServer(pOwnerEntity, pUserEntity, this);
342 
343  //~ Update supplies
344  m_iAvailableSupplies = m_SupportStationComponent.GetMaxAvailableSupplies();
345  }
346 
347  //------------------------------------------------------------------------------------------------
348  override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
349  {
350  super.Init(pOwnerEntity, pManagerComponent);
351 
353  if ((gameMode && gameMode.IsMaster()) || (!gameMode && Replication.IsServer()))
354  m_bIsMaster = true;
355 
356  m_World = GetGame().GetWorld();
357 
358  //~ Init check
359  GetSupportStationType();
360 
361  if (ShouldPerformPerFrame() && GetActionDuration() > 0)
362  Print("'SCR_BaseUseSupportStationAction' Support Station action type: '" + typename.EnumToString(ESupportStationType, GetSupportStationType()) + "' has PerformPerFrame true but the duraction is greater than 0. Set it to less that 0, eg: 1 sec == -1", LogLevel.ERROR);
363 
364  //~ Delay init to get components correctly
365  GetGame().GetCallqueue().CallLater(DelayedInit, param1: pOwnerEntity);
366  }
367 
368  //------------------------------------------------------------------------------------------------
369  protected void DelayedInit(IEntity owner)
370  {
371  if (!owner)
372  return;
373 
374  m_ActionOwnerSupportStationComponent = SCR_BaseSupportStationComponent.FindSupportStation(owner, GetSupportStationType(), queryFlags: SCR_EComponentFinderQueryFlags.ENTITY);
375 
376  //~ Get support station of children
377  if (!m_ActionOwnerSupportStationComponent && m_bAllowCheckChildrenSupportStation)
378  {
379  if (Vehicle.Cast(owner))
380  m_ActionOwnerSupportStationComponent = SCR_BaseSupportStationComponent.FindSupportStation(owner, GetSupportStationType(), queryFlags: SCR_EComponentFinderQueryFlags.SLOTS);
381  else
382  m_ActionOwnerSupportStationComponent = SCR_BaseSupportStationComponent.FindSupportStation(owner, GetSupportStationType(), queryFlags: SCR_EComponentFinderQueryFlags.CHILDREN);
383  }
384  }
385 
386  //------------------------------------------------------------------------------------------------
387  override bool CanBroadcastScript()
388  {
389  return true;
390  }
391 
392  //------------------------------------------------------------------------------------------------
393  protected bool CanHaveMultipleUsers()
394  {
395  return false;
396  }
397 
398  //------------------------------------------------------------------------------------------------
400  protected float GetActionPercentage()
401  {
402  return int.MIN;
403  }
404 
405  //------------------------------------------------------------------------------------------------
406  protected int GetActionDecimalCount()
407  {
408  return 1;
409  }
410 
411  //------------------------------------------------------------------------------------------------
413  protected bool RequiresGadget()
414  {
415  return false;
416  }
417 
418  //------------------------------------------------------------------------------------------------
420  protected bool PrioritizeHeldGadget()
421  {
422  return false;
423  }
424 
425  //------------------------------------------------------------------------------------------------
427  protected bool AllowGetSupportStationFromGadget()
428  {
429  return true;
430  }
431 
432  //------------------------------------------------------------------------------------------------
434  protected IEntity GetCurrentActionUser()
435  {
436  return m_ActionUser;
437  }
438 
439  //------------------------------------------------------------------------------------------------
440  override void OnActionStart(IEntity pUserEntity)
441  {
442  m_ActionUser = pUserEntity;
443 
444  super.OnActionStart(pUserEntity);
445 
446  //~ Or if AI just do it
447  if (!ShouldPerformPerFrame())
448  return;
449 
450  m_SupportStationGadget = SCR_SupportStationGadgetComponent.GetHeldSupportStationGadget(GetSupportStationType(), pUserEntity);
451  if (!m_SupportStationGadget)
452  {
453  m_bLoopAction = true;
454  return;
455  }
456  else if (!m_bDoesGadgetAnimationLoop)
457  {
458  m_bLoopAction = true;
459 
460  if (m_iGadgetAnimationCommand > 0 && (m_bAnimateGadgetInVehicle || !IsUserInVehicle(pUserEntity)))
461  m_SupportStationGadget.StartGadgetAnimation(pUserEntity, m_iGadgetAnimationCommand, this);
462 
463  return;
464  }
465 
466  m_bLoopAction = false;
467 
468  if (m_iGadgetAnimationCommand > 0 && (m_bAnimateGadgetInVehicle || !IsUserInVehicle(pUserEntity)))
469  m_SupportStationGadget.StartGadgetAnimation(pUserEntity, m_iGadgetAnimationCommand, this);
470  }
471 
472  //------------------------------------------------------------------------------------------------
473  protected bool IsUserInVehicle(notnull IEntity user)
474  {
475  ChimeraCharacter chimeraCharacter = ChimeraCharacter.Cast(user);
476  return chimeraCharacter && chimeraCharacter.IsInVehicle();
477  }
478 
479  //------------------------------------------------------------------------------------------------
480  override void OnActionCanceled(IEntity pOwnerEntity, IEntity pUserEntity)
481  {
482  super.OnActionCanceled(pUserEntity);
483 
484  //~ Remove gadget user
485  m_ActionUser = null;
486 
487  if (!m_SupportStationGadget)
488  return;
489 
490  if (m_bDoesGadgetAnimationLoop && m_iGadgetAnimationCommand > 0 && (m_bAnimateGadgetInVehicle || !IsUserInVehicle(pUserEntity)))
491  m_SupportStationGadget.StopGadgetAnimation(pUserEntity, m_iGadgetAnimationCommand);
492  }
493 
494  //------------------------------------------------------------------------------------------------
495  protected string GetActionStringParam()
496  {
497  return string.Empty;
498  }
499 
500  //------------------------------------------------------------------------------------------------
501  protected override void OnActionSelected()
502  {
503  super.OnActionSelected();
504  m_fLastCheckedCanPerform = 0;
505  m_bActionActive = true;
506 
507  }
508 
509  //------------------------------------------------------------------------------------------------
510  protected override void OnActionDeselected()
511  {
512  super.OnActionSelected();
513  m_bActionActive = false;
514  }
515 
516  //------------------------------------------------------------------------------------------------
517  override bool GetActionNameScript(out string outName)
518  {
519  //~ Support station is overwriting the action name
520  if (outName.IsEmpty())
521  {
523  outName = m_SupportStationComponent.GetOverrideUserActionName();
524 
525  if (outName.IsEmpty())
526  {
527  UIInfo uiInfo = GetUIInfo();
528  if (uiInfo)
529  outName = uiInfo.GetName();
530  }
531  }
532 
533  //~ If action is active show additional params
534  if (m_bActionActive)
535  {
536  string actionParam = GetActionStringParam();
537  float actionPercentage = int.MIN;
538 
539  if (actionParam.IsEmpty())
540  actionPercentage = GetActionPercentage();
541 
542  //~ Get percentage string
543  if (actionPercentage != int.MIN)
544  actionParam = SCR_FormatHelper.FloatToStringNoZeroDecimalEndings(actionPercentage, GetActionDecimalCount());
545 
546  //~ Show percentage
547  if (!actionParam.IsEmpty())
548  {
549  if (actionPercentage != int.MIN)
550  outName = WidgetManager.Translate(ACTION_PERCENTAGE_FORMATTING, outName, actionParam);
551  else
552  outName = WidgetManager.Translate(ACTION_WITH_PARAM_FORMATTING, outName, actionParam);
553  }
554 
555  //~ Show supply cost
556  if (m_bShowSupplyCostOnAction && m_iSuppliesOnUse > 0)
557  {
558  //~ Show if can perform or if not enough supplies
559  if (m_bCanPerform || m_eCannotPerformReason == ESupportStationReasonInvalid.NO_SUPPLIES)
560  outName = WidgetManager.Translate(ACTION_WITH_SUPPLYCOST_FORMATTING, outName, m_iSuppliesOnUse, m_iAvailableSupplies);
561  }
562  }
563 
564  return !outName.IsEmpty();
565  }
566 
567  //------------------------------------------------------------------------------------------------
569  {
570  //~ Safety if action owner is deleted while player is still using it
571  if (m_ActionUser && m_SupportStationGadget)
572  {
573  if (m_bDoesGadgetAnimationLoop && m_iGadgetAnimationCommand > 0 && (m_bAnimateGadgetInVehicle || !IsUserInVehicle(m_ActionUser)))
574  m_SupportStationGadget.StopGadgetAnimation(m_ActionUser, m_iGadgetAnimationCommand);
575  }
576  }
577 };
578 
SCR_BaseGameMode
Definition: SCR_BaseGameMode.c:137
SCR_PlayerController
Definition: SCR_PlayerController.c:31
SCR_FormatHelper
Definition: SCR_FormatHelper.c:1
HitZone
Definition: HitZone.c:12
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
SCR_ScriptedUserAction
A scripted action class having optional logic to check if vehicle is valid.
Definition: SCR_ScriptedUserAction.c:2
UIInfo
UIInfo - declare object, allows to define UI elements.
Definition: UIInfo.c:13
EDamageState
EDamageState
Definition: EDamageState.c:12
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
HitZoneContainerComponent
Definition: HitZoneContainerComponent.c:12
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition: SCR_BaseGameModeComponent.c:15
ESupportStationReasonInvalid
ESupportStationReasonInvalid
Definition: ESupportStationReasonInvalid.c:3
SCR_SupportStationManagerComponent
Definition: SCR_SupportStationManagerComponent.c:10
GetUIInfo
SCR_UIInfo GetUIInfo()
Definition: SCR_EditableEntityCampaignBuildingModeLabelSetting.c:27
Attribute
typedef Attribute
Post-process effect of scripted camera.
ESupportStationType
ESupportStationType
Definition: ESupportStationType.c:2
m_World
protected BaseWorld m_World
Definition: SCR_PreviewEntityEditorUIComponent.c:46
GetOwner
IEntity GetOwner()
Owner entity of the fuel tank.
Definition: SCR_FuelNode.c:128
SCR_EComponentFinderQueryFlags
SCR_EComponentFinderQueryFlags
Used for component finding to know where it can search to get the given component.
Definition: SCR_EntityHelper.c:424
m_SupportStationComponent
protected SCR_BaseSupportStationComponent m_SupportStationComponent
Definition: SCR_SupportStationAreaMeshComponent.c:18
SCR_BaseUseSupportStationAction
Definition: SCR_BaseUseSupportStationAction.c:1
LocalizedString
Definition: LocalizedString.c:21