Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ScenarioFrameworkTriggerCountdownDisplay.c
Go to the documentation of this file.
1//------------------------------------------------------------------------------------------------
3class SCR_ScenarioFrameworkTriggerCountdownDisplay : SCR_InfoDisplayExtended
4{
8 protected float m_fTempTimeSlice;
10 protected float m_fTempWaitTime;
12
18
19 //------------------------------------------------------------------------------------------------
21 override void DisplayStartDraw(IEntity owner)
22 {
23 SCR_CharacterTriggerEntity.s_OnTriggerUpdated.Insert(RetrieveTriggerInfo);
24 SCR_CharacterTriggerEntity.s_OnTriggerUpdatedPlayerNotPresent.Insert(RetrieveCountInsideTrigger);
25 m_wInfoOverlay = m_wRoot.FindAnyWidget("Info");
26 m_wCountdownOverlay = m_wRoot.FindAnyWidget("Countdown");
27 ImageWidget leftFlag = ImageWidget.Cast(m_wRoot.FindAnyWidget("FlagSideBlue"));
28 ImageWidget rightFlag = ImageWidget.Cast(m_wRoot.FindAnyWidget("FlagSideRed"));
29 RichTextWidget leftScore = RichTextWidget.Cast(m_wRoot.FindAnyWidget("ScoreBlue"));
30 RichTextWidget rightScore = RichTextWidget.Cast(m_wRoot.FindAnyWidget("ScoreRed"));
31 RichTextWidget winScore = RichTextWidget.Cast(m_wRoot.FindAnyWidget("TargetScore"));
32 m_wCountdown = RichTextWidget.Cast(m_wRoot.FindAnyWidget("CountdownWin"));
33 m_wFlavour = RichTextWidget.Cast(m_wRoot.FindAnyWidget("FlavourText"));
34 ImageWidget winScoreSideLeft = ImageWidget.Cast(m_wRoot.FindAnyWidget("ObjectiveLeft"));
35 ImageWidget winScoreSideRight = ImageWidget.Cast(m_wRoot.FindAnyWidget("ObjectiveRight"));
36
37 m_wInfoOverlay.SetVisible(false);
38 leftFlag.SetVisible(false);
39 rightFlag.SetVisible(false);
40 leftScore.SetVisible(false);
41 rightScore.SetVisible(false);
42 winScore.SetVisible(false);
43 winScoreSideLeft.SetVisible(false);
44 winScoreSideRight.SetVisible(false);
45
46 ShowHUD(false);
47 m_bIsEnabled = false;
48 }
49
50 //------------------------------------------------------------------------------------------------
52 override void DisplayUpdate(IEntity owner, float timeSlice)
53 {
54 m_fTempTimeSlice += timeSlice;
55 if (m_fTempTimeSlice > 1 && m_fTempWaitTime > -1)
56 UpdateHUD();
57 }
58
59 //------------------------------------------------------------------------------------------------
61 protected void ShowHUD(bool show)
62 {
63 m_wFlavour.SetVisible(show);
64 m_wCountdown.SetVisible(show);
65 m_wInfoOverlay.SetVisible(show);
66 m_wCountdownOverlay.SetVisible(show);
67 }
68
69 //------------------------------------------------------------------------------------------------
71 void HandleHUD()
72 {
74 {
75 m_bIsEnabled = true;
76 }
77 else
78 {
79 m_bIsEnabled = false;
80 ShowHUD(false);
81 }
82 }
83
84 //------------------------------------------------------------------------------------------------
86 void RetrieveTriggerInfo(float activationCountdownTimer, float tempWaitTime, int playersCountByFactionInside, int playersCountByFaction, string playerActivationNotificationTitle, bool triggerConditionsStatus, float minimumPlayersNeededPercentage)
87 {
88 m_bTriggerConditionsStatus = triggerConditionsStatus;
89 m_iPlayersCountByFactionInside = playersCountByFactionInside;
90 m_iPlayersCountByFaction = playersCountByFaction;
91 m_fActivationCountdownTimer = activationCountdownTimer;
92 m_fTempWaitTime = tempWaitTime;
93 m_sPlayerActivationNotificationTitle = playerActivationNotificationTitle;
94 m_fMinimumPlayersNeededPercentage = minimumPlayersNeededPercentage;
95
96 HandleHUD();
97 }
98
99 //------------------------------------------------------------------------------------------------
101 void RetrieveCountInsideTrigger(int countInsideTrigger)
102 {
104 return;
105
106 m_iPlayersCountByFactionInside = countInsideTrigger;
107 HandleHUD();
108 }
109
110 //------------------------------------------------------------------------------------------------
112 protected void UpdateHUD()
113 {
115
117 if (neededNumber == 0)
118 neededNumber = 1;
119
120 string title = string.Format(WidgetManager.Translate(m_sPlayerActivationNotificationTitle), m_iPlayersCountByFactionInside, neededNumber);
121 string formattedTitle = string.Format("<color rgba=\"226,168,80,255\">%1</color>", title);
122
124 {
126 {
127 ShowHUD(false);
128 return;
129 }
130 m_wFlavour.SetText(formattedTitle);
131 ShowHUD(true);
132 m_wCountdownOverlay.SetVisible(false);
133 return;
134 }
135
136 string shownTime = SCR_FormatHelper.GetTimeFormatting(m_fTempWaitTime, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS, ETimeFormatParam.DAYS | ETimeFormatParam.HOURS | ETimeFormatParam.MINUTES);
137 m_wCountdown.SetText(shownTime);
138
139 m_wFlavour.SetText(formattedTitle);
140 ShowHUD(true);
141
142 if (m_fTempWaitTime <= 0)
143 {
144 ShowHUD(false);
145 m_bIsEnabled = false;
146 }
147 }
148};
ETimeFormatParam
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Widget m_wRoot
Definition Math.c:13
void UpdateHUD()
Updates HUD according to the values and conditions acquired from the trigger.
void RetrieveCountInsideTrigger(int countInsideTrigger)
Retrieves count inside trigger for turning off the HUD in cases where player owning this display is n...
void RetrieveTriggerInfo(float activationCountdownTimer, float tempWaitTime, int playersCountByFactionInside, int playersCountByFaction, string playerActivationNotificationTitle, bool triggerConditionsStatus, float minimumPlayersNeededPercentage)
Handles if HUD should be enabled or disabled.
void ShowHUD(bool show)
Toggles if HUD should be shown or hidden.
void HandleHUD()
Handles if HUD should be enabled or disabled.
override void DisplayStartDraw(IEntity owner)
Starts drawing the display.
override void DisplayUpdate(IEntity owner, float timeSlice)
Periodically updates the HUD.