Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_DeployMenuBase.c
Go to the documentation of this file.
1 //------------------------------------------------------------------------------------------------
4 {
5  protected SCR_InputButtonComponent m_PauseButton;
6  protected SCR_InputButtonComponent m_GameMasterButton;
7  protected SCR_InputButtonComponent m_ChatButton;
8 
9  protected SCR_ChatPanel m_ChatPanel;
10  protected SCR_MapEntity m_MapEntity;
11 
12  protected static ref OnDeployMenuOpenInvoker s_OnMenuOpen;
13 
14  //------------------------------------------------------------------------------------------------
15  override void OnMenuOpen()
16  {
17  if (s_OnMenuOpen)
18  s_OnMenuOpen.Invoke();
19 
20  m_GameMasterButton = SCR_InputButtonComponent.GetInputButtonComponent("Editor", GetRootWidget());
21  if (m_GameMasterButton)
22  {
23  SCR_EditorManagerEntity editor = SCR_EditorManagerEntity.GetInstance();
24  if (editor)
25  {
26  m_GameMasterButton.SetVisible(!editor.IsLimitedInstance());
27  editor.GetOnLimitedChange().Insert(OnEditorLimitedChanged);
28  }
29  }
30 
31  super.OnMenuOpen();
32  }
33 
34  //------------------------------------------------------------------------------------------------
35  override void OnMenuOpened()
36  {
37  // Mute sounds
38  // If menu is opened before loading screen is closed, wait for closing
39  if (ArmaReforgerLoadingAnim.IsOpen())
40  ArmaReforgerLoadingAnim.m_onExitLoadingScreen.Insert(MuteSounds);
41  else
42  MuteSounds();
43  }
44 
45  //------------------------------------------------------------------------------------------------
46  override void OnMenuClose()
47  {
48  MuteSounds(false);
49  if (m_MapEntity && m_MapEntity.IsOpen())
50  m_MapEntity.CloseMap();
51 
52  super.OnMenuClose();
53  }
54 
55  //------------------------------------------------------------------------------------------------
56  override void OnMenuHide()
57  {
58  MuteSounds(false);
59  if (m_MapEntity && m_MapEntity.IsOpen())
60  m_MapEntity.CloseMap();
61  }
62 
63  //------------------------------------------------------------------------------------------------
64  protected void OpenPlayerList()
65  {
66  GetGame().GetMenuManager().OpenDialog(ChimeraMenuPreset.PlayerListMenu);
67  }
68 
69  //------------------------------------------------------------------------------------------------
70  void MuteSounds(bool mute = true)
71  {
72  if (!IsOpen())
73  return;
74 
75  AudioSystem.SetMasterVolume(AudioSystem.SFX, !mute);
76  AudioSystem.SetMasterVolume(AudioSystem.VoiceChat, !mute);
77  AudioSystem.SetMasterVolume(AudioSystem.Dialog, !mute);
78 
79  ArmaReforgerLoadingAnim.m_onExitLoadingScreen.Remove(MuteSounds);
80  }
81 
83  protected void OnEditorLimitedChanged(bool limited)
84  {
85  m_GameMasterButton.SetVisible(!limited);
86  }
87 
88  //------------------------------------------------------------------------------------------------
89  static OnDeployMenuOpenInvoker SGetOnMenuOpen()
90  {
91  if (!s_OnMenuOpen)
92  s_OnMenuOpen = new OnDeployMenuOpenInvoker();
93 
94  return s_OnMenuOpen;
95  }
96 }
97 
98 //------------------------------------------------------------------------------------------------
100 class SCR_DeployMenuMain : SCR_DeployMenuBase
101 {
103 
107 
108  protected ref MapConfiguration m_MapConfigDeploy = new MapConfiguration();
110 
113  protected RplId m_iSelectedSpawnPointId = RplId.Invalid();
114 
115  protected Widget m_wLoadingSpinner;
116  protected SCR_LoadingSpinner m_LoadingSpinner;
117 
118  protected FactionManager m_FactionManager;
120 
122 
123  protected Widget m_wRespawnButton;
125 
126  protected Widget m_wMenuFrame;
127 
130  protected SCR_TimedSpawnPointComponent m_TimedSpawnPointTimer;
131  protected int m_iPreviousTime = 0;
132  protected bool m_bRespawnRequested = false;
133  protected bool m_bSuppliesEnabled;
134  protected SCR_RespawnSystemComponent m_RespawnSystemComp;
136 
137  protected int m_iPlayerId;
138 
139  protected bool m_bMapContextAllowed = true;
140 
142 
144  protected bool m_bDisplayTime;
145 
147  protected const float CHECK_CAN_SPAWN_SPAWNPOINT_TIME = 1; //~ Time (in seconds) when the system should request if the player can spawn. Note this request is send to server
148  protected const string FALLBACK_DEPLOY_STRING = "#AR-ButtonSelectDeploy"; //~ Time (in seconds) when the system should request if the player can spawn. Note this request is send to server
149 
151 
152  //~ A timer that disables the respawn button for x seconds after it has been pressed to prevent players from sending multiple spawn requests
153  protected float m_fCurrentDeployTimeOut;
154  protected const float DEPLOY_TIME_OUT = 0.5;
155 
156  //----------------------------------------------------------------------------------------------
158  {
159  int cost;
160 
161  SCR_EntityCatalogManagerComponent entityCatalogManager = SCR_EntityCatalogManagerComponent.GetInstance();
162  if (!entityCatalogManager)
163  return 0;
164 
165  SCR_Faction faction = SCR_Faction.Cast(m_PlyFactionAffilComp.GetAffiliatedFaction());
166  if (!faction)
167  return 0;
168 
169  SCR_BasePlayerLoadout playerLoadout = component.GetLoadout();
170  if (!playerLoadout)
171  return 0;
172 
173  ResourceName loadoutResource = playerLoadout.GetLoadoutResource();
174  if (!loadoutResource)
175  return 0;
176 
177  Resource resource = Resource.Load(loadoutResource);
178  if (!resource)
179  return 0;
180 
181  SCR_EntityCatalogEntry entry = entityCatalogManager.GetEntryWithPrefabFromFactionCatalog(EEntityCatalogType.CHARACTER, resource.GetResource().GetResourceName(), faction);
182  if (!entry)
183  return 0;
184 
186  if (!data)
187  return 0;
188 
189  cost = data.GetSupplyCost();
190 
191  return cost;
192  }
193 
194 
195  //------------------------------------------------------------------------------------------------
197  void AllowMapContext(bool allow)
198  {
199  m_bMapContextAllowed = allow;
200  }
201 
202  //------------------------------------------------------------------------------------------------
203  override void OnMenuOpen()
204  {
205  super.OnMenuOpen();
207 
208  m_wMenuFrame = GetRootWidget().FindAnyWidget("MenuFrame");
209 
212  m_RespawnSystemComp = SCR_RespawnSystemComponent.GetInstance();
214  if (m_RespawnComponent)
215  m_RespawnComponent.GetOnCanRespawnResponseInvoker_O().Insert(OnCanRespawnRequestResponse);
216 
217  m_MapEntity = SCR_MapEntity.GetMapInstance();
218 
219  if (!m_MapEntity)
220  {
221  Debug.Error("Map entity is missing in the world! Deploy menu won't work correctly.");
222  }
223 
225 
226  m_wRespawnButton = GetRootWidget().FindAnyWidget("RespawnButton");
227 
229  if (m_RespawnButton)
230  {
231  //~ Set enabled false so players cannot press the button right after init
232  m_RespawnButton.SetEnabled(false);
233  m_RespawnButton.m_OnActivated.Insert(RequestRespawn);
234  }
235 
236  Widget spinnerRoot = GetRootWidget().FindAnyWidget("LoadingSpinner");
237  m_wLoadingSpinner = spinnerRoot.FindAnyWidget("Spinner");
238  if (m_wLoadingSpinner)
239  m_LoadingSpinner = SCR_LoadingSpinner.Cast(m_wLoadingSpinner.FindHandler(SCR_LoadingSpinner));
240 
241  m_FactionManager = GetGame().GetFactionManager();
242  if (!m_FactionManager)
243  {
244  Print("Cannot find faction manager, respawn menu functionality will be broken.", LogLevel.ERROR);
245  }
246 
248  m_TimedSpawnPointTimer = SCR_TimedSpawnPointComponent.Cast(m_GameMode.FindComponent(SCR_TimedSpawnPointComponent));
250 
251  PlayerController pc = GetGame().GetPlayerController();
252  m_iPlayerId = pc.GetPlayerId();
253 
256  {
257  Print("Cannot find player faction affiliation component!", LogLevel.ERROR);
258  }
259 
261  if (!m_PlyLoadoutComp)
262  {
263  Print("Cannot find player loadout component!", LogLevel.ERROR);
264  }
265 
266  m_SpawnRequestManager = SCR_RespawnComponent.Cast(pc.GetRespawnComponent());
267 
268  Widget chat = GetRootWidget().FindAnyWidget("ChatPanel");
269  if (chat)
270  m_ChatPanel = SCR_ChatPanel.Cast(chat.FindHandler(SCR_ChatPanel));
271 
272  m_ChatButton = SCR_InputButtonComponent.GetInputButtonComponent("ChatButton", GetRootWidget());
273  if (m_ChatButton)
274  m_ChatButton.m_OnActivated.Insert(OnChatToggle);
275 
276  m_PauseButton = SCR_InputButtonComponent.GetInputButtonComponent("PauseButton", GetRootWidget());
277  if (m_PauseButton)
278  m_PauseButton.m_OnActivated.Insert(OnPauseMenu);
279 
280  m_GroupOpenButton = SCR_InputButtonComponent.GetInputButtonComponent("GroupManager", GetRootWidget());
281  if (m_GroupOpenButton)
282  m_GroupOpenButton.m_OnActivated.Insert(OpenGroupMenu);
283 
284  HookEvents();
285  InitMapDeploy();
286  }
287 
288  //------------------------------------------------------------------------------------------------
289  override void OnMenuHide()
290  {
291  super.OnMenuHide();
292 
293  if (m_MapEntity && m_MapEntity.IsOpen())
294  m_MapEntity.CloseMap();
295 
296  if (m_RespawnComponent)
297  m_RespawnComponent.GetOnCanRespawnResponseInvoker_O().Remove(OnCanRespawnRequestResponse);
298  }
299 
300  //------------------------------------------------------------------------------------------------
301  override void OnMenuFocusLost()
302  {
303  GetGame().GetInputManager().RemoveActionListener("ShowScoreboard", EActionTrigger.DOWN, OpenPlayerList);
304  GetGame().GetInputManager().RemoveActionListener("DeployMenuSelect", EActionTrigger.DOWN, RequestRespawn);
305 
306  GetGame().GetInputManager().RemoveActionListener("SpawnPointNext", EActionTrigger.DOWN, NextSpawn);
307  GetGame().GetInputManager().RemoveActionListener("SpawnPointPrev", EActionTrigger.DOWN, PrevSpawn);
308 
309  super.OnMenuFocusLost();
310  }
311 
312  //------------------------------------------------------------------------------------------------
313  override void OnMenuFocusGained()
314  {
315  SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
316  if (editorManager)
317  editorManager.AutoInit();
318 
319  GetGame().GetInputManager().AddActionListener("ShowScoreboard", EActionTrigger.DOWN, OpenPlayerList);
320  GetGame().GetInputManager().AddActionListener("DeployMenuSelect", EActionTrigger.DOWN, RequestRespawn);
321 
322  GetGame().GetInputManager().AddActionListener("SpawnPointNext", EActionTrigger.DOWN, NextSpawn);
323  GetGame().GetInputManager().AddActionListener("SpawnPointPrev", EActionTrigger.DOWN, PrevSpawn);
324 
325  super.OnMenuFocusGained();
326  }
327 
329  protected void NextSpawn()
330  {
331  if (!m_bRespawnRequested && !m_LoadoutRequestUIHandler.IsSelectorFocused() && !m_SpawnPointRequestUIHandler.IsSelectorFocused())
332  m_SpawnPointRequestUIHandler.CycleSpawnPoints();
333  }
334 
336  protected void PrevSpawn()
337  {
338  if (!m_bRespawnRequested && !m_LoadoutRequestUIHandler.IsSelectorFocused() && !m_SpawnPointRequestUIHandler.IsSelectorFocused())
339  m_SpawnPointRequestUIHandler.CycleSpawnPoints(false);
340  }
341 
342  //------------------------------------------------------------------------------------------------
343  override void OnMenuOpened()
344  {
345  super.OnMenuOpened();
346  Faction plyFaction = m_PlyFactionAffilComp.GetAffiliatedFaction();
347 
348  m_LoadoutRequestUIHandler.ShowAvailableLoadouts(plyFaction);
349  m_GroupRequestUIHandler.ShowAvailableGroups(plyFaction);
350  if (!m_GroupRequestUIHandler.GetPlayerGroup())
351  m_GroupRequestUIHandler.JoinGroupAutomatically();
352  m_SpawnPointRequestUIHandler.ShowAvailableSpawnPoints(plyFaction);
353 
354  // If the player gets killed while the pause menu is opened, we need to move it on top of the deploy screen
355  PauseMenuUI.MoveToTop();
356  }
357 
358  //------------------------------------------------------------------------------------------------
359  override void OnMenuClose()
360  {
361  super.OnMenuClose();
362 
363  if (m_MapEntity && m_MapEntity.IsOpen())
364  m_MapEntity.CloseMap();
365 
367  }
368 
369  //------------------------------------------------------------------------------------------------
370  override void OnMenuUpdate(float tDelta)
371  {
372  m_RespawnButton.SetSuppliesEnabled(m_bSuppliesEnabled);
373  GetGame().GetInputManager().ActivateContext("DeployMenuContext");
374  GetGame().GetInputManager().ActivateContext("DeployMenuMapContext");
375 
376  if (m_bMapContextAllowed && m_MapEntity && m_MapEntity.IsOpen())
377  GetGame().GetInputManager().ActivateContext("MapContext");
378 
379  if (m_LoadingSpinner && m_wLoadingSpinner.IsVisible())
380  {
381  m_LoadingSpinner.Update(tDelta);
382  m_RespawnButton.UpdateSpinner(tDelta);
383  }
384 
385  if (m_ChatPanel)
386  m_ChatPanel.OnUpdateChat(tDelta);
387 
388  //~ Update if player can spawn
391  {
393 
394  //~ Only check if can spawn if spawn is requested
395  if (!m_bRespawnRequested && m_LoadoutRequestUIHandler.GetPlayerLoadout())
396  m_RespawnComponent.CanSpawn(new SCR_SpawnPointSpawnData(m_LoadoutRequestUIHandler.GetPlayerLoadout().GetLoadoutResource(), m_iSelectedSpawnPointId));
397  }
398 
399  if (m_fCurrentDeployTimeOut > 0)
400  m_fCurrentDeployTimeOut -= tDelta;
401 
402  //~ If can respawn
403  int remainingTime = -1;
404 
405  //~ Timer calculation and sound event
407  {
408  float spawnPointTime = 0;
409  if (SCR_SpawnPoint.GetSpawnPointByRplId(m_iSelectedSpawnPointId))
410  spawnPointTime = SCR_SpawnPoint.GetSpawnPointByRplId(m_iSelectedSpawnPointId).GetRespawnTime();
411  remainingTime = m_ActiveRespawnTimer.GetPlayerRemainingTime(m_iPlayerId, spawnPointTime);
412 
413  if (remainingTime > 0)
414  {
415  if (remainingTime != m_iPreviousTime)
416  {
417  if (m_bDisplayTime)
418  {
419  SCR_UISoundEntity.SetSignalValueStr("countdownValue", remainingTime);
420  SCR_UISoundEntity.SetSignalValueStr("maxCountdownValue", m_ActiveRespawnTimer.GetRespawnTime());
421  SCR_UISoundEntity.SoundEvent(SCR_SoundEvent.SOUND_RESPAWN_COUNTDOWN);
422  }
423 
424  m_iPreviousTime = remainingTime;
425  }
426 
427  if (m_bDisplayTime)
428  {
430  m_RespawnButton.SetText(m_bCanRespawnAtSpawnPoint, m_UIInfoSpawnRequestResult.GetNameWithTimer(), remainingTime);
431  else
433  }
434  else
435  {
438  else
440  }
441  }
442  else
443  {
444  if (m_iPreviousTime > 0)
445  {
446  if (m_bDisplayTime)
447  SCR_UISoundEntity.SoundEvent(SCR_SoundEvent.SOUND_RESPAWN_COUNTDOWN_END);
448 
449  m_iPreviousTime = remainingTime;
450  }
451 
454  else
456  }
457  }
458 
460  }
461 
462  //------------------------------------------------------------------------------------------------
463  protected void ResetRespawnResultVars()
464  {
465  m_bDisplayTime = false;
467  m_fCurrentCanSpawnUpdateTime = CHECK_CAN_SPAWN_SPAWNPOINT_TIME; //~ Makes sure to send a request if spawnpoint can be spawned at
468  }
469 
470  //------------------------------------------------------------------------------------------------
471  //~ Response from server when player sends a request to spawn
472  protected void OnCanRespawnRequestResponse(SCR_SpawnRequestComponent requestComponent, SCR_ESpawnResult response, SCR_SpawnData data)
473  {
474  m_bCanRespawnAtSpawnPoint = (response == SCR_ESpawnResult.OK);
475  SCR_BaseSpawnPointRequestResultInfo spawnPointResultInfo = m_RespawnSystemComp.GetSpawnPointRequestResultInfo(requestComponent, response, data);
476 
477  if (!spawnPointResultInfo)
478  {
481 
482  return;
483  }
484 
485  m_UIInfoSpawnRequestResult = spawnPointResultInfo.GetUIInfo();
486  m_bDisplayTime = spawnPointResultInfo.ShowRespawnTime();
487 
489 
490  m_bSuppliesEnabled = false;
491 
492  SCR_SpawnPoint spawnPoint = SCR_SpawnPoint.GetSpawnPointByRplId(m_SpawnPointRequestUIHandler.GetCurrentRplId());
493 
494  if (!spawnPoint)
495  return;
496 
497  SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(spawnPoint);
498 
499  if (resourceComponent)
500  m_bSuppliesEnabled = true;
501  else
502  {
503  IEntity parentEntity = spawnPoint.GetParent();
504 
505  if (parentEntity)
506  {
507  resourceComponent = SCR_ResourceComponent.FindResourceComponent(parentEntity);
508 
509  if (resourceComponent)
510  m_bSuppliesEnabled = true;
511  }
512  }
513 
514  m_RespawnButton.SetSuppliesEnabled(m_bSuppliesEnabled);
515 
516  //~ Timer calculation and sound event
518  {
519  int remainingTime = m_ActiveRespawnTimer.GetPlayerRemainingTime(m_iPlayerId);
520 
521  if (remainingTime > 0)
522  {
524  m_RespawnButton.SetText(m_bCanRespawnAtSpawnPoint, m_UIInfoSpawnRequestResult.GetNameWithTimer(), remainingTime);
525  else
527 
529  return;
530  }
531  }
532 
535  else
537 
539  }
540 
541  //------------------------------------------------------------------------------------------------
543  protected void FindRequestHandlers()
544  {
545  m_LoadoutRequestUIHandler = m_MenuHandler.GetLoadoutRequestHandler();
547  {
548  Print("Failed to find SCR_LoadoutRequestUIComponent!", LogLevel.ERROR);
549  }
550 
551  m_GroupRequestUIHandler = m_MenuHandler.GetGroupRequestHandler();
553  {
554  Print("Failed to find SCR_GroupRequestUIComponent!", LogLevel.ERROR);
555  }
556 
557  m_SpawnPointRequestUIHandler = m_MenuHandler.GetSpawnPointRequestHandler();
559  {
560  Print("Failed to find SCR_SpawnPointRequestUIComponent!", LogLevel.ERROR);
561  }
562  }
563 
565  protected void HookEvents()
566  {
567  m_PlyFactionAffilComp.GetOnPlayerFactionRequestInvoker_O().Insert(OnPlayerFactionRequest);
568  m_PlyFactionAffilComp.GetOnPlayerFactionResponseInvoker_O().Insert(OnPlayerFactionResponse);
569 
570  m_PlyLoadoutComp.GetOnPlayerLoadoutRequestInvoker_O().Insert(OnPlayerLoadoutRequest);
571  m_PlyLoadoutComp.GetOnPlayerLoadoutResponseInvoker_O().Insert(OnPlayerLoadoutResponse);
572 
573  m_SpawnRequestManager.GetOnRespawnRequestInvoker_O().Insert(OnRespawnRequest);
574  m_SpawnRequestManager.GetOnRespawnResponseInvoker_O().Insert(OnRespawnResponse);
575 
576  m_SpawnPointRequestUIHandler.GetOnSpawnPointSelected().Insert(SetSpawnPoint);
577  m_GroupRequestUIHandler.GetOnLocalPlayerGroupJoined().Insert(OnLocalPlayerGroupJoined);
578  m_MapEntity.GetOnMapOpen().Insert(OnMapOpen);
579 
580  m_GameMode.GetOnPreloadFinished().Insert(HideLoading);
581  }
582 
583  //------------------------------------------------------------------------------------------------
584  protected void OnMapOpen(MapConfiguration config)
585  {
586  m_MapEntity.SetZoom(1);
587 
588  // note@lk: temporary hotfix for duplicite journal entries, better solution is on the way
589  Widget toolMenu = m_wMenuFrame.FindAnyWidget("ToolMenuVert");
590  Widget child = toolMenu.GetChildren();
591  while (child)
592  {
593  Widget sibling = child.GetSibling();
594  child.RemoveFromHierarchy();
595  child = sibling;
596  }
597 
600  m_UIElementContainer.GetOnSpawnPointSelected().Insert(SetSpawnPointExt);
601 
602  SCR_SpawnPoint sp = SCR_SpawnPoint.GetSpawnPointByRplId(m_iSelectedSpawnPointId);
603  if (sp)
604  GetGame().GetCallqueue().CallLater(SetInitialSpawnPoint, 0, false, m_iSelectedSpawnPointId); // called the next frame because of widget init order
605  }
606 
608  protected void OnLocalPlayerGroupJoined(SCR_AIGroup group)
609  {
611  m_SpawnPointRequestUIHandler.UpdateRelevantSpawnPoints();
612  }
613 
615  protected void InitMapDeploy()
616  {
617  if (!m_MapEntity || m_MapEntity.IsOpen())
618  return;
619 
620  SCR_MapConfigComponent configComp = SCR_MapConfigComponent.Cast(m_GameMode.FindComponent(SCR_MapConfigComponent));
621  if (!configComp)
622  return;
623 
624  m_MapConfigDeploy = m_MapEntity.SetupMapConfig(EMapEntityMode.SPAWNSCREEN, configComp.GetSpawnMapConfig(), GetRootWidget());
626  }
627 
629  protected void SetSpawnPointExt(RplId id)
630  {
631  m_SpawnPointRequestUIHandler.SelectSpawnPointExt(id);
632  }
633 
635  protected void SetInitialSpawnPoint(RplId spawnPointId)
636  {
637  SCR_SpawnPoint sp = SCR_SpawnPoint.GetSpawnPointByRplId(m_iSelectedSpawnPointId);
638  SetSpawnPoint(spawnPointId, false);
639  }
640 
642  protected void SetSpawnPoint(RplId id, bool smoothPan = true)
643  {
646 
647  SCR_SpawnPoint sp = SCR_SpawnPoint.GetSpawnPointByRplId(id);
648  if (!sp)
649  return;
650 
651  FocusOnPoint(sp, smoothPan);
652 
654  m_UIElementContainer.OnSpawnPointSelectedExt(id);
655 
657  {
658  if (sp.IsTimed())
660  else
662  }
663 
665  }
666 
668  protected void FocusOnPoint(notnull SCR_SpawnPoint spawnPoint, bool smooth = true)
669  {
670  if (!m_MapEntity || !m_MapEntity.IsOpen())
671  return;
672 
673  vector o = spawnPoint.GetOrigin();
674 
675  float x, y;
676  m_MapEntity.WorldToScreen(o[0], o[2], x, y);
677 
678  float xScaled = GetGame().GetWorkspace().DPIUnscale(x);
679  float yScaled = GetGame().GetWorkspace().DPIUnscale(y);
680 
681  if (smooth)
682  m_MapEntity.PanSmooth(x, y);
683  else
684  m_MapEntity.SetPan(xScaled, yScaled);
685  }
686 
688  protected void HideLoading()
689  {
690  m_wLoadingSpinner.SetVisible(false);
691  }
692 
694  protected void RequestRespawn()
695  {
697 
698  if (!m_RespawnButton.IsEnabled())
699  return;
700 
701  if (!m_iSelectedSpawnPointId.IsValid())
702  {
703  Debug.Error("Selected SpawnPointId is invalid!");
704  return;
705  }
706 
707  ResourceName resourcePrefab = ResourceName.Empty;
708  if (m_LoadoutRequestUIHandler.GetPlayerLoadout())
709  resourcePrefab = m_LoadoutRequestUIHandler.GetPlayerLoadout().GetLoadoutResource();
710  else
711  {
712  Debug.Error("No player loadout assigned!");
713  return;
714  }
715 
717 
719  m_SpawnRequestManager.RequestSpawn(rspData);
720  }
721 
723  protected void OnPlayerFactionRequest(SCR_PlayerFactionAffiliationComponent component, int factionIndex)
724  {
725  m_wLoadingSpinner.SetVisible(true);
726  }
727 
729  protected void OnPlayerFactionResponse(SCR_PlayerFactionAffiliationComponent component, int factionIndex, bool response)
730  {
731  if (response)
732  {
733  Faction assignedFaction = m_FactionManager.GetFactionByIndex(factionIndex);
734  OnPlayerFactionSet(assignedFaction);
735  }
736 
737  m_wLoadingSpinner.SetVisible(false);
738  }
739 
741  protected void OnPlayerLoadoutRequest(SCR_PlayerLoadoutComponent component, int loadoutIndex)
742  {
743  m_wLoadingSpinner.SetVisible(true);
744  }
745 
747  protected void OnPlayerLoadoutResponse(SCR_PlayerLoadoutComponent component, int loadoutIndex, bool response)
748  {
749  if (response)
750  {
751  m_LoadoutRequestUIHandler.RefreshLoadoutPreview();
752  m_RespawnButton.SetEnabled(true);
753  m_RespawnButton.SetSupplyCost(GetLoadoutCost(component));
754  }
755 
756  m_wLoadingSpinner.SetVisible(false);
758  m_LoadoutRequestUIHandler.Unlock();
759  }
760 
761  //----------------------------------------------------------------------------------------------
762  protected void OnPlayerFactionSet(Faction assignedFaction)
763  {
764  if (!assignedFaction)
765  return;
766 
768  m_LoadoutRequestUIHandler.ShowAvailableLoadouts(assignedFaction);
769 
771  m_GroupRequestUIHandler.ShowAvailableGroups(assignedFaction);
772 
774  m_SpawnPointRequestUIHandler.ShowAvailableSpawnPoints(assignedFaction);
775 
776  }
777 
779  protected void OnChatToggle()
780  {
781  if (!m_ChatPanel)
782  {
783  Widget chat = GetRootWidget().FindAnyWidget("ChatPanel");
784  if (chat)
785  m_ChatPanel = SCR_ChatPanel.Cast(chat.FindHandler(SCR_ChatPanel));
786  }
787 
788  if (!m_ChatPanel || m_ChatPanel.IsOpen())
789  return;
790 
791  SCR_ChatPanelManager.GetInstance().ToggleChatPanel(m_ChatPanel);
792  }
793 
795  protected void OnPauseMenu()
796  {
797  GetGame().OpenPauseMenu(false, true);
798  }
799 
801  protected void OnRespawnRequest(SCR_SpawnRequestComponent requestComponent)
802  {
803  m_bRespawnRequested = true;
804  GetRootWidget().SetEnabled(false);
805  m_RespawnButton.SetEnabled(false);
806  m_RespawnButton.ShowLoading(false);
807  m_wLoadingSpinner.SetVisible(true);
808 
810  }
811 
813  protected void OnRespawnResponse(SCR_SpawnRequestComponent requestComponent, SCR_ESpawnResult response)
814  {
815  GetRootWidget().SetEnabled(true);
816  m_wLoadingSpinner.SetVisible(false);
817  if (response != SCR_ESpawnResult.OK)
818  {
819  m_RespawnButton.SetEnabled(true);
820  m_RespawnButton.ShowLoading(true);
821  }
822  m_bRespawnRequested = false;
823  }
824 
826  protected void UpdateRespawnButton()
827  {
828  int remainingTime = -1;
829 
831  remainingTime = m_ActiveRespawnTimer.GetPlayerRemainingTime(m_iPlayerId);
832 
833  bool hasGroup = true;
835  hasGroup = m_GroupRequestUIHandler.GetPlayerGroup();
836  m_RespawnButton.SetEnabled(!m_bRespawnRequested && remainingTime <= 0 && m_fCurrentDeployTimeOut <= 0 && m_bCanRespawnAtSpawnPoint && m_PlyLoadoutComp.GetLoadout() != null && hasGroup);
837  }
838 
839  protected void OpenGroupMenu()
840  {
841  GetGame().GetMenuManager().OpenDialog(ChimeraMenuPreset.GroupMenu);
842  }
843 
844  //------------------------------------------------------------------------------------------------
846  static SCR_DeployMenuMain OpenDeployMenu()
847  {
848  if (!GetDeployMenu())
849  GetGame().GetMenuManager().OpenMenu(ChimeraMenuPreset.RespawnSuperMenu);
850 
851  return GetDeployMenu();
852  }
853 
855  static void CloseDeployMenu()
856  {
857  GetGame().GetMenuManager().CloseMenuByPreset(ChimeraMenuPreset.RespawnSuperMenu);
858  }
859 
861  static SCR_DeployMenuMain GetDeployMenu()
862  {
863  return SCR_DeployMenuMain.Cast(GetGame().GetMenuManager().FindMenuByPreset(ChimeraMenuPreset.RespawnSuperMenu));
864  }
865 };
866 
867 //------------------------------------------------------------------------------------------------
870 {
871  [Attribute("TextHint")]
872  protected string m_sText;
873 
874  [Attribute("ShortcutInput")]
875  protected string m_sShortcutName;
876 
877  [Attribute("HorizontalLayout1")]
878  protected string m_sTextHolderName;
879 
880  protected TextWidget m_wText;
881  protected Widget m_wShortcut;
882  protected Widget m_wTextHolder;
883 
884  [Attribute("Spinner")]
885  protected string m_sLoadingSpinner;
886 
887  [Attribute("Background")]
888  protected string m_sBackground;
889 
890  protected Widget m_wLoadingSpinner;
891  protected Widget m_wSupplies;
892  protected Widget m_wBackgroundWidget;
893  protected RichTextWidget m_wSuppliesText;
894 
895  protected SCR_LoadingSpinner m_LoadingSpinner;
896 
897  protected int m_iSupplyCost;
898  protected bool m_bSuppliesEnabled;
899 
900  //------------------------------------------------------------------------------------------------
901  override void HandlerAttached(Widget w)
902  {
903  super.HandlerAttached(w);
904 
905  m_wText = TextWidget.Cast(w.FindAnyWidget(m_sText));
906  m_wShortcut = w.FindAnyWidget(m_sShortcutName);
907  m_wTextHolder = w.FindAnyWidget(m_sTextHolderName);
908  m_wLoadingSpinner = w.FindAnyWidget(m_sLoadingSpinner);
909  m_LoadingSpinner = SCR_LoadingSpinner.Cast(m_wLoadingSpinner.FindHandler(SCR_LoadingSpinner));
910  m_wSupplies = w.FindAnyWidget("w_Supplies");
911  m_wBackgroundWidget = w.FindAnyWidget(m_sBackground);
912 
913  if (m_wBackgroundWidget)
914  GetOnUpdateEnableColor().Insert(UpdateBackground);
915 
916  if (m_wSupplies)
917  m_wSuppliesText = RichTextWidget.Cast(m_wSupplies.FindAnyWidget("SuppliesText"));
918  }
919 
920  //----------------------------------------------------------------------------------------------
921  void SetSuppliesEnabled(bool enabled)
922  {
923  m_bSuppliesEnabled = enabled;
924  }
925 
926  //----------------------------------------------------------------------------------------------
927  void SetSupplyCost(int cost)
928  {
929  m_iSupplyCost = cost;
930  }
931 
932  //----------------------------------------------------------------------------------------------
933  int GetSupplyCost()
934  {
935  return m_iSupplyCost;
936  }
937 
938  //------------------------------------------------------------------------------------------------
940  void SetText(bool deployEnabled, string text, float remainingTime = -1)
941  {
942  if (!m_wText)
943  return;
944 
945  string inputText;
946 
947  if (m_wShortcut)
948  m_wShortcut.SetVisible(deployEnabled && remainingTime <= 0);
949 
950  if (!text.IsEmpty())
951  {
952  if (remainingTime >= 0)
953  {
954  string respawnTime = SCR_FormatHelper.GetTimeFormatting(remainingTime, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS | ETimeFormatParam.MINUTES);
955  m_wText.SetTextFormat(text, respawnTime);
956  return;
957  }
958 
959  m_wText.SetText(text);
960  if (m_wSupplies)
961  m_wSupplies.SetVisible(m_bSuppliesEnabled);
962 
963  if (m_wSuppliesText)
964  m_wSuppliesText.SetText(string.ToString(m_iSupplyCost));
965 
966  return;
967  }
968 
969  //~ Empty string given string
970  if (remainingTime >= 0)
971  {
972  string respawnTime = SCR_FormatHelper.GetTimeFormatting(remainingTime, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS | ETimeFormatParam.MINUTES);
973  m_wText.SetTextFormat("ERROR %1", respawnTime);
974  return;
975  }
976 
977  m_wText.SetText("ERROR");
978  }
979 
980  //------------------------------------------------------------------------------------------------
982  void UpdateSpinner(float timeSlice)
983  {
984  if (m_wLoadingSpinner && m_wLoadingSpinner.IsVisible())
985  m_LoadingSpinner.Update(timeSlice);
986  }
987 
988  //------------------------------------------------------------------------------------------------
990  void ShowLoading(bool show)
991  {
992  m_wTextHolder.SetVisible(show);
993  m_wLoadingSpinner.SetVisible(!show);
994  }
995 
996  //------------------------------------------------------------------------------------------------
998  void UpdateBackground()
999  {
1000  Color color;
1001  if (!m_wRoot.IsEnabled())
1002  color = m_ActionDisabled;
1003  else
1004  color = m_ActionDefault;
1005 
1006  m_wBackgroundWidget.SetColor(color);
1007  }
1008 };
OnRespawnResponse
protected void OnRespawnResponse(SCR_SpawnRequestComponent requestComponent, SCR_ESpawnResult response)
Callback when player respawn request received a response.
Definition: SCR_DeployMenuBase.c:813
ChimeraMenuBase
Constant variables used in various menus.
Definition: ChimeraMenuBase.c:70
SCR_PlayerLoadoutComponent
Definition: SCR_PlayerLoadoutComponent.c:16
SetInitialSpawnPoint
protected void SetInitialSpawnPoint(RplId spawnPointId)
Sets initial spawn point when the deploy map is open for the first time.
Definition: SCR_DeployMenuBase.c:635
OnPlayerFactionResponse
protected void OnPlayerFactionResponse(SCR_PlayerFactionAffiliationComponent component, int factionIndex, bool response)
Callback when faction request receives a response.
Definition: SCR_DeployMenuBase.c:729
SCR_LoadoutRequestUIComponent
Component responsible for requesting and visualization of available loadouts in deploy menu.
Definition: SCR_LoadoutRequestUIComponent.c:2
m_GroupOpenButton
protected SCR_InputButtonComponent m_GroupOpenButton
Definition: SCR_DeployMenuBase.c:150
SCR_BaseGameMode
Definition: SCR_BaseGameMode.c:137
m_UIElementContainer
protected SCR_MapUIElementContainer m_UIElementContainer
Definition: SCR_DeployMenuBase.c:109
m_MapEntity
protected SCR_MapEntity m_MapEntity
Definition: SCR_MapGadgetComponent.c:14
OnMenuOpen
override void OnMenuOpen()
Definition: SCR_DeployMenuBase.c:203
SCR_RespawnComponent
void SCR_RespawnComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition: SCR_RespawnComponent.c:576
m_iSupplyCost
protected int m_iSupplyCost
Definition: SCR_ArsenalItem.c:9
m_MapConfigDeploy
protected ref MapConfiguration m_MapConfigDeploy
Definition: SCR_DeployMenuBase.c:108
SCR_ESpawnResult
SCR_ESpawnResult
Definition: SCR_ESpawnResult.c:8
m_LoadoutRequestUIHandler
protected SCR_LoadoutRequestUIComponent m_LoadoutRequestUIHandler
Definition: SCR_DeployMenuBase.c:104
SCR_SpawnPointRequestUIComponent
Definition: SCR_SpawnPointRequestUIComponent.c:1
m_wRoot
protected Widget m_wRoot
Definition: SCR_ScenarioFrameworkLayerTaskDefend.c:59
OnPlayerFactionRequest
protected void OnPlayerFactionRequest(SCR_PlayerFactionAffiliationComponent component, int factionIndex)
Callback when player requests a faction.
Definition: SCR_DeployMenuBase.c:723
SCR_FormatHelper
Definition: SCR_FormatHelper.c:1
m_wLoadingSpinner
protected Widget m_wLoadingSpinner
Definition: SCR_DeployMenuBase.c:115
SCR_UISoundEntity
Definition: SCR_UISoundEntity.c:7
OnRespawnRequest
protected void OnRespawnRequest(SCR_SpawnRequestComponent requestComponent)
Callback when respawn request was sent for the player.
Definition: SCR_DeployMenuBase.c:801
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
PauseMenuUI
Definition: SCR_PauseMenuUI.c:2
HideLoading
protected void HideLoading()
Hides loading spinner widget.
Definition: SCR_DeployMenuBase.c:688
EEntityCatalogType
EEntityCatalogType
Definition: EEntityCatalogType.c:4
SCR_SoundEvent
Definition: SCR_SoundEvent.c:1
SCR_ChatPanelManager
Definition: SCR_ChatPanelManager.c:12
SCR_DeployMenuHandler
Definition: SCR_DeployMenuHandler.c:6
OpenGroupMenu
protected void OpenGroupMenu()
Definition: SCR_DeployMenuBase.c:839
OnCanRespawnRequestResponse
protected void OnCanRespawnRequestResponse(SCR_SpawnRequestComponent requestComponent, SCR_ESpawnResult response, SCR_SpawnData data)
Definition: SCR_DeployMenuBase.c:472
PrevSpawn
protected void PrevSpawn()
Select previous available spawn point.
Definition: SCR_DeployMenuBase.c:336
OnLocalPlayerGroupJoined
protected void OnLocalPlayerGroupJoined(SCR_AIGroup group)
Callback when player joins a group.
Definition: SCR_DeployMenuBase.c:608
SCR_SpawnPoint
Spawn point entity defines positions on which players can possibly spawn.
Definition: SCR_SpawnPoint.c:27
OnMenuUpdate
override void OnMenuUpdate(float tDelta)
Definition: SCR_DeployMenuBase.c:370
ResetRespawnResultVars
protected void ResetRespawnResultVars()
Definition: SCR_DeployMenuBase.c:463
m_FactionManager
protected FactionManager m_FactionManager
Definition: SCR_DeployMenuBase.c:118
OnMenuOpened
override void OnMenuOpened()
Definition: SCR_DeployMenuBase.c:343
m_RespawnSystemComp
protected SCR_RespawnSystemComponent m_RespawnSystemComp
Definition: SCR_DeployMenuBase.c:134
m_PlyFactionAffilComp
protected SCR_PlayerFactionAffiliationComponent m_PlyFactionAffilComp
Definition: SCR_DeployMenuBase.c:119
GetRootWidget
Widget GetRootWidget()
Definition: SCR_UITaskManagerComponent.c:160
m_ActiveRespawnTimer
protected SCR_RespawnTimerComponent m_ActiveRespawnTimer
Definition: SCR_DeployMenuBase.c:128
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition: SCR_BaseGameModeComponent.c:15
SCR_SpawnData
Definition: SCR_SpawnData.c:9
SCR_DeployButton
Component that handles the request respawn button.
Definition: SCR_DeployMenuBase.c:869
m_LoadingSpinner
protected SCR_LoadingSpinner m_LoadingSpinner
Definition: SCR_DeployMenuBase.c:116
m_PlyLoadoutComp
protected SCR_PlayerLoadoutComponent m_PlyLoadoutComp
Definition: SCR_DeployMenuBase.c:121
m_RespawnButton
protected SCR_DeployButton m_RespawnButton
Definition: SCR_DeployMenuBase.c:124
m_TimedSpawnPointTimer
protected SCR_TimedSpawnPointComponent m_TimedSpawnPointTimer
Definition: SCR_DeployMenuBase.c:130
m_iSelectedSpawnPointId
protected RplId m_iSelectedSpawnPointId
Definition: SCR_DeployMenuBase.c:113
SCR_ChatPanel
Definition: SCR_ChatPanel.c:6
SCR_RespawnTimerComponent
void SCR_RespawnTimerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition: SCR_RespawnTimerComponent.c:333
Attribute
typedef Attribute
Post-process effect of scripted camera.
ETimeFormatParam
ETimeFormatParam
Definition: ETimeFormatParam.c:4
OnPlayerLoadoutRequest
protected void OnPlayerLoadoutRequest(SCR_PlayerLoadoutComponent component, int loadoutIndex)
Callback when player requests a loadout.
Definition: SCR_DeployMenuBase.c:741
HookEvents
protected void HookEvents()
Initialize necessary callbacks.
Definition: SCR_DeployMenuBase.c:565
m_bDisplayTime
protected bool m_bDisplayTime
Definition: SCR_DeployMenuBase.c:144
SetSpawnPointExt
protected void SetSpawnPointExt(RplId id)
Sets spawn point from an external source (ie. by clicking the spawn point icon).
Definition: SCR_DeployMenuBase.c:629
m_RespawnComponent
protected SCR_RespawnComponent m_RespawnComponent
Definition: SCR_DeployMenuBase.c:135
OnChatToggle
protected void OnChatToggle()
Toggle chat.
Definition: SCR_DeployMenuBase.c:779
m_bSuppliesEnabled
protected bool m_bSuppliesEnabled
Definition: SCR_DeployMenuBase.c:133
SCR_BaseSpawnPointRequestResultInfo
Definition: SCR_BaseSpawnPointRequestResultInfo.c:2
SCR_SpawnPointSpawnData
Definition: SCR_SpawnPointSpawnData.c:2
RequestRespawn
protected void RequestRespawn()
Sends a respawn request based on assigned loadout and selected spawn point.
Definition: SCR_DeployMenuBase.c:694
OnMenuClose
override void OnMenuClose()
Definition: SCR_DeployMenuBase.c:359
GetLoadoutCost
int GetLoadoutCost(SCR_PlayerLoadoutComponent component)
Definition: SCR_DeployMenuBase.c:157
SCR_DeployMenuBase
Base deploy menu class.
Definition: SCR_DeployMenuBase.c:3
SetSpawnPoint
protected void SetSpawnPoint(RplId id, bool smoothPan=true)
Sets the currently selected spawn point.
Definition: SCR_DeployMenuBase.c:642
m_fCurrentDeployTimeOut
protected float m_fCurrentDeployTimeOut
Definition: SCR_DeployMenuBase.c:153
m_GameMode
protected SCR_BaseGameMode m_GameMode
Definition: SCR_DeployMenuBase.c:111
SCR_EntityCatalogSpawnerData
Definition: SCR_EntityCatalogSpawnerData.c:5
SCR_MapEntity
Map entity.
Definition: SCR_MapEntity.c:20
FocusOnPoint
protected void FocusOnPoint(notnull SCR_SpawnPoint spawnPoint, bool smooth=true)
Centers map to a specific spawn point.
Definition: SCR_DeployMenuBase.c:668
FALLBACK_DEPLOY_STRING
const protected string FALLBACK_DEPLOY_STRING
Definition: SCR_DeployMenuBase.c:148
OnPauseMenu
protected void OnPauseMenu()
Opens pause menu.
Definition: SCR_DeployMenuBase.c:795
OnMapOpen
protected void OnMapOpen(MapConfiguration config)
Definition: SCR_DeployMenuBase.c:584
OnMenuFocusGained
override void OnMenuFocusGained()
Definition: SCR_DeployMenuBase.c:313
m_wMenuFrame
protected Widget m_wMenuFrame
Definition: SCR_DeployMenuBase.c:126
Faction
Definition: Faction.c:12
m_SpawnRequestManager
protected SCR_RespawnComponent m_SpawnRequestManager
Definition: SCR_DeployMenuBase.c:112
m_fCurrentCanSpawnUpdateTime
protected float m_fCurrentCanSpawnUpdateTime
Definition: SCR_DeployMenuBase.c:146
SCR_PlayerFactionAffiliationComponent
Definition: SCR_PlayerFactionAffiliationComponent.c:16
OnDeployMenuOpenInvoker
ScriptInvokerBase< OnDeployMenuOpenDelegate > OnDeployMenuOpenInvoker
Definition: SCR_PlayerDeployMenuHandlerComponent.c:3
OnPlayerLoadoutResponse
protected void OnPlayerLoadoutResponse(SCR_PlayerLoadoutComponent component, int loadoutIndex, bool response)
Callback when loadout request receives a response.
Definition: SCR_DeployMenuBase.c:747
SCR_GroupRequestUIComponent
Component responsible for handling group requests and visualization in deploy menu.
Definition: SCR_GroupRequestUIComponent.c:3
m_bCanRespawnAtSpawnPoint
protected bool m_bCanRespawnAtSpawnPoint
Definition: SCR_DeployMenuBase.c:141
ChimeraMenuPreset
ChimeraMenuPreset
Menu presets.
Definition: ChimeraMenuBase.c:3
m_iPlayerId
protected int m_iPlayerId
Definition: SCR_DeployMenuBase.c:137
SCR_AIGroup
Definition: SCR_AIGroup.c:68
m_bRespawnRequested
protected bool m_bRespawnRequested
Definition: SCR_DeployMenuBase.c:132
DEPLOY_TIME_OUT
const protected float DEPLOY_TIME_OUT
Definition: SCR_DeployMenuBase.c:154
data
Get all prefabs that have the spawner data
Definition: SCR_EntityCatalogManagerComponent.c:305
m_bMapContextAllowed
protected bool m_bMapContextAllowed
Definition: SCR_DeployMenuBase.c:139
FindRequestHandlers
protected void FindRequestHandlers()
Find all components in the layout that are needed in order for deploy menu to function correctly.
Definition: SCR_DeployMenuBase.c:543
AllowMapContext
void AllowMapContext(bool allow)
Sets map context active based on whether or not any of the selectors are focused with a gamepad.
Definition: SCR_DeployMenuBase.c:197
InitMapDeploy
protected void InitMapDeploy()
Initializes the map with deploy menu config.
Definition: SCR_DeployMenuBase.c:615
m_MenuHandler
SCR_DeployMenuBase m_MenuHandler
Main deploy menu with the map present.
SCR_MapUIElementContainer
Definition: SCR_MapUIElementContainer.c:1
m_sBackground
protected string m_sBackground
Definition: SCR_InventoryHitZonePointUI.c:381
m_UIInfoSpawnRequestResult
protected SCR_UIInfoSpawnRequestResult m_UIInfoSpawnRequestResult
Definition: SCR_DeployMenuBase.c:143
EMapEntityMode
EMapEntityMode
Mode of the map.
Definition: SCR_MapConstants.c:28
m_PlayerRespawnTimer
protected SCR_RespawnTimerComponent m_PlayerRespawnTimer
Definition: SCR_DeployMenuBase.c:129
m_iPreviousTime
protected int m_iPreviousTime
Definition: SCR_DeployMenuBase.c:131
OnMenuHide
override void OnMenuHide()
Definition: SCR_DeployMenuBase.c:289
UpdateRespawnButton
protected void UpdateRespawnButton()
Sets respawn button enabled based on certain conditions.
Definition: SCR_DeployMenuBase.c:826
SCR_BasePlayerLoadout
Definition: SCR_BasePlayerLoadout.c:2
m_wRespawnButton
protected Widget m_wRespawnButton
Definition: SCR_DeployMenuBase.c:123
m_SpawnPointRequestUIHandler
protected SCR_SpawnPointRequestUIComponent m_SpawnPointRequestUIHandler
Definition: SCR_DeployMenuBase.c:106
OnMenuFocusLost
override void OnMenuFocusLost()
Definition: SCR_DeployMenuBase.c:301
OnPlayerFactionSet
protected void OnPlayerFactionSet(Faction assignedFaction)
Definition: SCR_DeployMenuBase.c:762
NextSpawn
protected void NextSpawn()
Select next available spawn point.
Definition: SCR_DeployMenuBase.c:329
SCR_Faction
Definition: SCR_Faction.c:6
m_GroupRequestUIHandler
protected SCR_GroupRequestUIComponent m_GroupRequestUIHandler
Definition: SCR_DeployMenuBase.c:105
SCR_EntityCatalogEntry
Definition: SCR_EntityCatalogEntry.c:5
SCR_InputButtonComponent
Definition: SCR_InputButtonComponent.c:1
ArmaReforgerLoadingAnim
Definition: LoadingScreen.c:3
m_sText
class SCR_BaseEditorAttribute m_sText
SCR_UIInfoSpawnRequestResult
Definition: SCR_UIInfoSpawnRequestResult.c:2
CHECK_CAN_SPAWN_SPAWNPOINT_TIME
const protected float CHECK_CAN_SPAWN_SPAWNPOINT_TIME
Definition: SCR_DeployMenuBase.c:147
SCR_EditorManagerEntity
Definition: SCR_EditorManagerEntity.c:26