Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_PlayMenu.c
Go to the documentation of this file.
1
enum
EPlayMenuContentType
2
{
3
FEATURED
,
4
RECOMMENDED
,
5
RECENT
6
}
7
8
class
SCR_PlayMenuEntry
: Managed
9
{
10
EPlayMenuContentType
m_eContentType
;
11
ref
MissionWorkshopItem
m_Item
;
12
13
void
SCR_PlayMenuEntry
(
MissionWorkshopItem
item,
EPlayMenuContentType
type
)
14
{
15
m_Item
= item;
16
m_eContentType
=
type
;
17
}
18
}
19
20
class
SCR_PlayMenu
:
MenuRootBase
21
{
22
protected
ResourceName
m_sConfig
=
"{6409EA8EA4BFF7E6}Configs/PlayMenu/PlayMenuEntries.conf"
;
23
protected
ref
Resource
m_Config
;
24
protected
BaseContainer
m_ConfigEntries
;
25
26
const
string
TYPE_FEATURED
=
"m_aFeaturedScenarios"
;
27
const
string
TYPE_RECOMMENDED
=
"m_aRecommendedScenarios"
;
28
29
protected
SCR_PlayMenuComponent
m_Featured
;
30
protected
SCR_PlayMenuComponent
m_Recommended
;
31
protected
SCR_PlayMenuComponent
m_Recent
;
32
33
protected
ref array<MissionWorkshopItem>
m_aScenariosFeatured
= {};
34
protected
ref array<MissionWorkshopItem>
m_aScenariosRecommended
= {};
35
protected
ref array<MissionWorkshopItem>
m_aScenariosRecent
= {};
36
37
protected
ref array<ref SCR_PlayMenuEntry>
m_aEntriesFeatured
= {};
38
protected
ref array<ref SCR_PlayMenuEntry>
m_aEntriesRecommended
= {};
39
protected
ref array<ref SCR_PlayMenuEntry>
m_aEntriesRecent
= {};
40
41
protected
ref
MissionWorkshopItem
m_ItemTutorial
;
42
protected
WorkshopApi
m_WorkshopAPI
;
43
protected
SCR_PlayMenuTileComponent
m_CurrentTile
;
44
protected
Widget
m_wRoot
;
45
protected
bool
m_bTutorialPlayed
;
46
protected
bool
m_bShowPlayTutorialDialog
;
47
protected
int
m_iPlayTutorialShowCount
;
48
protected
int
m_iPlayTutorialShowMax
;
49
50
const
int
THRESHOLD_RECENTLY_PLAYED
= 3600 * 24 * 30;
51
52
protected
ref array<SCR_InputButtonComponent>
m_aRightFooterButtons
= {};
53
54
protected
SCR_PlayMenuTileComponent
m_ClickedTile
;
// Cache last clicked line to trigger the correct dialog after the double click window
55
56
protected
MissionWorkshopItem
m_SelectedScenario
;
57
58
protected
SCR_MenuActionsComponent
m_ActionsComponent
;
59
60
//------------------------------------------------------------------------------------------------
61
override
void
OnMenuOpen
()
62
{
63
super.OnMenuOpen();
64
m_wRoot
=
GetRootWidget
();
65
m_Recent
=
SCR_PlayMenuComponent
.
GetComponent
(
"Recent"
,
m_wRoot
);
66
m_Recommended
=
SCR_PlayMenuComponent
.
GetComponent
(
"Recommended"
,
m_wRoot
);
67
m_Featured
=
SCR_PlayMenuComponent
.
GetComponent
(
"Featured"
,
m_wRoot
);
68
m_WorkshopAPI
=
GetGame
().GetBackendApi().GetWorkshop();
69
72
SCR_DynamicFooterComponent
footer =
GetFooterComponent
();
73
footer.GetOnButtonActivated().Insert(
OnInteractionButtonPressed
);
74
75
m_aRightFooterButtons
= footer.GetButtonsInFooter(SCR_EDynamicFooterButtonAlignment.RIGHT);
76
78
m_ActionsComponent
=
SCR_MenuActionsComponent
.
FindComponent
(
GetRootWidget
());
79
if
(
m_ActionsComponent
)
80
m_ActionsComponent
.GetOnAction().Insert(
OnActionTriggered
);
81
82
SCR_ServicesStatusHelper
.
RefreshPing
();
83
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Insert(
OnCommStatusCheckFinished
);
84
85
// Backend
86
WorkshopApi
workshop =
GetGame
().GetBackendApi().GetWorkshop();
87
88
// Scan offline items if needed
89
if
(workshop.NeedAddonsScan())
90
workshop.ScanOfflineItems();
91
92
// Read the PlayMenu config
93
m_Config
=
BaseContainerTools
.LoadContainer(
m_sConfig
);
94
if
(!
m_Config
)
95
return
;
96
97
m_ConfigEntries
=
m_Config
.GetResource().ToBaseContainer();
98
if
(!
m_ConfigEntries
)
99
return
;
100
101
// Get tutorial
102
ResourceName
tutorial;
103
m_ConfigEntries
.Get(
"m_TutorialScenario"
, tutorial);
104
m_ItemTutorial
=
m_WorkshopAPI
.GetInGameScenario(tutorial);
105
106
if
(
m_ItemTutorial
)
107
m_bTutorialPlayed
=
m_ItemTutorial
.GetTimeSinceLastPlay() > -1;
108
109
// Check how many times "Play tutorial" dialog was shown
110
BaseContainer
settings =
GetGame
().GetGameUserSettings().GetModule(
"SCR_RecentGames"
);
111
112
if
(settings)
113
{
114
settings.Get(
"m_iPlayTutorialShowCount"
,
m_iPlayTutorialShowCount
);
115
settings.Get(
"m_iPlayTutorialShowMax"
,
m_iPlayTutorialShowMax
);
116
}
117
118
m_bShowPlayTutorialDialog
= !
m_bTutorialPlayed
&&
m_iPlayTutorialShowCount
<
m_iPlayTutorialShowMax
;
119
120
//PrintFormat("[OnMenuOpen] m_bShowPlayTutorialDialog: %1 | m_bTutorialPlayed: %2 | m_iPlayTutorialShowCount: %3", m_bShowPlayTutorialDialog, m_bTutorialPlayed, m_iPlayTutorialShowCount);
121
122
// Get scenarios
123
GetScenarios
(
m_aScenariosFeatured
,
EPlayMenuContentType
.FEATURED);
124
GetScenarios
(
m_aScenariosRecommended
,
EPlayMenuContentType
.RECOMMENDED);
125
GetScenarios
(
m_aScenariosRecent
,
EPlayMenuContentType
.RECENT);
126
127
// Get menu entries
128
CreateMenuEntries
(
m_aEntriesFeatured
,
m_aScenariosFeatured
,
EPlayMenuContentType
.FEATURED);
129
CreateMenuEntries
(
m_aEntriesRecommended
,
m_aScenariosRecommended
,
EPlayMenuContentType
.RECOMMENDED);
130
CreateMenuEntries
(
m_aEntriesRecent
,
m_aScenariosRecent
,
EPlayMenuContentType
.RECENT);
131
132
SetupSectionTiles
(
m_Featured
,
m_aEntriesFeatured
);
133
SetupSectionTiles
(
m_Recommended
,
m_aEntriesRecommended
);
134
SetupSectionTiles
(
m_Recent
,
m_aEntriesRecent
);
135
136
// Set starting focused tile
137
if
(
m_aEntriesRecommended
.Count() > 0)
138
m_Recommended
.SetFocusedItem(0);
139
140
// Hide news menu button (top right corner) on PS
141
if
(
GetGame
().GetPlatformService().GetLocalPlatformKind() ==
PlatformKind
.PSN)
142
{
143
Widget
newsButton =
GetRootWidget
().FindAnyWidget(
"NewsButton"
);
144
if
(newsButton)
145
{
146
newsButton.SetVisible(
false
);
147
newsButton.SetEnabled(
false
);
148
}
149
}
150
}
151
152
//------------------------------------------------------------------------------------------------
153
override
void
OnMenuClose
()
154
{
155
super.OnMenuClose();
156
157
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Remove(
OnCommStatusCheckFinished
);
158
}
159
160
//------------------------------------------------------------------------------------------------
161
override
void
OnMenuHide
()
162
{
163
super.OnMenuHide();
164
165
//SCR_AnalyticsApplication.GetInstance().ClosePlayMenu();
166
}
167
168
//------------------------------------------------------------------------------------------------
169
override
void
OnMenuShow
()
170
{
171
super.OnMenuShow();
172
173
if
(
m_ActionsComponent
)
174
m_ActionsComponent
.ActivateActions();
175
176
//SCR_AnalyticsApplication.GetInstance().OpenPlayMenu();
177
}
178
179
//------------------------------------------------------------------------------------------------
180
override
void
OnMenuFocusGained
()
181
{
182
super.OnMenuFocusGained();
183
184
if
(
m_ActionsComponent
)
185
m_ActionsComponent
.ActivateActions();
186
187
SCR_ServicesStatusHelper
.
RefreshPing
();
188
189
// Restore focus to the last accessed tile
190
if
(
m_CurrentTile
)
191
{
192
GetGame
().GetWorkspace().SetFocusedWidget(
m_CurrentTile
.GetRootWidget());
193
return
;
194
}
195
196
// Fallback to the 1st item in the *recent items* list
197
if
(
m_Recent
)
198
m_Recent
.SetFocusedItem(0);
199
}
200
201
//------------------------------------------------------------------------------------------------
202
protected
void
SetupSectionTiles
(
SCR_PlayMenuComponent
section, array<ref SCR_PlayMenuEntry> entries)
203
{
204
ref array<Widget> widgets = section.
GetWidgets
();
205
206
// Remove entries that do not fit into the layout
207
if
(entries.Count() > widgets.Count())
208
entries.Resize(widgets.Count());
209
210
// Setup grid tiles
211
foreach
(
int
i,
SCR_PlayMenuEntry
entry : entries)
212
{
213
Widget
w = widgets.Get(i);
214
if
(!w)
215
continue
;
216
217
SCR_PlayMenuTileComponent
tile =
SCR_PlayMenuTileComponent
.Cast(w.FindHandler(
SCR_PlayMenuTileComponent
));
218
if
(!tile)
219
continue
;
220
221
tile.
GetOnMouseInteractionButtonClicked
().Insert(
OnInteractionButtonPressed
);
222
223
tile.m_OnFocused.Insert(
OnTileFocused
);
224
tile.m_OnFocusLost.Insert(
OnTileFocusLost
);
225
226
tile.
Setup
(entry.m_Item, entry.m_eContentType);
227
}
228
}
229
230
//------------------------------------------------------------------------------------------------
231
protected
void
CreateMenuEntries
(out array<ref SCR_PlayMenuEntry> entries, array<MissionWorkshopItem> scenarios,
EPlayMenuContentType
type
)
232
{
233
foreach
(
MissionWorkshopItem
scenario : scenarios)
234
{
235
entries.Insert(
new
SCR_PlayMenuEntry
(scenario,
type
));
236
}
237
}
238
239
//------------------------------------------------------------------------------------------------
240
protected
void
GetScenarios
(out array<MissionWorkshopItem> scenarios,
EPlayMenuContentType
type
)
241
{
242
if
(
type
==
EPlayMenuContentType
.RECENT)
243
{
244
GetRecentScenarios
(scenarios);
245
return
;
246
}
247
248
array<ResourceName> aResources = {};
249
250
if
(
type
==
EPlayMenuContentType
.FEATURED)
251
m_ConfigEntries
.Get(
TYPE_FEATURED
, aResources);
252
else
253
m_ConfigEntries
.Get(
TYPE_RECOMMENDED
, aResources);
254
255
foreach
(
ResourceName
sResource : aResources)
256
{
257
MissionWorkshopItem
scenario =
m_WorkshopAPI
.GetInGameScenario(sResource);
258
259
if
(scenario && !
SCR_ScenarioUICommon
.
IsMissingDependencies
(scenario))
260
scenarios.Insert(scenario);
261
}
262
}
263
264
//------------------------------------------------------------------------------------------------
265
protected
void
GetRecentScenarios
(out array<MissionWorkshopItem> scenarios)
266
{
267
// Get missions from Workshop API
268
m_WorkshopAPI
.GetPageScenarios(scenarios, 0,
SCR_WorkshopUiCommon
.PAGE_SCENARIOS);
269
270
int
count = scenarios.Count();
271
int
elapsed;
272
MissionWorkshopItem
scenario;
273
274
// Remove scenarios from disabled addons
275
for
(
int
i = count - 1; i >= 0; i--)
276
{
277
scenario = scenarios[i];
278
elapsed = scenario.GetTimeSinceLastPlay();
279
280
if
(elapsed == -1 || elapsed >
THRESHOLD_RECENTLY_PLAYED
||
SCR_ScenarioUICommon
.
IsMissingDependencies
(scenario))
281
{
282
//PrintFormat("[GetRecentScenarios] removed: %1 | last played: %2 | missing dependency: %3", scenario.Name(), elapsed, SCR_ScenarioUICommon.IsMissingDependencies(scenario));
283
scenarios.Remove(i);
284
continue
;
285
}
286
};
287
288
SCR_Sorting<MissionWorkshopItem, SCR_CompareMissionTimeSinceLastPlay>.HeapSort(scenarios,
false
);
289
}
290
292
//------------------------------------------------------------------------------------------------
293
protected
void
OnActionTriggered
(
string
action,
float
multiplier)
294
{
296
if
(
GetGame
().
GetInputManager
().GetLastUsedInputDevice() != EInputDeviceType.MOUSE || !
GetTileUnderCursor
())
297
return
;
298
299
MissionWorkshopItem
scenario =
GetSelectedScenario
();
300
301
switch
(action)
302
{
303
case
UIConstants
.MENU_ACTION_DOUBLE_CLICK:
OnTileClickInteraction
(multiplier);
break
;
304
case
SCR_ScenarioUICommon
.ACTION_RESTART:
Restart
(scenario);
break
;
305
case
SCR_ScenarioUICommon
.ACTION_FIND_SERVERS:
Join
(scenario);
break
;
306
case
SCR_ScenarioUICommon
.ACTION_HOST:
Host
(scenario);
break
;
307
}
308
}
309
310
//------------------------------------------------------------------------------------------------
311
protected
void
OnInteractionButtonPressed
(
string
action)
312
{
313
SwitchOnButton
(action,
GetSelectedScenario
());
314
}
315
316
//------------------------------------------------------------------------------------------------
317
protected
void
OnConfirmationDialogButtonPressed
(
SCR_ScenarioConfirmationDialogUi
dialog,
string
tag)
318
{
319
if
(!dialog)
320
return
;
321
322
SwitchOnButton
(tag, dialog.GetScenario());
323
}
324
325
//------------------------------------------------------------------------------------------------
326
protected
void
SwitchOnButton
(
string
tag,
MissionWorkshopItem
scenario)
327
{
328
switch
(tag)
329
{
330
case
SCR_ConfigurableDialogUi
.
BUTTON_CONFIRM
:
Play
(scenario);
break
;
331
case
SCR_ScenarioUICommon
.BUTTON_PLAY:
Play
(scenario);
break
;
332
case
SCR_ScenarioUICommon
.BUTTON_CONTINUE:
Continue
(scenario);
break
;
333
case
SCR_ScenarioUICommon
.BUTTON_RESTART:
Restart
(scenario);
break
;
334
case
SCR_ScenarioUICommon
.BUTTON_FIND_SERVERS:
Join
(scenario);
break
;
335
case
SCR_ScenarioUICommon
.BUTTON_HOST:
Host
(scenario);
break
;
336
case
SCR_ScenarioUICommon
.BUTTON_SCENARIOS:
OnScenarios
();
break
;
337
case
UIConstants
.BUTTON_BACK:
OnBack
();
break
;
338
}
339
}
340
341
// CLICKS
342
//------------------------------------------------------------------------------------------------
343
//------------------------------------------------------------------------------------------------
344
protected
void
OnTileClickInteraction
(
float
multiplier)
345
{
347
348
SCR_PlayMenuTileComponent
tile =
m_ClickedTile
;
349
if
(!tile || !
GetTileUnderCursor
())
350
return
;
351
352
MissionWorkshopItem
scenario = tile.
m_Item
;
353
if
(!scenario)
354
return
;
355
356
switch
(
Math
.Floor(multiplier))
357
{
358
case
1:
OnClickInteraction
(scenario);
break
;
359
case
2:
OnDoubleClickInteraction
(scenario);
break
;
360
}
361
362
m_ClickedTile
= null;
363
}
364
365
//------------------------------------------------------------------------------------------------
366
protected
void
OnClickInteraction
(
MissionWorkshopItem
scenario)
367
{
369
SCR_ScenarioConfirmationDialogUi
scenarioConfirmationDialog =
SCR_ScenarioDialogs
.
CreateScenarioConfirmationDialog
(scenario);
370
if
(!scenarioConfirmationDialog)
371
{
372
OnPlayInteraction
(scenario);
373
return
;
374
}
375
377
scenarioConfirmationDialog.m_OnButtonPressed.Insert(
OnConfirmationDialogButtonPressed
);
378
}
379
380
//------------------------------------------------------------------------------------------------
381
protected
void
OnDoubleClickInteraction
(
MissionWorkshopItem
scenario)
382
{
383
if
(!scenario)
384
return
;
385
386
OnPlayInteraction
(scenario);
387
}
388
389
// BUTTONS
390
//------------------------------------------------------------------------------------------------
391
protected
void
OnTileMouseClick
(
SCR_ScriptedWidgetComponent
tile)
392
{
393
m_ClickedTile
=
SCR_PlayMenuTileComponent
.Cast(tile);
394
}
395
396
// INTERACTIONS
397
//------------------------------------------------------------------------------------------------
398
protected
void
OnPlayInteraction
(
MissionWorkshopItem
scenario)
399
{
400
if
(scenario)
401
Continue
(scenario);
402
}
403
404
//------------------------------------------------------------------------------------------------
405
protected
void
OnBack
()
406
{
407
Close
();
408
}
409
410
//------------------------------------------------------------------------------------------------
411
protected
void
OnScenarios
()
412
{
413
SCR_MenuLoadingComponent.SaveLastMenu(
ChimeraMenuPreset
.PlayMenu);
414
415
GetGame
().GetMenuManager().OpenMenu(
ChimeraMenuPreset
.ScenarioMenu);
416
}
417
418
//------------------------------------------------------------------------------------------------
419
protected
void
Play
(
MissionWorkshopItem
scenario)
420
{
421
if
(!scenario || !
SCR_ScenarioUICommon
.
CanPlay
(scenario))
422
return
;
423
424
m_SelectedScenario
= scenario;
425
426
if
(
m_bShowPlayTutorialDialog
&&
m_ItemTutorial
&&
m_ItemTutorial
!=
m_CurrentTile
.m_Item)
427
{
428
BaseContainer
settings =
GetGame
().GetGameUserSettings().GetModule(
"SCR_RecentGames"
);
429
430
if
(settings)
431
{
432
m_iPlayTutorialShowCount
++;
433
434
settings.Set(
"m_iPlayTutorialShowCount"
,
m_iPlayTutorialShowCount
);
435
GetGame
().UserSettingsChanged();
436
}
437
438
// Tutorial confirmation dialog
439
SCR_ConfigurableDialogUi
dialog =
SCR_CommonDialogs
.CreateTutorialDialog();
440
if
(dialog)
441
{
442
dialog.
m_OnConfirm
.Insert(
OnPlayTutorial
);
443
dialog.
m_OnCancel
.Insert(
PlayCurrentScenario
);
444
}
445
}
446
else
447
{
448
PlayCurrentScenario
();
449
}
450
451
SCR_MenuLoadingComponent.SaveLastMenu(
ChimeraMenuPreset
.PlayMenu);
452
}
453
454
//------------------------------------------------------------------------------------------------
455
protected
void
Continue
(
MissionWorkshopItem
scenario)
456
{
457
m_SelectedScenario
= scenario;
458
SCR_ScenarioUICommon
.LoadSave(scenario,
m_CurrentTile
.m_Header,
ChimeraMenuPreset
.PlayMenu);
459
}
460
461
//------------------------------------------------------------------------------------------------
462
protected
void
Restart
(
MissionWorkshopItem
scenario)
463
{
464
if
(!scenario || !
SCR_ScenarioUICommon
.
CanPlay
(scenario))
465
return
;
466
467
m_SelectedScenario
= scenario;
468
469
SCR_ConfigurableDialogUi
dialog =
SCR_CommonDialogs
.CreateDialog(
SCR_ScenarioUICommon
.DIALOG_RESTART);
470
dialog.
m_OnConfirm
.Insert(
OnRestartConfirmed
);
471
}
472
473
//------------------------------------------------------------------------------------------------
474
protected
void
OnRestartConfirmed
()
475
{
476
PlayCurrentScenario
();
477
SCR_MenuLoadingComponent.SaveLastMenu(
ChimeraMenuPreset
.PlayMenu);
478
}
479
480
//------------------------------------------------------------------------------------------------
481
protected
void
Host
(
MissionWorkshopItem
scenario)
482
{
483
if
(!scenario || !
SCR_ScenarioUICommon
.
CanHost
(scenario))
484
return
;
485
486
m_SelectedScenario
= scenario;
487
488
HostCurrentScenario
();
489
490
SCR_MenuLoadingComponent.SaveLastMenu(
ChimeraMenuPreset
.PlayMenu);
491
}
492
493
//------------------------------------------------------------------------------------------------
494
protected
void
Join
(
MissionWorkshopItem
scenario)
495
{
496
if
(!scenario || !
SCR_ScenarioUICommon
.
CanJoin
(scenario))
497
return
;
498
499
m_SelectedScenario
= scenario;
500
501
FindCurrentScenarioServers
();
502
503
SCR_MenuLoadingComponent.SaveLastMenu(
ChimeraMenuPreset
.PlayMenu);
504
}
505
506
//------------------------------------------------------------------------------------------------
507
protected
void
OnTileFocused
(
SCR_PlayMenuTileComponent
tile)
508
{
509
m_CurrentTile
= tile;
510
511
UpdateNavigationButtons
();
512
513
tile.m_OnClick.Insert(
OnTileMouseClick
);
514
}
515
516
//------------------------------------------------------------------------------------------------
517
protected
void
OnTileFocusLost
(
SCR_PlayMenuTileComponent
tile)
518
{
519
UpdateNavigationButtons
(
false
);
520
521
tile.m_OnClick.Remove(
OnTileMouseClick
);
522
}
523
524
//------------------------------------------------------------------------------------------------
525
protected
void
UpdateNavigationButtons
(
bool
show =
true
)
526
{
527
if
(!
m_CurrentTile
)
528
return
;
529
530
show = show &&
GetSelectedTile
() &&
GetGame
().GetInputManager().GetLastUsedInputDevice() != EInputDeviceType.MOUSE;
531
SCR_ScenarioUICommon
.
UpdateInputButtons
(
m_CurrentTile
.m_Item,
m_aRightFooterButtons
, show);
532
}
533
534
//------------------------------------------------------------------------------------------------
535
protected
void
PlayCurrentScenario
()
536
{
537
SCR_ScenarioUICommon
.TryPlayScenario(
m_SelectedScenario
);
538
}
539
540
//------------------------------------------------------------------------------------------------
541
protected
void
FindCurrentScenarioServers
()
542
{
543
if
(
m_SelectedScenario
)
544
ServerBrowserMenuUI
.
TryOpenServerBrowserWithScenarioFilter
(
m_SelectedScenario
);
545
}
546
547
//------------------------------------------------------------------------------------------------
548
protected
void
HostCurrentScenario
()
549
{
550
if
(!
m_SelectedScenario
)
551
return
;
552
553
ServerHostingUI dialog =
SCR_CommonDialogs
.CreateServerHostingDialog();
554
555
if
(!dialog)
556
return
;
557
558
dialog.SelectScenario(
m_SelectedScenario
);
559
}
560
561
//------------------------------------------------------------------------------------------------
562
protected
void
OnPlayTutorial
()
563
{
564
SCR_ScenarioUICommon
.TryPlayScenario(
m_ItemTutorial
);
565
}
566
567
//------------------------------------------------------------------------------------------------
568
protected
SCR_PlayMenuTileComponent
GetSelectedTile
()
569
{
570
// We are not over a line, use currently focused line
571
Widget
wfocused =
GetGame
().GetWorkspace().GetFocusedWidget();
572
SCR_PlayMenuTileComponent
comp;
573
if
(wfocused)
574
comp =
SCR_PlayMenuTileComponent
.Cast(wfocused.FindHandler(
SCR_PlayMenuTileComponent
));
575
576
EInputDeviceType inputDevice =
GetGame
().GetInputManager().GetLastUsedInputDevice();
577
bool
isCursorOnInnerButton =
m_CurrentTile
&&
m_CurrentTile
.m_bIsMouseInteraction;
578
579
if
(inputDevice == EInputDeviceType.MOUSE && (
GetTileUnderCursor
() || isCursorOnInnerButton))
580
return
m_CurrentTile
;
581
else
582
return
comp;
583
}
584
585
//------------------------------------------------------------------------------------------------
586
protected
SCR_PlayMenuTileComponent
GetTileUnderCursor
()
587
{
588
Widget
w =
WidgetManager
.GetWidgetUnderCursor();
589
590
if
(!w)
591
return
null;
592
593
return
SCR_PlayMenuTileComponent
.Cast(w.FindHandler(
SCR_PlayMenuTileComponent
));
594
}
595
596
//------------------------------------------------------------------------------------------------
597
protected
MissionWorkshopItem
GetSelectedScenario
()
598
{
599
SCR_PlayMenuTileComponent
comp =
GetSelectedTile
();
600
601
if
(!comp)
602
return
null;
603
604
return
comp.
m_Item
;
605
}
606
607
//------------------------------------------------------------------------------------------------
608
protected
void
OnCommStatusCheckFinished
(
SCR_ECommStatus
status,
float
responseTime,
float
lastSuccessTime,
float
lastFailTime)
609
{
610
UpdateNavigationButtons
();
611
}
612
}
ChimeraMenuPreset
ChimeraMenuPreset
Menu presets.
Definition
ChimeraMenuBase.c:4
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
PlatformKind
PlatformKind
Definition
PlatformKind.c:8
GetInputManager
InputManager GetInputManager()
Definition
SCR_BaseManualCameraComponent.c:205
UpdateNavigationButtons
void UpdateNavigationButtons()
Definition
SCR_ContentBrowser_AddonsSubMenu.c:672
type
EDamageType type
Definition
SCR_DestructibleTreeV2.c:32
GetRootWidget
Widget GetRootWidget()
Definition
SCR_ModularButtonComponent.c:189
m_Item
NewsFeedItem m_Item
Definition
SCR_NewsSubMenu.c:0
m_eContentType
enum EPlayMenuContentType m_eContentType
EPlayMenuContentType
EPlayMenuContentType
Definition
SCR_PlayMenu.c:2
RECENT
@ RECENT
Definition
SCR_PlayMenu.c:5
FEATURED
@ FEATURED
Definition
SCR_PlayMenu.c:3
RECOMMENDED
@ RECOMMENDED
Definition
SCR_PlayMenu.c:4
SCR_PlayMenuEntry
void SCR_PlayMenuEntry(MissionWorkshopItem item, EPlayMenuContentType type)
Definition
SCR_PlayMenu.c:13
SCR_ScenarioConfirmationDialogUi
void SCR_ScenarioConfirmationDialogUi(MissionWorkshopItem scenario, ScriptInvokerBool onFavoritesResponse=null)
Definition
SCR_ScenarioDialogs.c:43
SCR_ECommStatus
SCR_ECommStatus
This class may become obsolete on BackendAPI update.
Definition
SCR_ServicesStatusHelper.c:3
Close
proto native void Close()
Definition
SCR_WorkshopDialogs.c:77
BaseContainer
Definition
BaseContainer.c:13
BaseContainerTools
Definition
BaseContainerTools.c:13
Math
Definition
Math.c:13
MenuRootBase
Definition
MenuRootBase.c:11
MenuRootBase::GetFooterComponent
SCR_DynamicFooterComponent GetFooterComponent()
Definition
MenuRootBase.c:143
MissionWorkshopItem
Definition
MissionWorkshopItem.c:13
Resource
Object holding reference to resource. In destructor release the resource.
Definition
Resource.c:25
ResourceName
Definition
ResourceName.c:13
SCR_CommonDialogs
Definition
CommonDialogs.c:6
SCR_ConfigurableDialogUi
Definition
SCR_ConfigurableDialogUI.c:17
SCR_ConfigurableDialogUi::m_OnCancel
ref ScriptInvoker m_OnCancel
Definition
SCR_ConfigurableDialogUI.c:48
SCR_ConfigurableDialogUi::m_OnConfirm
ref ScriptInvoker m_OnConfirm
Definition
SCR_ConfigurableDialogUI.c:47
SCR_ConfigurableDialogUi::BUTTON_CONFIRM
static const string BUTTON_CONFIRM
Definition
SCR_ConfigurableDialogUI.c:85
SCR_DynamicFooterComponent
Definition
SCR_DynamicFooterComponent.c:8
SCR_MenuActionsComponent
Definition
SCR_MenuActionsComponent.c:10
SCR_MenuActionsComponent::FindComponent
static SCR_MenuActionsComponent FindComponent(Widget w)
Definition
SCR_MenuActionsComponent.c:212
SCR_PlayMenuComponent
Definition
SCR_PlayMenuComponent.c:2
SCR_PlayMenuComponent::GetWidgets
array< Widget > GetWidgets()
Definition
SCR_PlayMenuComponent.c:157
SCR_PlayMenuComponent::GetComponent
static SCR_PlayMenuComponent GetComponent(string name, Widget parent, bool searchAllChildren=true)
Definition
SCR_PlayMenuComponent.c:165
SCR_PlayMenu
Definition
SCR_PlayMenu.c:21
SCR_PlayMenu::m_sConfig
ResourceName m_sConfig
Definition
SCR_PlayMenu.c:22
SCR_PlayMenu::TYPE_FEATURED
const string TYPE_FEATURED
Definition
SCR_PlayMenu.c:26
SCR_PlayMenu::OnDoubleClickInteraction
void OnDoubleClickInteraction(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:381
SCR_PlayMenu::Continue
void Continue(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:455
SCR_PlayMenu::OnActionTriggered
void OnActionTriggered(string action, float multiplier)
Input Events.
Definition
SCR_PlayMenu.c:293
SCR_PlayMenu::OnMenuShow
override void OnMenuShow()
Definition
SCR_PlayMenu.c:169
SCR_PlayMenu::GetScenarios
void GetScenarios(out array< MissionWorkshopItem > scenarios, EPlayMenuContentType type)
Definition
SCR_PlayMenu.c:240
SCR_PlayMenu::SwitchOnButton
void SwitchOnButton(string tag, MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:326
SCR_PlayMenu::CreateMenuEntries
void CreateMenuEntries(out array< ref SCR_PlayMenuEntry > entries, array< MissionWorkshopItem > scenarios, EPlayMenuContentType type)
Definition
SCR_PlayMenu.c:231
SCR_PlayMenu::m_Recommended
SCR_PlayMenuComponent m_Recommended
Definition
SCR_PlayMenu.c:30
SCR_PlayMenu::m_aEntriesFeatured
ref array< ref SCR_PlayMenuEntry > m_aEntriesFeatured
Definition
SCR_PlayMenu.c:37
SCR_PlayMenu::OnPlayTutorial
void OnPlayTutorial()
Definition
SCR_PlayMenu.c:562
SCR_PlayMenu::m_Recent
SCR_PlayMenuComponent m_Recent
Definition
SCR_PlayMenu.c:31
SCR_PlayMenu::GetRecentScenarios
void GetRecentScenarios(out array< MissionWorkshopItem > scenarios)
Definition
SCR_PlayMenu.c:265
SCR_PlayMenu::OnRestartConfirmed
void OnRestartConfirmed()
Definition
SCR_PlayMenu.c:474
SCR_PlayMenu::FindCurrentScenarioServers
void FindCurrentScenarioServers()
Definition
SCR_PlayMenu.c:541
SCR_PlayMenu::OnTileFocused
void OnTileFocused(SCR_PlayMenuTileComponent tile)
Definition
SCR_PlayMenu.c:507
SCR_PlayMenu::Restart
void Restart(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:462
SCR_PlayMenu::m_aEntriesRecent
ref array< ref SCR_PlayMenuEntry > m_aEntriesRecent
Definition
SCR_PlayMenu.c:39
SCR_PlayMenu::TYPE_RECOMMENDED
const string TYPE_RECOMMENDED
Definition
SCR_PlayMenu.c:27
SCR_PlayMenu::Play
void Play(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:419
SCR_PlayMenu::UpdateNavigationButtons
void UpdateNavigationButtons(bool show=true)
Definition
SCR_PlayMenu.c:525
SCR_PlayMenu::m_ClickedTile
SCR_PlayMenuTileComponent m_ClickedTile
Definition
SCR_PlayMenu.c:54
SCR_PlayMenu::OnTileFocusLost
void OnTileFocusLost(SCR_PlayMenuTileComponent tile)
Definition
SCR_PlayMenu.c:517
SCR_PlayMenu::m_ConfigEntries
BaseContainer m_ConfigEntries
Definition
SCR_PlayMenu.c:24
SCR_PlayMenu::m_WorkshopAPI
WorkshopApi m_WorkshopAPI
Definition
SCR_PlayMenu.c:42
SCR_PlayMenu::m_ItemTutorial
ref MissionWorkshopItem m_ItemTutorial
Definition
SCR_PlayMenu.c:41
SCR_PlayMenu::m_aScenariosFeatured
ref array< MissionWorkshopItem > m_aScenariosFeatured
Definition
SCR_PlayMenu.c:33
SCR_PlayMenu::THRESHOLD_RECENTLY_PLAYED
const int THRESHOLD_RECENTLY_PLAYED
Definition
SCR_PlayMenu.c:50
SCR_PlayMenu::GetSelectedTile
SCR_PlayMenuTileComponent GetSelectedTile()
Definition
SCR_PlayMenu.c:568
SCR_PlayMenu::OnClickInteraction
void OnClickInteraction(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:366
SCR_PlayMenu::OnBack
void OnBack()
Definition
SCR_PlayMenu.c:405
SCR_PlayMenu::m_Config
ref Resource m_Config
Definition
SCR_PlayMenu.c:23
SCR_PlayMenu::m_aEntriesRecommended
ref array< ref SCR_PlayMenuEntry > m_aEntriesRecommended
Definition
SCR_PlayMenu.c:38
SCR_PlayMenu::GetSelectedScenario
MissionWorkshopItem GetSelectedScenario()
Definition
SCR_PlayMenu.c:597
SCR_PlayMenu::OnConfirmationDialogButtonPressed
void OnConfirmationDialogButtonPressed(SCR_ScenarioConfirmationDialogUi dialog, string tag)
Definition
SCR_PlayMenu.c:317
SCR_PlayMenu::OnMenuOpen
override void OnMenuOpen()
Definition
SCR_PlayMenu.c:61
SCR_PlayMenu::OnMenuFocusGained
override void OnMenuFocusGained()
Definition
SCR_PlayMenu.c:180
SCR_PlayMenu::OnPlayInteraction
void OnPlayInteraction(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:398
SCR_PlayMenu::m_bTutorialPlayed
bool m_bTutorialPlayed
Definition
SCR_PlayMenu.c:45
SCR_PlayMenu::Join
void Join(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:494
SCR_PlayMenu::OnTileMouseClick
void OnTileMouseClick(SCR_ScriptedWidgetComponent tile)
Definition
SCR_PlayMenu.c:391
SCR_PlayMenu::OnMenuClose
override void OnMenuClose()
Definition
SCR_PlayMenu.c:153
SCR_PlayMenu::Host
void Host(MissionWorkshopItem scenario)
Definition
SCR_PlayMenu.c:481
SCR_PlayMenu::m_iPlayTutorialShowMax
int m_iPlayTutorialShowMax
Definition
SCR_PlayMenu.c:48
SCR_PlayMenu::OnInteractionButtonPressed
void OnInteractionButtonPressed(string action)
Definition
SCR_PlayMenu.c:311
SCR_PlayMenu::PlayCurrentScenario
void PlayCurrentScenario()
Definition
SCR_PlayMenu.c:535
SCR_PlayMenu::OnCommStatusCheckFinished
void OnCommStatusCheckFinished(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
Definition
SCR_PlayMenu.c:608
SCR_PlayMenu::m_iPlayTutorialShowCount
int m_iPlayTutorialShowCount
Definition
SCR_PlayMenu.c:47
SCR_PlayMenu::m_aRightFooterButtons
ref array< SCR_InputButtonComponent > m_aRightFooterButtons
Definition
SCR_PlayMenu.c:52
SCR_PlayMenu::OnMenuHide
override void OnMenuHide()
Definition
SCR_PlayMenu.c:161
SCR_PlayMenu::OnTileClickInteraction
void OnTileClickInteraction(float multiplier)
Definition
SCR_PlayMenu.c:344
SCR_PlayMenu::GetTileUnderCursor
SCR_PlayMenuTileComponent GetTileUnderCursor()
Definition
SCR_PlayMenu.c:586
SCR_PlayMenu::m_Featured
SCR_PlayMenuComponent m_Featured
Definition
SCR_PlayMenu.c:29
SCR_PlayMenu::m_wRoot
Widget m_wRoot
Definition
SCR_PlayMenu.c:44
SCR_PlayMenu::SetupSectionTiles
void SetupSectionTiles(SCR_PlayMenuComponent section, array< ref SCR_PlayMenuEntry > entries)
Definition
SCR_PlayMenu.c:202
SCR_PlayMenu::m_bShowPlayTutorialDialog
bool m_bShowPlayTutorialDialog
Definition
SCR_PlayMenu.c:46
SCR_PlayMenu::OnScenarios
void OnScenarios()
Definition
SCR_PlayMenu.c:411
SCR_PlayMenu::m_SelectedScenario
MissionWorkshopItem m_SelectedScenario
Definition
SCR_PlayMenu.c:56
SCR_PlayMenu::m_aScenariosRecent
ref array< MissionWorkshopItem > m_aScenariosRecent
Definition
SCR_PlayMenu.c:35
SCR_PlayMenu::m_CurrentTile
SCR_PlayMenuTileComponent m_CurrentTile
Definition
SCR_PlayMenu.c:43
SCR_PlayMenu::m_ActionsComponent
SCR_MenuActionsComponent m_ActionsComponent
Definition
SCR_PlayMenu.c:58
SCR_PlayMenu::m_aScenariosRecommended
ref array< MissionWorkshopItem > m_aScenariosRecommended
Definition
SCR_PlayMenu.c:34
SCR_PlayMenu::HostCurrentScenario
void HostCurrentScenario()
Definition
SCR_PlayMenu.c:548
SCR_PlayMenuTileComponent
Definition
SCR_PlayMenuTileComponent.c:2
SCR_PlayMenuTileComponent::Setup
void Setup(notnull MissionWorkshopItem item, EPlayMenuContentType contentType)
Definition
SCR_PlayMenuTileComponent.c:128
SCR_PlayMenuTileComponent::m_Item
MissionWorkshopItem m_Item
Definition
SCR_PlayMenuTileComponent.c:9
SCR_PlayMenuTileComponent::GetOnMouseInteractionButtonClicked
ScriptInvokerString GetOnMouseInteractionButtonClicked()
Definition
SCR_PlayMenuTileComponent.c:295
SCR_ScenarioDialogs
Definition
SCR_ScenarioDialogs.c:6
SCR_ScenarioDialogs::CreateScenarioConfirmationDialog
static SCR_ScenarioConfirmationDialogUi CreateScenarioConfirmationDialog(MissionWorkshopItem scenario, ScriptInvokerBool onFavoritesResponse=null)
Definition
SCR_ScenarioDialogs.c:16
SCR_ScenarioUICommon
Definition
SCR_ScenarioUICommon.c:5
SCR_ScenarioUICommon::UpdateInputButtons
static void UpdateInputButtons(MissionWorkshopItem mission, array< SCR_InputButtonComponent > buttons, bool visible=true)
Definition
SCR_ScenarioUICommon.c:604
SCR_ScenarioUICommon::CanJoin
static bool CanJoin(MissionWorkshopItem mission)
Definition
SCR_ScenarioUICommon.c:233
SCR_ScenarioUICommon::IsMissingDependencies
static bool IsMissingDependencies(MissionWorkshopItem mission)
Definition
SCR_ScenarioUICommon.c:136
SCR_ScenarioUICommon::CanHost
static bool CanHost(MissionWorkshopItem mission)
Definition
SCR_ScenarioUICommon.c:239
SCR_ScenarioUICommon::CanPlay
static bool CanPlay(MissionWorkshopItem mission)
Definition
SCR_ScenarioUICommon.c:227
SCR_ScriptedWidgetComponent
Definition
SCR_ScriptedWidgetComponent.c:8
SCR_ServicesStatusHelper
Definition
SCR_ServicesStatusHelper.c:16
SCR_ServicesStatusHelper::GetOnCommStatusCheckFinished
static ScriptInvokerCommStatus GetOnCommStatusCheckFinished()
Definition
SCR_ServicesStatusHelper.c:422
SCR_ServicesStatusHelper::RefreshPing
static void RefreshPing()
Definition
SCR_ServicesStatusHelper.c:94
SCR_WorkshopUiCommon
Definition
SCR_WorkshopUiCommon.c:6
ServerBrowserMenuUI
Definition
ServerBrowserMenuUI.c:11
ServerBrowserMenuUI::TryOpenServerBrowserWithScenarioFilter
static void TryOpenServerBrowserWithScenarioFilter(MissionWorkshopItem mission)
Definition
ServerBrowserMenuUI.c:2760
UIConstants
Definition
Constants.c:151
Widget
Definition
Widget.c:13
WidgetManager
Definition
WidgetManager.c:16
WorkshopApi
Workshop Api instance.
Definition
WorkshopApi.c:14
Play
bool Play()
Start playing the animation. Call 'Prepare' first if you need to change the setup of a component!
Definition
SCR_AudioSource.c:85
scripts
Game
UI
Menu
PlayMenu
SCR_PlayMenu.c
Generated by
1.17.0