Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_MainMenuTileComponent.c
Go to the documentation of this file.
2{
3 protected const int THUMBNAIL_LOCALSCALE = 1920;
4
7
8 protected TextWidget m_wName;
13
17
21
22 protected bool m_bFocused;
23 protected bool m_bDisabled;
24
25 protected bool m_bIsTutorialNeeded;
27
28 //------------------------------------------------------------------------------------------------
29 override void HandlerAttached(Widget w)
30 {
31 super.HandlerAttached(w);
32
33 m_wName = TextWidget.Cast(w.FindAnyWidget("Name"));
34 m_wDescription = TextWidget.Cast(w.FindAnyWidget("Description"));
35 m_wDescription.SetVisible(false);
36
37 m_wTextContent = w.FindAnyWidget("TextSizeLayout");
38
39 m_wBackground = ImageWidget.Cast(w.FindAnyWidget("Shading"));
40 m_wBackground.SetVisible(false);
41
42 m_wNewIcon = ImageWidget.Cast(w.FindAnyWidget("NewIcon"));
43 m_wNewIcon.SetVisible(false);
44
45 m_wRecentIcon = ImageWidget.Cast(w.FindAnyWidget("RecentIcon"));
46 m_wRecentIcon.SetVisible(false);
47
48 m_wFavoriteIcon = ImageWidget.Cast(w.FindAnyWidget("FavoriteIcon"));
49 m_wFavoriteIcon.SetVisible(false);
50
51 m_DisabledTileShadow = w.FindAnyWidget("m_DisabledTileShadow");
52 m_DisabledTileShadow.SetVisible(false);
53
55 if (m_Play)
56 m_Play.m_OnActivated.Insert(OnPlay);
57
59 if (m_Continue)
60 m_Continue.m_OnActivated.Insert(OnContinue);
61
63 if (m_Restart)
64 m_Restart.m_OnActivated.Insert(OnRestart);
65
67
68 bool isMouseInteraction = GetGame().GetInputManager().GetLastUsedInputDevice() == EInputDeviceType.MOUSE;
69
70 UpdateButtonInputVisibility(m_Play.GetRootWidget(), !isMouseInteraction);
71 UpdateButtonInputVisibility(m_Continue.GetRootWidget(), !isMouseInteraction);
72 UpdateButtonInputVisibility(m_Restart.GetRootWidget(), !isMouseInteraction);
73
74 GetGame().OnInputDeviceUserChangedInvoker().Insert(OnInputDeviceUserChanged);
75 }
76
77 // React on switching between input methods
78 //------------------------------------------------------------------------------------------------
79 protected void OnInputDeviceUserChanged(EInputDeviceType oldDevice, EInputDeviceType newDevice)
80 {
81 if (m_bDisabled || newDevice == EInputDeviceType.TRACK_IR || newDevice == EInputDeviceType.JOYSTICK)
82 return;
83
84 bool isMouseInteraction = newDevice == EInputDeviceType.MOUSE;
85
86 UpdateButtonInputVisibility(m_Play.GetRootWidget(), !isMouseInteraction);
87 UpdateButtonInputVisibility(m_Continue.GetRootWidget(), !isMouseInteraction);
88 UpdateButtonInputVisibility(m_Restart.GetRootWidget(), !isMouseInteraction);
89 }
90
91 //------------------------------------------------------------------------------------------------
92 protected void UpdateButtonInputVisibility(notnull Widget root, bool visibility)
93 {
94 Widget buttonWidget = root.FindAnyWidget("InputButtonDisplayRoot");
95 if (!buttonWidget)
96 return;
97
98 buttonWidget.SetEnabled(visibility);
99 buttonWidget.SetVisible(visibility);
100 }
101
102 //------------------------------------------------------------------------------------------------
104 {
105 m_bDisabled = true;
106
107 m_DisabledTileShadow.SetVisible(true);
108
109 m_Play.SetEnabled(false);
110 m_Continue.SetEnabled(false);
111 m_Restart.SetEnabled(false);
112
114 if (comp)
115 comp.SetImageSaturation(!m_bDisabled);
116 }
117
118 //------------------------------------------------------------------------------------------------
119 override bool OnClick(Widget w, int x, int y, int button)
120 {
121 if (button == MouseState.RIGHT)
122 return true;
123
125
126 return super.OnClick(w, x, y, button);
127 }
128
129 //------------------------------------------------------------------------------------------------
130 override bool OnFocus(Widget w, int x, int y)
131 {
132 if (m_bDisabled)
133 return super.OnFocus(w, x, y);
134
136
137 m_bFocused = true;
138 float position[4] = {20.0, 0.0, 20.0, 25.0};
139
141 m_wDescription.SetVisible(true);
142 m_wBackground.SetVisible(true);
143
144 return super.OnFocus(w, x, y);
145 }
146
147 //------------------------------------------------------------------------------------------------
148 override bool OnFocusLost(Widget w, int x, int y)
149 {
151
152 m_bFocused = false;
153 float position[4] = {20.0, 0.0, 20.0, -70.0};
154
156 m_wDescription.SetVisible(false);
157 m_wBackground.SetVisible(false);
158
159 return super.OnFocusLost(w, x, y);
160 }
161
162 //------------------------------------------------------------------------------------------------
165 void ShowMission(notnull MissionWorkshopItem item, bool showRecommended = false)
166 {
167 m_Item = item;
168 if (!m_Item)
169 return;
170
171 if (m_wName)
172 m_wName.SetText(m_Item.Name());
173
174 if (m_wDescription)
175 m_wDescription.SetText(m_Item.Description());
176
177 // Set image through SCR_ButtonImageComponent
178 m_Header = SCR_MissionHeader.Cast(MissionHeader.ReadMissionHeader(m_Item.Id()));
179
181 if (comp)
182 {
183 ResourceName texture = GetTexture();
184 if (!texture.IsEmpty())
185 {
186 comp.SetImage(texture);
187 comp.SetImageSaturation(!m_bDisabled);
188 }
189
190 }
191
193
194 if (item.IsFavorite())
195 m_wFavoriteIcon.SetVisible(true);
196
197 if (item.GetTimeSinceLastPlay() >= 0)
198 m_wRecentIcon.SetVisible(true);
199
200 if (showRecommended)
201 m_wNewIcon.SetVisible(true);
202 }
203
204 //------------------------------------------------------------------------------------------------
205 void SetTutorial(notnull MissionWorkshopItem tutorialMission)
206 {
207 m_TutorialMission = tutorialMission;
208 m_bIsTutorialNeeded = true;
209 }
210
211 //------------------------------------------------------------------------------------------------
214 {
215 if (!m_Header && m_Item)
216 return m_Item.Thumbnail().GetLocalScale(THUMBNAIL_LOCALSCALE).Path();
217
218 if (!m_Header.m_sPreviewImage.IsEmpty())
219 return m_Header.m_sPreviewImage;
220
221 if (!m_Header.m_sIcon.IsEmpty())
222 return m_Header.m_sIcon;
223
224 return m_Header.m_sLoadingScreen;
225 }
226
227 //------------------------------------------------------------------------------------------------
228 protected void OnPlayOrContinue()
229 {
231 return;
232
233 if (m_Continue.IsEnabled())
234 OnContinue();
235 else
236 OnPlay();
237 }
238
239 //------------------------------------------------------------------------------------------------
240 protected void OnPlay()
241 {
243 return;
244
245 if (IsShowingTutorial(false))
246 return;
247
249 }
250
251 //------------------------------------------------------------------------------------------------
252 protected void OnContinue()
253 {
254 if (m_bDisabled)
255 return;
256
257 if (IsShowingTutorial(true))
258 return;
259
261 }
262
263 //------------------------------------------------------------------------------------------------
264 protected void OnRestart()
265 {
267 return;
268
269 SCR_ConfigurableDialogUi dialog = SCR_CommonDialogs.CreateDialog(SCR_ScenarioUICommon.DIALOG_RESTART);
270 dialog.m_OnConfirm.Insert(OnRestartConfirmed);
271 }
272
273 //------------------------------------------------------------------------------------------------
274 protected void OnRestartConfirmed()
275 {
276 SCR_ScenarioUICommon.TryPlayScenario(m_Item);
277 SCR_MenuLoadingComponent.SaveLastMenu(ChimeraMenuPreset.MainMenu);
278 }
279
280 //------------------------------------------------------------------------------------------------
281 protected void OnPlayScenario()
282 {
283 SCR_ScenarioUICommon.TryPlayScenario(m_Item);
284 SCR_MenuLoadingComponent.SaveLastMenu(ChimeraMenuPreset.MainMenu);
285 }
286
287 //------------------------------------------------------------------------------------------------
288 protected void OnContinueScenario()
289 {
291 SCR_ScenarioUICommon.TryPlayScenario(m_Item);
292 }
293
294 //------------------------------------------------------------------------------------------------
295 protected void OnPlayTutorial()
296 {
298 SCR_MenuLoadingComponent.SaveLastMenu(ChimeraMenuPreset.MainMenu);
299 }
300
301 //------------------------------------------------------------------------------------------------
302 protected bool IsShowingTutorial(bool isContinue)
303 {
305 {
306 BaseContainer settings = GetGame().GetGameUserSettings().GetModule("SCR_RecentGames");
307
308 if (settings)
309 {
310 int playTutorialShowCount;
311
312 settings.Get("m_iPlayTutorialShowCount", playTutorialShowCount);
313 playTutorialShowCount++;
314
315 settings.Set("m_iPlayTutorialShowCount", playTutorialShowCount);
316 GetGame().UserSettingsChanged();
317 }
318
319 // Tutorial confirmation dialog
320 SCR_ConfigurableDialogUi dialog = SCR_CommonDialogs.CreateTutorialDialog();
321 if (dialog)
322 {
323 dialog.m_OnConfirm.Insert(OnPlayTutorial);
324 if (isContinue)
325 dialog.m_OnCancel.Insert(OnContinueScenario);
326 else
327 dialog.m_OnCancel.Insert(OnPlayScenario);
328
329 return true;
330 }
331 }
332
333 return false;
334 }
335
336 //------------------------------------------------------------------------------------------------
337 protected void OnCommStatusCheckFinished(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
338 {
340 }
341}
ChimeraMenuPreset
Menu presets.
ArmaReforgerScripted GetGame()
Definition game.c:1398
vector position
SCR_ECommStatus
This class may become obsolete on BackendAPI update.
static WidgetAnimationPadding Padding(Widget widget, float padding[4], float speed)
static SCR_InputButtonComponent GetInputButtonComponent(string name, notnull Widget parent, bool searchAllChildren=true)
bool IsShowingTutorial(bool isContinue)
void OnCommStatusCheckFinished(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
void SetTutorial(notnull MissionWorkshopItem tutorialMission)
override void HandlerAttached(Widget w)
SCR_InputButtonComponent m_Restart
override bool OnFocusLost(Widget w, int x, int y)
SCR_InputButtonComponent m_Play
void ShowMission(notnull MissionWorkshopItem item, bool showRecommended=false)
override bool OnFocus(Widget w, int x, int y)
SCR_InputButtonComponent m_Continue
void UpdateButtonInputVisibility(notnull Widget root, bool visibility)
void OnInputDeviceUserChanged(EInputDeviceType oldDevice, EInputDeviceType newDevice)
override bool OnClick(Widget w, int x, int y, int button)
static void UpdateInputButtons(MissionWorkshopItem mission, array< SCR_InputButtonComponent > buttons, bool visible=true)
static bool CanPlay(MissionWorkshopItem mission)
static ScriptInvokerCommStatus GetOnCommStatusCheckFinished()
MouseState
Definition MouseState.c:13