7 static const string BUTTON_PLAY =
"Play";
8 static const string BUTTON_CONTINUE =
"Continue";
9 static const string BUTTON_RESTART =
"Restart";
10 static const string BUTTON_HOST =
"Host";
11 static const string BUTTON_FIND_SERVERS =
"FindServers";
12 static const string BUTTON_FAVORITE =
"Favorite";
13 static const string BUTTON_SCENARIOS =
"Scenarios";
16 static const string ACTION_RESTART =
"MenuRestart";
17 static const string ACTION_FIND_SERVERS =
"MenuJoin";
18 static const string ACTION_HOST =
"MenuHost";
19 static const string ACTION_SERVER_DETAILS =
"MenuServerDetails";
22 static const string DIALOG_RESTART =
"scenario_restart";
31 int nCompleted, nTotal;
40 SCR_StartScenarioWhileDownloadingDialog.CreateDialog(scenario);
41 else if (addonMgr && addonMgr.
CountOfEnabledAddons() > 0 && scenario.GetPlayerCount() == 1 && !scenario.GetOwner() && !scenario.Author())
43 SCR_StartScenarioWhileAddonsEnabledDialog.CreateDialog(scenario);
52 int nCompleted, nTotal;
61 scenario.Host(config);
69 SCR_MenuLoadingComponent.SaveLastMenu(startMenu);
77 GetGame().GetSaveGameManager().Load(saves[saves.Count() - 1],
false);
79 TryPlayScenario(scenario);
88 TryPlayScenario(scenario);
95 return mission && mission.GetPlayerCount() > 1;
105 if (mission.GetOwner())
106 return mission.GetOwner().IsReadyToRun();
117 if (mission.GetOwner())
118 return mission.GetOwner().IsEnabled();
129 if (mission.GetOwner())
130 return mission.GetOwner().GetActiveRevision();
142 if (!mission.GetOwner())
145 Revision revision = mission.GetOwner().GetActiveRevision();
147 revision = mission.GetOwner().GetLocalRevision();
152 array<WorkshopItem> dependencies = {};
153 revision.GetDependencies(dependencies);
157 if (!dependency.GetActiveRevision())
171 if (!mission.GetOwner())
174 Revision revision = mission.GetOwner().GetActiveRevision();
178 array<WorkshopItem> dependencies = {};
179 revision.GetDependencies(dependencies);
183 revision = dependency.GetLatestRevision();
195 return SCR_ERevisionAvailability.ERA_UNKNOWN_AVAILABILITY;
198 SCR_ERevisionAvailability availability = SCR_ERevisionAvailability.ERA_AVAILABLE;
217 int accessState = owner.GetAccessState();
221 restricted = author.IsBlocked();
247 return GetGame().GetBackendApi().GetWorkshop().GetInGameScenario(resource);
263 if (!mission ||
GetGame().GetBackendApi().GetWorkshop().NeedAddonsScan())
264 return SCR_EScenarioIssues.MISSION_MISSING;
267 return SCR_EScenarioIssues.ADDON_NOT_DOWNLOADED;
270 return SCR_EScenarioIssues.DEPENDENCIES_MISSING;
273 return SCR_EScenarioIssues.DEPENDENCIES_VERSION_MISMATCH;
276 return SCR_EScenarioIssues.ADDON_DISABLED;
278 return SCR_EScenarioIssues.NONE;
288 if (!mission ||
GetGame().GetBackendApi().GetWorkshop().NeedAddonsScan())
289 return SCR_EScenarioIssues.MISSION_MISSING;
292 return SCR_EScenarioIssues.CONNECTION_ISSUE;
294 return SCR_EScenarioIssues.NONE;
306 if (!mission ||
GetGame().GetBackendApi().GetWorkshop().NeedAddonsScan())
307 return SCR_EScenarioIssues.MISSION_MISSING;
310 return SCR_EScenarioIssues.CONNECTION_ISSUE;
313 return SCR_EScenarioIssues.ADDON_NOT_DOWNLOADED;
316 return SCR_EScenarioIssues.ADDON_AVAILABILITY_ISSUE;
319 return SCR_EScenarioIssues.DEPENDENCIES_MISSING;
322 return SCR_EScenarioIssues.DEPENDENCIES_VERSION_MISMATCH;
325 return SCR_EScenarioIssues.DEPENDENCIES_AVAILABILITY_ISSUE;
328 return SCR_EScenarioIssues.ADDON_DISABLED;
330 return SCR_EScenarioIssues.NONE;
340 protected static string GetErrorTexture(SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
344 case SCR_EScenarioIssues.NONE:
return "";
348 case SCR_EScenarioIssues.ADDON_NOT_DOWNLOADED:
return SCR_WorkshopUiCommon.ICON_MOD_NOT_AVAILABLE;
351 case SCR_EScenarioIssues.DEPENDENCIES_VERSION_MISMATCH:
return SCR_WorkshopUiCommon.ICON_DEPENDENCIES;
352 case SCR_EScenarioIssues.DEPENDENCIES_AVAILABILITY_ISSUE:
return SCR_WorkshopUiCommon.ICON_DEPENDENCIES;
359 protected static string GetErrorMessage(SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
363 case SCR_EScenarioIssues.NONE:
return "";
365 case SCR_EScenarioIssues.MISSION_MISSING:
return SCR_WorkshopUiCommon.MESSAGE_MOD_NOT_AVAILABLE;
369 case SCR_EScenarioIssues.DEPENDENCIES_MISSING:
return SCR_WorkshopUiCommon.MESSAGE_DEPENDENCIES_MISSING;
370 case SCR_EScenarioIssues.DEPENDENCIES_VERSION_MISMATCH:
return SCR_WorkshopUiCommon.MESSAGE_DEPENDENCIES_MISSING;
371 case SCR_EScenarioIssues.DEPENDENCIES_AVAILABILITY_ISSUE:
return SCR_WorkshopUiCommon.MESSAGE_DEPENDENCIES_MISSING;
383 bool enabled = issue == SCR_EScenarioIssues.NONE;
406 if (issue == SCR_EScenarioIssues.NONE)
426 visible &= entryFocused;
428 button.SetVisible(visible);
435 GetGame().GetSaveGameManager().GetSaves(mission.Id(), cb);
444 button.SetVisible(
false);
445 if (!visible || !entryFocused)
451 GetGame().GetSaveGameManager().GetSaves(mission.Id(), cb);
460 button.SetVisible(
false);
467 GetGame().GetSaveGameManager().GetSaves(mission.Id(), cb);
473 if (!success || saves.IsEmpty())
476 auto context = Tuple2<SCR_ModularButtonComponent, bool>.Cast(ctx);
478 context.param1.SetVisible(context.param2);
493 button.SetVisible(visible,
false);
500 GetGame().GetSaveGameManager().GetSaves(mission.Id(), cb);
509 button.SetVisible(
false,
false);
516 GetGame().GetSaveGameManager().GetSaves(mission.Id(), cb);
528 if (!success || saves.IsEmpty())
531 auto context = Tuple2<SCR_InputButtonComponent, bool>.Cast(ctx);
533 context.param1.SetVisible(context.param2,
false);
545 button.SetVisible(visible);
563 button.SetVisible(visible,
false);
576 visible = visible && entryFocused &&
IsMultiplayer(mission) && !
GetGame().IsPlatformGameConsole();
578 button.SetVisible(visible);
596 button.SetVisible(visible,
false);
610 root = button.GetRootWidget();
614 switch (root.GetName())
633 if (tooltip.
IsValid(BUTTON_PLAY) || tooltip.
IsValid(BUTTON_CONTINUE) || tooltip.
IsValid(BUTTON_RESTART))
636 else if (tooltip.
IsValid(BUTTON_FIND_SERVERS))
639 else if (tooltip.
IsValid(BUTTON_HOST))
646enum SCR_EScenarioIssues
656 DEPENDENCIES_AVAILABILITY_ISSUE
class RestAPIHelper< JsonApiStruct T > content
ArmaReforgerScripted GetGame()
class SCR_ScenarioUICommon DEPENDENCIES_VERSION_MISMATCH
class SCR_ScenarioUICommon ADDON_DISABLED
class SCR_ScenarioUICommon ADDON_NOT_DOWNLOADED
class SCR_ScenarioUICommon MISSION_MISSING
class SCR_ScenarioUICommon CONNECTION_ISSUE
class SCR_ScenarioUICommon ADDON_AVAILABILITY_ISSUE
class SCR_ScenarioUICommon DEPENDENCIES_MISSING
int CountOfEnabledAddons()
Return int count of all enabled mods.
static SCR_ERevisionAvailability ItemAvailability(notnull WorkshopItem item)
static SCR_AddonManager GetInstance()
static const string BUTTON_CONFIRM
static string GetConnectionIssuesMessage()
static string GetConnectionIssuesIcon()
void GetDownloadQueueState(out int nCompleted, out int nTotal)
Might get delayed by a frame! Just use it for UI.
static SCR_DownloadManager GetInstance()
static void CreateDialog(MissionWorkshopItem scenario, SCR_DSConfig config)
static void UpdateHostMouseButtonTooltip(SCR_ScriptedWidgetTooltip tooltip, MissionWorkshopItem mission)
static void ProcessLoadSave(bool success, array< SaveGame > saves, MissionWorkshopItem scenario)
static void UpdateJoinMouseButtonTooltip(SCR_ScriptedWidgetTooltip tooltip, MissionWorkshopItem mission)
static SCR_EScenarioIssues GetPlayHighestPriorityIssue(MissionWorkshopItem mission)
static SCR_EScenarioIssues GetJoinHighestPriorityIssue(MissionWorkshopItem mission)
static bool RestartScenario(MissionWorkshopItem scenario)
static void UpdateContinueMouseButton(SCR_ModularButtonComponent button, MissionWorkshopItem mission, bool entryFocused, bool visible=true)
static void UpdateMouseButtonTooltips(SCR_ScriptedWidgetTooltip tooltip, MissionWorkshopItem mission)
static void UpdateInputButtons(MissionWorkshopItem mission, array< SCR_InputButtonComponent > buttons, bool visible=true)
static bool CanJoin(MissionWorkshopItem mission)
static bool IsEnabled(MissionWorkshopItem mission)
static void UpdateJoinInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static void UpdatePlayInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static bool IsMissingDependencies(MissionWorkshopItem mission)
static bool IsMultiplayer(MissionWorkshopItem mission)
static void UpdateMouseButtonTooltip(SCR_ScriptedWidgetTooltip tooltip, SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
static bool CanHost(MissionWorkshopItem mission)
static void UpdateSaveRelatedMouseButton(bool success, array< SaveGame > saves, Managed ctx)
static string GetErrorMessage(SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
static void UpdateJoinMouseButton(SCR_ModularButtonComponent button, MissionWorkshopItem mission, bool entryFocused, bool visible=true)
static bool IsOwnerRestricted(MissionWorkshopItem mission)
static void UpdateHostMouseButton(SCR_ModularButtonComponent button, MissionWorkshopItem mission, bool entryFocused, bool visible=true)
static SCR_EScenarioIssues GetHostHighestPriorityIssue(MissionWorkshopItem mission)
static void UpdateRestartMouseButton(SCR_ModularButtonComponent button, MissionWorkshopItem mission, bool entryFocused, bool visible=true)
static bool AreDependenciesAvailable(MissionWorkshopItem mission)
static void UpdateContinueInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static void UpdatePlayMouseButtonTooltip(SCR_ScriptedWidgetTooltip tooltip, MissionWorkshopItem mission)
static void UpdatePlayMouseButton(SCR_ModularButtonComponent button, MissionWorkshopItem mission, bool entryFocused, bool visible=true)
static bool IsAddonDownloaded(MissionWorkshopItem mission)
static void UpdateHostInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static SCR_ERevisionAvailability GetOwnerRevisionAvailability(MissionWorkshopItem mission)
static string GetErrorTexture(SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
static bool CanPlay(MissionWorkshopItem mission)
static MissionWorkshopItem GetInGameScenario(ResourceName resource)
static bool IsReady(MissionWorkshopItem mission)
static void SetInputButtonEnabled(SCR_InputButtonComponent button, SCR_EScenarioIssues issue, SCR_ERevisionAvailability availability)
static void UpdateSaveRelatedInputButton(bool success, array< SaveGame > saves, Managed ctx)
static void UpdateRestartInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static bool AreMultiplayerServicesAvailable()
static string GetRevisionAvailabilityErrorMessage(WorkshopItem item)
static string GetRevisionAvailabilityErrorTexture(WorkshopItem item)
@ NONE
When Shape is created and not initialized yet.
int IsEnabled()
Returns true if the light is enabled.