Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_WelcomeScreenMenu.c
Go to the documentation of this file.
1//------------------------------------------------------------------------------------------------
4{
10 protected string m_sTimeElapsed;
11 protected float m_fTimeSlice;
12 protected int m_iMaxPlayerCount;
13
14 //------------------------------------------------------------------------------------------------
16 override void OnMenuOpen()
17 {
18 super.OnMenuOpen();
19
21 m_PlayerManager = GetGame().GetPlayerManager();
23
24 SCR_WelcomeScreenComponent welcomeScreen = SCR_WelcomeScreenComponent.Cast(m_GameMode.FindComponent(SCR_WelcomeScreenComponent));
25 if (!welcomeScreen)
26 {
27 Close();
28 return;
29 }
30
31 /*RichTextWidget scenarioTitle = RichTextWidget.Cast(GetRootWidget().FindAnyWidget("DeploySetup"));
32 if (scenarioTitle)
33 scenarioTitle.SetText(welcomeScreen.GetHeaderTitle());
34
35 RichTextWidget scenarioSubtitle = RichTextWidget.Cast(GetRootWidget().FindAnyWidget("HeaderSubtitle"));
36 if (scenarioSubtitle)
37 scenarioSubtitle.SetText(welcomeScreen.GetHeaderSubtitle()); */
38
39 ServerInfo serverInfo = GetGame().GetServerInfo();
40 if (serverInfo)
41 m_iMaxPlayerCount = serverInfo.GetPlayerLimit();
42
43 m_wPlayerCount = RichTextWidget.Cast(GetRootWidget().FindAnyWidget("PlayerCount"));
45
46 m_wScenarioTimeElapsed = RichTextWidget.Cast(GetRootWidget().FindAnyWidget("TimeElapsed"));
47
48 Widget continueBtn = GetRootWidget().FindAnyWidget("CloseButton");
49 if (continueBtn)
50 {
51 SCR_InputButtonComponent continueButton = SCR_InputButtonComponent.Cast(continueBtn.FindHandler(SCR_InputButtonComponent));
52 if (continueButton)
53 continueButton.m_OnActivated.Insert(CloseWelcomeScreenMenu);
54 }
55
56 Widget pauseMenuBtn = GetRootWidget().FindAnyWidget("PauseButton");
57 if (pauseMenuBtn)
58 {
59 SCR_InputButtonComponent pauseMenuButton = SCR_InputButtonComponent.Cast(pauseMenuBtn.FindHandler(SCR_InputButtonComponent));
60 if (pauseMenuButton)
61 pauseMenuButton.m_OnActivated.Insert(OpenPauseMenu);
62 }
63
64 Widget chat = GetRootWidget().FindAnyWidget("ChatPanel");
65 if (chat)
66 m_ChatPanel = SCR_ChatPanel.Cast(chat.FindHandler(SCR_ChatPanel));
67
69 if (m_ChatButton)
70 m_ChatButton.m_OnActivated.Insert(OnChatToggle);
71
73 SCR_DeployMenuBaseScreenLayout baseLayout = welcomeScreen.GetBaseLayout();
74 if (!baseLayout)
75 return;
76
77 baseLayout.InitContent(this);
78
79 InitMap();
80
82 gameMode.PauseGame(true, SCR_EPauseReason.MENU);
83 }
84
85 //------------------------------------------------------------------------------------------------
87 override void OnMenuOpened()
88 {
89 // Mute sounds
90 // If menu is opened before loading screen is closed, wait for closing
91 if (ArmaReforgerLoadingAnim.IsOpen())
93 else
94 MuteSounds();
95 }
96
97 //------------------------------------------------------------------------------------------------
98 override void OnMenuClose()
99 {
100 super.OnMenuClose();
101
103 if (!gameMode)
104 return;
105
106 gameMode.PauseGame(false, SCR_EPauseReason.MENU);
107 }
108
109 //------------------------------------------------------------------------------------------------
111 protected void InitMap()
112 {
113 if (!m_MapEntity)
114 return;
115 const ResourceName conf = "{A786DD4868598F15}Configs/Map/MapPlain.conf"; // TODO: check for good const usage
116 m_MapEntity.OpenMap(m_MapEntity.SetupMapConfig(EMapEntityMode.PLAIN, conf, GetRootWidget()));
117 }
118
119 //------------------------------------------------------------------------------------------------
121 override void OnMenuFocusGained()
122 {
123 SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
124 if (editorManager)
125 editorManager.AutoInit();
126
127 GetGame().GetInputManager().AddActionListener("ShowScoreboard", EActionTrigger.DOWN, OpenPlayerList);
128
129 super.OnMenuFocusGained();
130 }
131
132 //------------------------------------------------------------------------------------------------
134 override void OnMenuFocusLost()
135 {
136 GetGame().GetInputManager().RemoveActionListener("ShowScoreboard", EActionTrigger.DOWN, OpenPlayerList);
137
138 super.OnMenuFocusLost();
139 }
140
141 //------------------------------------------------------------------------------------------------
143 protected void OpenPauseMenu()
144 {
145 MenuBase menu = GetGame().GetMenuManager().OpenMenu(ChimeraMenuPreset.PauseMenu, 0, true, false);
146
147 PauseMenuUI pauseMenu = PauseMenuUI.Cast(menu);
148 if (pauseMenu)
149 {
150 pauseMenu.FadeBackground(true, true);
151 pauseMenu.DisableSettings();
152 }
153 }
154
155 //------------------------------------------------------------------------------------------------
158 {
159 GetGame().GetMenuManager().OpenMenu(ChimeraMenuPreset.WelcomeScreenMenu);
160 }
161
162 //------------------------------------------------------------------------------------------------
165 {
166 GetGame().GetMenuManager().CloseMenuByPreset(ChimeraMenuPreset.WelcomeScreenMenu);
167
168 PlayerController playerController = GetGame().GetPlayerController();
169 SCR_PlayerDeployMenuHandlerComponent deployMenu = SCR_PlayerDeployMenuHandlerComponent.Cast(playerController.FindComponent(SCR_PlayerDeployMenuHandlerComponent));
170 if (deployMenu)
171 deployMenu.SetWelcomeClosed();
172 }
173
174 //------------------------------------------------------------------------------------------------
176 override void OnMenuUpdate(float tDelta)
177 {
178 super.OnMenuUpdate(tDelta);
179
180 GetGame().GetInputManager().ActivateContext("DeployMenuContext");
181 GetGame().GetInputManager().ActivateContext("MenuWithEditorContext");
182
183 if (m_ChatPanel)
184 m_ChatPanel.OnUpdateChat(tDelta);
185
186 m_fTimeSlice += tDelta;
187 if (m_fTimeSlice > 1)
189 }
190
191 //------------------------------------------------------------------------------------------------
193 protected void OnChatToggle()
194 {
195 if (!m_ChatPanel)
196 {
197 Widget chat = GetRootWidget().FindAnyWidget("ChatPanel");
198 if (chat)
199 m_ChatPanel = SCR_ChatPanel.Cast(chat.FindHandler(SCR_ChatPanel));
200 }
201
202 if (!m_ChatPanel || m_ChatPanel.IsOpen())
203 return;
204
206
207 if (!chatPanelManager)
208 return;
209
211 }
212
213 //------------------------------------------------------------------------------------------------
215 protected void UpdateElapsedTime()
216 {
217 m_fTimeSlice = 0;
218 m_sTimeElapsed = SCR_FormatHelper.FormatTime(m_GameMode.GetElapsedTime());
221 }
222
223 //------------------------------------------------------------------------------------------------
225 protected void UpdatePlayerCount(int playerID)
226 {
227 if (m_iMaxPlayerCount > 0)
228 m_wPlayerCount.SetTextFormat("%1/%2", m_PlayerManager.GetPlayerCount().ToString(), m_iMaxPlayerCount);
229 else
230 m_wPlayerCount.SetText(m_PlayerManager.GetPlayerCount().ToString());
231 }
232}
ChimeraMenuPreset
Menu presets.
SCR_EPauseReason
Definition EPauseReason.c:2
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_BaseGameMode GetGameMode()
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
EMapEntityMode
Mode of the map.
Widget GetRootWidget()
Configs ServerBrowser KickDialogs conf
proto native void Close()
static ref ScriptInvoker m_onExitLoadingScreen
bool PauseGame(bool pause, SCR_EPauseReason reason=SCR_EPauseReason.SYSTEM)
static SCR_ChatPanelManager GetInstance()
Returns SCR_ChatPanelManager instance.
void ToggleChatPanel(notnull SCR_ChatPanel panel)
Toggles the chat panel: opens if it's closed, closes if it's open.
Base deploy menu class.
void MuteSounds(bool mute=true)
SCR_InputButtonComponent m_ChatButton
SCR_MapEntity m_MapEntity
SCR_ChatPanel m_ChatPanel
Base class for Deploy menu layouts.
void InitContent(SCR_WelcomeScreenMenu menu)
static SCR_InputButtonComponent GetInputButtonComponent(string name, notnull Widget parent, bool searchAllChildren=true)
static SCR_MapEntity GetMapInstance()
Get map entity instance.
Class that handles Welcome screen menu.
void OnChatToggle()
Toggles chat panel.
void CloseWelcomeScreenMenu()
Closes Welcome screen menu.
override void OnMenuFocusLost()
Removes action listeners when menu loses focus.
void UpdateElapsedTime()
Updates elapsed time.
void UpdatePlayerCount(int playerID)
Updates player count.
override void OnMenuOpened()
Mutes sounds once the menu is opened.
void InitMap()
Initializes map in the menu background.
void OpenPauseMenu()
Opens pause menu.
override void OnMenuOpen()
Initializes necessary parts of menu upon opening it.
override void OnMenuUpdate(float tDelta)
Refreshes chat and elapsed time.
override void OnMenuFocusGained()
Adds action listeners when menu is focused.
void OpenWelcomeScreenMenu()
Opens Welcome screen menu.
RichTextWidget m_wScenarioTimeElapsed
ref MapConfiguration m_MapConfig
EActionTrigger