Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_GameOverScreenManagerComponent.c
Go to the documentation of this file.
1
2[ComponentEditorProps(category: "GameScripted/GameOver", description: "")]
6
7class SCR_GameOverScreenManagerComponent : SCR_BaseGameModeComponent
8{
9 [Attribute()]
10 protected ref SCR_GameOverScreenConfig m_GameOverScreenConfig;
11
12 [Attribute("1", desc: "Delay (in seconds) to lock player input and display the actual end screen after end screen has faded in")]
13 protected float m_fShowEndscreenDelay;
14
15 [Attribute("{144919871D65F121}UI/layouts/HUD/GameOver/EndScreen/EndScreen.layout", params: "layout")]
17
19
20 //Editor only
21 protected bool m_bListeningToEditorCalledEndGame = false;
23 protected ref array<int> m_aEditorSetFactions = {};
24
25 //End game vars saved so it can be usesed in multiple function
27 protected bool m_bIsFactionVictory = false;
28 protected Faction m_FactionPlayer = null;
29 protected int m_iPlayerId = -1;
30 protected int m_iEndReason = 0;
31 protected ref array<Faction> m_aWinningFactions = {};
32 protected ref array<int> m_aWinningPlayers = {};
33 protected bool m_bIsPlayingGameOverAudio = false;
34
35 static const ref ScriptInvoker s_OnEndGame = new ScriptInvoker();
36
38
39 //------------------------------------------------------------------------------------------------
42 {
43 return m_GameOverScreenConfig;
44 }
45
46 //------------------------------------------------------------------------------------------------
50 {
51 m_sGameOverScreenOverwritePrefab = overWriteLayout;
52 }
53
54 //------------------------------------------------------------------------------------------------
58 protected void StartEndGameFade()
59 {
60 SetGameOverVariables(GetGameMode().GetEndGameData());
62 if (!hudManager)
63 return;
64
66
67 SCR_BaseGameOverScreenInfo gameOverScreenInfo;
68 if (m_GameOverScreenConfig.GetGameOverScreenInfo(m_iEndGameType, gameOverScreenInfo))
70
72 gameOverscreen = m_sGameOverScreenOverwritePrefab;
73
74 m_EndScreenFade = hudManager.CreateLayout(gameOverscreen, EHudLayers.ALWAYS_TOP, 0);
76
77 if (!fadeComponent)
78 {
79 Debug.Error2("SCR_GameOverScreenManagerComponent", "StartEndGameFade, could not find FadeUIComponent!");
80 return;
81 }
82
83 fadeComponent.GetOnFadeDone().Insert(OnEndScreenFadeDone);
84 fadeComponent.FadeIn();
85
86 // Hide other HUD elements
87 hudManager.SetVisibleLayers(hudManager.GetVisibleLayers() & ~(EHudLayers.HIGH));
88
89 //Play game over audio if has any and non are playing
91 return;
92
93 if (!gameOverScreenInfo)
94 {
95 Print(string.Format("SCR_GameOverScreenManagerComponent could not find end screen: %1, to play audio", typename.EnumToString(EGameOverTypes, m_iEndGameType)), LogLevel.WARNING);
96 return;
97 }
98
99 if (!gameOverScreenInfo.HasOptionalParams())
100 return;
101
103 s_OnEndGame.Invoke(gameOverScreenInfo.GetOneShotAudio(m_FactionPlayer, m_aWinningFactions));
104 else
105 s_OnEndGame.Invoke(gameOverScreenInfo.GetOneShotAudio(m_iPlayerId, m_aWinningPlayers));
106
107 if (gameOverScreenInfo.PauseGameOnGameOverScreen())
108 {
109 ChimeraWorld world = GetGame().GetWorld();
110 if (world)
111 world.PauseGameTime(true);
112 }
113
115 }
116
117 //------------------------------------------------------------------------------------------------
121 protected void OnEndScreenFadeDone(SCR_FadeUIComponent fadeComponent, bool isFadeIn)
122 {
123 //Close all dialogs
124 GetGame().GetMenuManager().CloseAllMenus();
125 GetGame().GetCallqueue().CallLater(ShowGameOverScreen, m_fShowEndscreenDelay * 1000, false, null);
126 }
127
128 //------------------------------------------------------------------------------------------------
133 {
134 //Remove the fade UI
135 if (m_EndScreenFade)
136 {
137 m_EndScreenFade.RemoveFromHierarchy();
138
139 // Unhide other HUD elements which we hid previously when we started the fade
141 if (hudManager)
142 hudManager.SetVisibleLayers(hudManager.GetVisibleLayers() | EHudLayers.HIGH);
143 }
144
145 if (!endData)
146 endData = GetGameMode().GetEndGameData();
147
148 if (m_iEndGameType == EGameOverTypes.UNKNOWN)
149 SetGameOverVariables(endData);
150
151 SCR_BaseGameOverScreenInfo gameOverScreenInfo;
152
153 //Get game over type
154 if (!m_GameOverScreenConfig.GetGameOverScreenInfo(m_iEndGameType, gameOverScreenInfo))
155 {
156 Print(string.Format("'SCR_GameOverScreenConfig': Could not find '%1' endscreen in array!", typename.EnumToString(EGameOverTypes, m_iEndGameType)), LogLevel.NORMAL);
157 return null;
158 }
159
160 if (gameOverScreenInfo.HasOptionalParams())
161 {
162 //Show end screen
164 {
166 s_OnEndGame.Invoke(gameOverScreenInfo.GetOneShotAudio(m_FactionPlayer, m_aWinningFactions));
167
169 gameOverScreenInfo.GameOverUICustomization(gameOverScreen, m_FactionPlayer, m_aWinningFactions);
170 return gameOverScreen;
171 }
172 else
173 {
175 s_OnEndGame.Invoke(gameOverScreenInfo.GetOneShotAudio(m_iPlayerId, m_aWinningPlayers));
176
177 SCR_GameOverScreenUIComponent gameOverScreen = OpenGameOverScreen(gameOverScreenInfo.GetGameOverContentLayout(), gameOverScreenInfo, endData, gameOverScreenInfo.GetTitle(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetSubtitle(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetDebriefing(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetImage(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetIcon(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetVignetteColor(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetTitleParam(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetSubtitleParam(m_iPlayerId, m_aWinningPlayers), gameOverScreenInfo.GetDebriefingParam(m_iPlayerId, m_aWinningPlayers));
178 gameOverScreenInfo.GameOverUICustomization(gameOverScreen, m_iPlayerId, m_aWinningPlayers);
179 return gameOverScreen;
180 }
181 }
182 else
183 {
185 {
186 SCR_GameOverScreenUIComponent gameOverScreen = OpenGameOverScreen(gameOverScreenInfo.GetGameOverContentLayout(), gameOverScreenInfo, endData, gameOverScreenInfo.GetTitle(m_FactionPlayer, m_aWinningFactions));
187 gameOverScreenInfo.GameOverUICustomization(gameOverScreen, m_FactionPlayer, m_aWinningFactions);
188 return gameOverScreen;
189 }
190 else
191 {
192 SCR_GameOverScreenUIComponent gameOverScreen = OpenGameOverScreen(gameOverScreenInfo.GetGameOverContentLayout(), gameOverScreenInfo, endData, gameOverScreenInfo.GetTitle(m_iPlayerId, m_aWinningPlayers));
193 gameOverScreenInfo.GameOverUICustomization(gameOverScreen, m_iPlayerId, m_aWinningPlayers);
194 return gameOverScreen;
195 }
196 }
197
198 //Makes sure set game over varriables are set again next time end game is called
200 }
201
202 //------------------------------------------------------------------------------------------------
205 protected void SetGameOverVariables(SCR_GameModeEndData endData = null)
206 {
209 m_FactionPlayer = null;
210 m_iPlayerId = -1;
211 m_iEndReason = 0;
212 m_aWinningFactions.Clear();
213 m_aWinningPlayers.Clear();
214 m_bIsFactionVictory = false;
215
216 FactionManager factionManager = GetGame().GetFactionManager();
217 PlayerManager playerManager = GetGame().GetPlayerManager();
218
219 if (!endData)
220 endData = GetGameMode().GetEndGameData();
221
222 if (endData != null)
223 {
224 m_iEndReason = endData.GetEndReason();
225
226 if (factionManager)
227 {
228 array<int> winningFactionIds = {};
229 endData.GetFactionWinnerIds(winningFactionIds);
230
231 if (winningFactionIds)
232 {
233 Faction factionVictor;
234
235 foreach (int id: winningFactionIds)
236 {
237 factionVictor = factionManager.GetFactionByIndex(id);
238 if (factionVictor)
239 m_aWinningFactions.Insert(factionVictor);
240 }
241 }
242 }
243
244 endData.GetWinnerIds(m_aWinningPlayers);
245
247 }
248
249 if (playerManager)
250 {
252 if (pc)
253 {
254 m_iPlayerId = pc.GetPlayerId();
255
256 SCR_FactionManager scrFactionManager = SCR_FactionManager.Cast(factionManager);
257 if (scrFactionManager)
258 m_FactionPlayer = scrFactionManager.GetLocalPlayerFaction();
259 else
260 m_FactionPlayer = null;
261 }
262 }
263
265 if (!m_bIsFactionVictory && m_iEndReason == EGameOverTypes.EDITOR_FACTION_DRAW && gameMode.GetRemainingTime() <= 0 && m_aWinningFactions.IsEmpty())
266 {
268 if (scoringSystem)
269 {
270 array<Faction> factions = {};
271 int count = GetGame().GetFactionManager().GetFactionsList(factions);
272
273 SCR_Faction scrfaction;
274 for (int i = count - 1; i >= 0; i--)
275 {
276 scrfaction = SCR_Faction.Cast(factions[i]);
277 if (!scrfaction.IsPlayable())
278 factions.RemoveOrdered(i);
279 }
280
281 if (factions.Count() == 2)
282 {
283 int scoreA = scoringSystem.GetFactionScore(factions[0]);
284 int scoreB = scoringSystem.GetFactionScore(factions[1]);
285
286 if (scoreA > scoreB)
287 {
288 m_bIsFactionVictory = true;
289 m_aWinningFactions.Insert(factions[0]);
290 m_iEndReason = EGameOverTypes.ENDREASON_SCORELIMIT;
291 }
292 else if (scoreB > scoreA)
293 {
294 m_bIsFactionVictory = true;
295 m_aWinningFactions.Insert(factions[1]);
296 m_iEndReason = EGameOverTypes.ENDREASON_SCORELIMIT;
297 }
298 else
299 {
300 m_iEndReason = EGameOverTypes.FACTION_DRAW;
301 }
302 }
303 }
304 }
305
306 //Get the type of game over using given data
308 }
309
310 //---- REFACTOR NOTE START: SCR_GameModeEndData and this method use different values for endReason which is unified with these enums. Not ideal, should be done in the SCR_GameModeEndData ----
311 //------------------------------------------------------------------------------------------------
320 protected EGameOverTypes GetGameOverType(int endReason, int playerId, array<int> winningPlayers, Faction factionPlayer, array<Faction> factionsVictor, bool isFactionVictory)
321 {
323
324 //-1: ENDREASON_UNDEFINED: Undefined
325 if (endReason == EGameOverTypes.ENDREASON_UNDEFINED)
326 {
327 return EGameOverTypes.NEUTRAL;
328 }
329 //-2: ENDREASON_TIMELIMIT: Time limit reached
330 else if (endReason == EGameOverTypes.ENDREASON_TIMELIMIT)
331 {
332 if (isFactionVictory)
333 {
334 if (!factionPlayer)
335 return EGameOverTypes.FACTION_NEUTRAL;
336 else if (factionsVictor.Contains(factionPlayer))
337 return EGameOverTypes.FACTION_VICTORY_TIME;
338 else
339 return EGameOverTypes.FACTION_DEFEAT_TIME;
340 }
341 else
342 {
343 if (winningPlayers.Contains(playerId))
344 return EGameOverTypes.DEATHMATCH_VICTORY_TIME;
345 else
346 return EGameOverTypes.DEATHMATCH_DEFEAT_TIME;
347 }
348
349 }
350 //-3: ENDREASON_SCORELIMIT: Score limit reached
351 else if (endReason == EGameOverTypes.ENDREASON_SCORELIMIT)
352 {
353 if (isFactionVictory)
354 {
355 if (!factionPlayer)
356 return EGameOverTypes.FACTION_NEUTRAL;
357 else if (factionsVictor.Contains(factionPlayer))
358 return EGameOverTypes.FACTION_VICTORY_SCORE;
359 else
360 return EGameOverTypes.FACTION_DEFEAT_SCORE;
361 }
362 else
363 {
364 if (winningPlayers.Contains(playerId))
365 return EGameOverTypes.DEATHMATCH_VICTORY_SCORE;
366 else
367 return EGameOverTypes.DEATHMATCH_DEFEAT_SCORE;
368 }
369 }
370 //-4: ENDREASON_DRAW
371 else if (endReason == EGameOverTypes.ENDREASON_DRAW)
372 {
373 if (isFactionVictory)
374 {
375 if (!factionPlayer)
376 return EGameOverTypes.FACTION_NEUTRAL;
377 else
378 return EGameOverTypes.FACTION_DRAW;
379 }
380 else
381 {
382 return EGameOverTypes.DEATHMATCH_DRAW;
383 }
384 }
386 else if (endReason == EGameOverTypes.SERVER_RESTART)
387 {
388 return EGameOverTypes.SERVER_RESTART;
389 }
391 //Editor Victory
392 else if (endReason == EGameOverTypes.EDITOR_FACTION_VICTORY)
393 {
394 if (!factionPlayer)
395 return EGameOverTypes.EDITOR_FACTION_NEUTRAL;
396 else if (factionsVictor.Contains(factionPlayer))
397 return EGameOverTypes.EDITOR_FACTION_VICTORY;
398 else
399 return EGameOverTypes.EDITOR_FACTION_DEFEAT;
400 }
401 //Editor Draw
402 else if (endReason == EGameOverTypes.EDITOR_FACTION_DRAW)
403 {
404 if (!factionPlayer)
405 return EGameOverTypes.EDITOR_FACTION_NEUTRAL;
406 else
407 return EGameOverTypes.EDITOR_FACTION_DRAW;
408 }
410 else
411 {
412 return endReason;
413 }
414 }
415 //---- REFACTOR NOTE END ----
416
417 //------------------------------------------------------------------------------------------------
424
425 //------------------------------------------------------------------------------------------------
440 SCR_GameOverScreenUIComponent OpenGameOverScreen(ResourceName contentLayout, SCR_BaseGameOverScreenInfo gameOverInfo, SCR_GameModeEndData endData, LocalizedString title = string.Empty, LocalizedString subtitle = string.Empty, LocalizedString debriefing = string.Empty, ResourceName imageTexture = ResourceName.Empty, ResourceName icon = ResourceName.Empty, Color vignetteColor = null, string titleParam = string.Empty, string subtitleParam = string.Empty, string debriefingParam = string.Empty)
441 {
443 if (!hudManager)
444 return null;
445
446 //This is just temporary hopefully. This bypasses a lot of the code here and in other files. If one wants to change the layout, do it in Menu Config.
447 MenuBase menu = GetGame().GetMenuManager().OpenMenu(ChimeraMenuPreset.EndgameScreen, 0, true);
448
450
452 gameOverscreen = m_sGameOverScreenOverwritePrefab;
453
454 Widget screen = GetGame().GetWorkspace().CreateWidgets(gameOverscreen, menu.GetRootWidget());
455
457
458 if (screenUIComponent)
459 {
460 SCR_GameOverScreenUIContentData content = new SCR_GameOverScreenUIContentData(contentLayout, gameOverInfo, endData, title, subtitle, debriefing, imageTexture, icon, vignetteColor, titleParam, subtitleParam, debriefingParam);
461 screenUIComponent.InitGameOverScreen(content);
462 }
463
464 return screenUIComponent;
465 }
466
468
469 //------------------------------------------------------------------------------------------------
471 {
473
475 if (!gamemode)
476 return;
477
478 SCR_BaseGameOverScreenInfo gameOverInfo = m_GameOverScreenConfig.GetGameOverInfo(m_iEditorSetGameOverType);
479 if (!gameOverInfo)
480 {
481 gameOverInfo = m_GameOverScreenConfig.GetGameOverInfo(EGameOverTypes.EDITOR_NEUTRAL);
482 //~ Could not find game over so used EDITOR_NEUTRAL
483 if (gameOverInfo)
484 {
486 Print(string.Format("SCR_GameOverScreenManagerComponent could not find end screen: %1, so EDITOR_NEUTRAL is used instead", typename.EnumToString(EGameOverTypes, m_iEditorSetGameOverType)), LogLevel.ERROR);
487 }
488 //~ Could not find EDITOR_NEUTRAL either
489 else
490 {
491 //~ Try to find NEUTRAL
492 gameOverInfo = m_GameOverScreenConfig.GetGameOverInfo(EGameOverTypes.NEUTRAL);
493 if (gameOverInfo)
494 {
496 Print(string.Format("SCR_GameOverScreenManagerComponent could not find end screen: %1 and EDITOR_NEUTRAL could not be found so NEUTRAL is used instead", typename.EnumToString(EGameOverTypes, m_iEditorSetGameOverType)), LogLevel.ERROR);
497 }
498 //~ Even NEUTRAL could not be found for some reason
499 else
500 {
501 Print(string.Format("SCR_GameOverScreenManagerComponent could not find end screen: %1 nor EDITOR_NEUTRAL or NEUTRAL. Check if the config is set up correctly!", typename.EnumToString(EGameOverTypes, m_iEditorSetGameOverType)), LogLevel.ERROR);
502 return;
503 }
504 }
505 }
506
507 SCR_BaseGameOverScreenInfoEditor optionalEditorParam = gameOverInfo.GetEditorOptionalParams();
508
509 if (!optionalEditorParam || !optionalEditorParam.m_bNeedsPlayableFactions)
511 else
513
514 //Clear vars
515 m_aEditorSetFactions.Clear();
517 }
518
519 //------------------------------------------------------------------------------------------------
523 {
524 m_iEditorSetGameOverType = gameOverType;
525
527 {
529 GetGame().GetCallqueue().CallLater(OnEditorEndGameApplyDelayDone, 1);
530 }
531 }
532
533 //------------------------------------------------------------------------------------------------
536 void SetEditorGameOverFactions(notnull array<int> factions)
537 {
538 m_aEditorSetFactions = factions;
539
541 {
543 GetGame().GetCallqueue().CallLater(OnEditorEndGameApplyDelayDone, 1);
544 }
545 }
546
547 //------------------------------------------------------------------------------------------------
548 // When game ends
550 {
551 //If called on init HUD Manager might not exist so call it with a delay
552 if (!GetGame().GetHUDManager())
553 {
554 GetGame().GetCallqueue().CallLater(OnInitDelayedEndGame, 1000);
555 return;
556 }
558 }
559
560 //------------------------------------------------------------------------------------------------
561 protected void OnInitDelayedEndGame()
562 {
564 }
565
566 //------------------------------------------------------------------------------------------------
567 override void OnPostInit(IEntity owner)
568 {
569 }
570}
571
572class SCR_GameOverScreenUIContentData
573{
574 ResourceName m_sGameOverLayout;
575 SCR_BaseGameOverScreenInfo m_GameOverInfo;
576 ref SCR_GameModeEndData m_EndGameData;
577 LocalizedString m_sTitle;
578 LocalizedString m_sSubtitle;
579 LocalizedString m_sDebriefing;
580 ResourceName m_sImageTexture;
581 ResourceName m_sIcon;
582 Color m_cVignetteColor;
583 string m_sTitleParam;
584 string m_sSubtitleParam;
585 string m_sDebriefingParam;
586
587 //------------------------------------------------------------------------------------------------
588 // constructor
601 void SCR_GameOverScreenUIContentData(ResourceName gameOverLayout, SCR_BaseGameOverScreenInfo gameOverInfo, SCR_GameModeEndData endGameData, LocalizedString title = string.Empty, LocalizedString subtitle = string.Empty, LocalizedString debriefing = string.Empty, ResourceName imageTexture = ResourceName.Empty, ResourceName icon = ResourceName.Empty, Color vignetteColor = null, string titleParam = string.Empty, string subtitleParam = string.Empty, string debriefingParam = string.Empty)
602 {
603 m_sGameOverLayout = gameOverLayout;
604 m_GameOverInfo = gameOverInfo;
605 m_EndGameData = endGameData;
606 m_sTitle = title;
607 m_sSubtitle = subtitle;
608 m_sDebriefing = debriefing;
609 m_sImageTexture = imageTexture;
610 m_sIcon = icon;
611 m_cVignetteColor = vignetteColor;
612 m_sTitleParam = titleParam;
613 m_sSubtitleParam = subtitleParam;
614 m_sDebriefingParam = debriefingParam;
615 }
616}
class RestAPIHelper< JsonApiStruct T > content
ChimeraMenuPreset
Menu presets.
EGameOverTypes
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_HUDManagerComponent GetHUDManager()
Definition game.c:1151
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
override void OnGameModeEnd(SCR_GameModeEndData data)
SCR_BaseGameMode GetGameMode()
void SCR_BaseGameModeComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Get all prefabs that have the spawner data
void SCR_FactionManager(IEntitySource src, IEntity parent)
SCR_GameOverScreenUIComponent ShowGameOverScreen(SCR_GameModeEndData endData=null)
EGameOverTypes m_iEditorSetGameOverType
void SetGameOverVariables(SCR_GameModeEndData endData=null)
bool m_bListeningToEditorCalledEndGame
ref array< Faction > m_aWinningFactions
void SetEditorGameOverFactions(notnull array< int > factions)
ResourceName m_sGameOverScreenBasePrefab
ref array< int > m_aEditorSetFactions
EGameOverTypes GetGameOverType(int endReason, int playerId, array< int > winningPlayers, Faction factionPlayer, array< Faction > factionsVictor, bool isFactionVictory)
SCR_GameOverScreenUIComponent OpenGameOverScreen(ResourceName contentLayout, SCR_BaseGameOverScreenInfo gameOverInfo, SCR_GameModeEndData endData, LocalizedString title=string.Empty, LocalizedString subtitle=string.Empty, LocalizedString debriefing=string.Empty, ResourceName imageTexture=ResourceName.Empty, ResourceName icon=ResourceName.Empty, Color vignetteColor=null, string titleParam=string.Empty, string subtitleParam=string.Empty, string debriefingParam=string.Empty)
EGameOverTypes GetCurrentGameOverType()
void OnEditorEndGameApplyDelayDone()
EGameOverTypes m_iEndGameType
void SetGameOverScreenOverWrite(ResourceName overWriteLayout)
ResourceName m_sGameOverScreenOverwritePrefab
void OnEndScreenFadeDone(SCR_FadeUIComponent fadeComponent, bool isFadeIn)
SCR_GameOverScreenConfig GetGameOverConfig()
void SetEditorGameOverType(EGameOverTypes gameOverType)
ref array< int > m_aWinningPlayers
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition Color.c:13
Definition Debug.c:13
void EndGameMode(SCR_GameModeEndData endData)
SCR_BaseScoringSystemComponent GetScoringSystemComponent()
SCR_GameModeEndData GetEndGameData()
string GetTitleParam(Faction factionPlayer, array< Faction > factionsOther)
string GetSubtitleParam(Faction factionPlayer, array< Faction > factionsOther)
void GameOverUICustomization(SCR_GameOverScreenUIComponent gameOverUI, Faction factionPlayer, array< Faction > factionsOther)
ResourceName GetBaseGameOverScreenOverwrite()
Returns whether game over layout should overwrite whole gameover screen.
string GetSubtitle(Faction factionPlayer, array< Faction > factionsOther)
string GetTitle(Faction factionPlayer, array< Faction > factionsOther)
SCR_BaseGameOverScreenInfoEditor GetEditorOptionalParams()
Color GetVignetteColor(Faction factionPlayer, array< Faction > factionsOther)
string GetOneShotAudio(Faction factionPlayer, array< Faction > factionsOther)
string GetDebriefingParam(Faction factionPlayer, array< Faction > factionsOther)
string GetDebriefing(Faction factionPlayer, array< Faction > factionsOther)
ResourceName GetImage(Faction factionPlayer, array< Faction > factionsOther)
ResourceName GetIcon(Faction factionPlayer, array< Faction > factionsOther)
bool PauseGameOnGameOverScreen()
Returns whether game should be paused with Game over screen.
bool IsPlayable()
ScriptInvoker GetOnFadeDone()
void FadeIn(bool setOpacityZero=true)
Handles the showing of end screen and has a config with gameover screens.
void InitGameOverScreen(SCR_GameOverScreenUIContentData endScreenUIContent)
void SetVisibleLayers(EHudLayers layers=-1)
static SCR_HUDManagerComponent GetHUDManager()
Widget CreateLayout(ResourceName path, EHudLayers layer, int zOrder=0)
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
Definition LogLevel.c:14
SCR_FieldOfViewSettings Attribute
proto external PlayerController GetPlayerController()
ScriptInvokerBase< func > ScriptInvoker
Definition tools.c:134