Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ScenarioDialogs.c
Go to the documentation of this file.
1
4//------------------------------------------------------------------------------------------------
6{
7 static protected const ResourceName DIALOGS_CONFIG = "{F020A20CC93DB3C7}Configs/ContentBrowser/ScenarioDialogs.conf";
8
9 //------------------------------------------------------------------------------------------------
10 static SCR_ConfigurableDialogUi CreateDialog(string presetName)
11 {
13 }
14
15 //------------------------------------------------------------------------------------------------
17 {
18 SCR_ScenarioConfirmationDialogUi dialogUI = new SCR_ScenarioConfirmationDialogUi(scenario, onFavoritesResponse);
19 SCR_ConfigurableDialogUi.CreateFromPreset(DIALOGS_CONFIG, "SCENARIO_CONFIRMATION", dialogUI);
20
21 return dialogUI;
22 }
23}
24
25//------------------------------------------------------------------------------------------------
27{
29
33 protected ref array<SCR_InputButtonComponent> m_aRightFooterButtons = {};
34
35 protected SCR_ModularButtonComponent m_FavoriteStarButton;
36
38 protected bool m_bHandleFavoriting = true;
39
41
42 //------------------------------------------------------------------------------------------------
44 {
45 m_Scenario = scenario;
46
47 if (onFavoritesResponse)
48 {
49 m_bHandleFavoriting = false;
50 onFavoritesResponse.Insert(UpdateFavoriteWidgets);
51 }
52 }
53
55 //------------------------------------------------------------------------------------------------
57 {
58 super.OnMenuOpen(preset);
59
60 if (!m_Scenario)
61 return;
62
63 // Connection state
66
68 SetTitle(m_Scenario.Name());
69
70 Widget backgroundImageBackend = GetRootWidget().FindAnyWidget("BackgroundImageBackend");
71 if (backgroundImageBackend)
72 {
73 SCR_ScenarioBackendImageComponent backendImageComp = SCR_ScenarioBackendImageComponent.Cast(backgroundImageBackend.FindHandler(SCR_ScenarioBackendImageComponent));
74 if (backendImageComp)
75 backendImageComp.SetImage(m_Scenario.Thumbnail());
76 }
77
79 Widget contentLayoutRoot = GetContentLayoutRoot();
80 if (!contentLayoutRoot)
81 return;
82
83 Widget singlePlayerImage = contentLayoutRoot.FindAnyWidget("SinglePlayerImageOverlay");
84 Widget multiPlayerImage = contentLayoutRoot.FindAnyWidget("MultiPlayerImageOverlay");
85 TextWidget playerCountLabelText = TextWidget.Cast(contentLayoutRoot.FindAnyWidget("PlayerCountLabelText"));
86
87 Widget sourceImageOfficial = contentLayoutRoot.FindAnyWidget("SourceImageOfficialOverlay");
88 Widget sourceImageCommunity = contentLayoutRoot.FindAnyWidget("SourceImageCommunityOverlay");
89 TextWidget sourceNameTextOfficial = TextWidget.Cast(contentLayoutRoot.FindAnyWidget("SourceNameTextOfficial"));
90 TextWidget sourceNameTextCommunity = TextWidget.Cast(contentLayoutRoot.FindAnyWidget("SourceNameTextCommunity"));
91
93 int playerCount = m_Scenario.GetPlayerCount();
95 singlePlayerImage.SetVisible(!mp);
96 multiPlayerImage.SetVisible(mp);
97
98 playerCountLabelText.SetTextFormat("#AR-Scenario_Players", playerCount);
99
101 bool isSourceAddonValid;
102 WorkshopItem sourceAddon = m_Scenario.GetOwner();
103
104 if (sourceAddon)
105 {
106 isSourceAddonValid = true;
107 sourceNameTextCommunity.SetText(sourceAddon.Name());
108 }
109 else
110 {
111 isSourceAddonValid = false;
112 }
113
114 sourceImageOfficial.SetVisible(!isSourceAddonValid);
115 sourceImageCommunity.SetVisible(isSourceAddonValid);
116 sourceNameTextOfficial.SetVisible(!isSourceAddonValid);
117 sourceNameTextCommunity.SetVisible(isSourceAddonValid);
118
121
122 m_FindServers = FindButton(SCR_ScenarioUICommon.BUTTON_FIND_SERVERS);
123 m_Host = FindButton(SCR_ScenarioUICommon.BUTTON_HOST);
124
125 m_Favorite = FindButton(SCR_ScenarioUICommon.BUTTON_FAVORITE);
126 if (m_Favorite)
127 m_Favorite.m_OnActivated.Insert(OnFavoritesButton);
128
130 Widget favButton = m_wRoot.FindAnyWidget("FavoriteButton");
131 if (favButton)
132 {
133 m_FavoriteStarButton = SCR_ModularButtonComponent.FindComponent(favButton);
135 m_FavoriteStarButton.m_OnClicked.Insert(OnFavoritesButton);
136 }
137
139 UpdateFavoriteWidgets(m_Scenario.IsFavorite());
140 }
141
142 //----------------------------------------------------------------------------------------
147
148 //------------------------------------------------------------------------------------------------
150 {
151 if (GetButtonTag(button) == SCR_ScenarioUICommon.BUTTON_FAVORITE)
152 return; // We use a specific invoker for favorites button
153
154 super.OnButtonPressed(button);
155
156 bool close = true;
157 switch (m_sLastPressedButtonTag)
158 {
159 case SCR_ScenarioUICommon.BUTTON_FIND_SERVERS: close = SCR_ScenarioUICommon.CanJoin(m_Scenario); break;
160 case SCR_ScenarioUICommon.BUTTON_HOST: close = SCR_ScenarioUICommon.CanHost(m_Scenario); break;
161 }
162
163 if (close)
164 Close();
165 }
166
167 //------------------------------------------------------------------------------------------------
169 {
170 SCR_InputButtonComponent comp = super.CreateButton(buttonPreset);
171
172 Widget w;
173 if (comp)
174 w = comp.GetRootWidget();
175
176 if (w)
177 w.SetName(buttonPreset.m_sTag);
178
179 if (buttonPreset.m_eAlign == EConfigurableDialogUiButtonAlign.RIGHT)
180 m_aRightFooterButtons.Insert(comp);
181
182 return comp;
183 }
184
186 //------------------------------------------------------------------------------------------------
187 protected void OnCommStatusCheckFinished(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
188 {
191 }
192
193 //------------------------------------------------------------------------------------------------
194 protected void OnFavoritesButton()
195 {
196 if (!m_Scenario)
197 return;
198
200 {
201 m_OnFavorite.Invoke(m_Scenario);
202 return;
203 }
204
205 bool isFavorite = !m_Scenario.IsFavorite();
206 m_Scenario.SetFavorite(isFavorite);
207 UpdateFavoriteWidgets(isFavorite);
208 }
209
210 //------------------------------------------------------------------------------------------------
211 protected void UpdateFavoriteWidgets(bool isFavorite)
212 {
213 // Footer Button
214 m_Favorite.SetLabel(UIConstants.GetFavoriteLabel(isFavorite));
215
216 // Star Button
218 m_FavoriteStarButton.SetToggled(isFavorite, false);
219 }
220
222 //------------------------------------------------------------------------------------------------
224 {
225 return m_Scenario;
226 }
227
228 //------------------------------------------------------------------------------------------------
236}
override void OnMenuClose()
SCR_ExitGameWhileDownloadingDialog m_Scenario
EConfigurableDialogUiButtonAlign
Configuration for button alignment.
Widget m_wRoot
Widget GetRootWidget()
void OnCommStatusCheckFinished(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
override void OnMenuOpen()
void SCR_ScenarioConfirmationDialogUi(MissionWorkshopItem scenario, ScriptInvokerBool onFavoritesResponse=null)
void OnFavoritesButton()
override SCR_InputButtonComponent CreateButton(SCR_ConfigurableDialogUiButtonPreset buttonPreset)
override void OnButtonPressed(SCR_InputButtonComponent button)
bool m_bHandleFavoriting
If true, the dialog itself will set the scenario favorite state, otherwise it will live it to the men...
SCR_InputButtonComponent m_Favorite
SCR_InputButtonComponent m_Host
SCR_InputButtonComponent m_FindServers
void UpdateFavoriteWidgets(bool isFavorite)
MissionWorkshopItem GetScenario()
PUBLIC.
ref array< SCR_InputButtonComponent > m_aRightFooterButtons
ref ScriptInvokerMissionWorkshopItem m_OnFavorite
ScriptInvokerMissionWorkshopItem GetOnFavorite()
SCR_ModularButtonComponent m_FavoriteStarButton
ScriptInvokerBase< ScriptInvokerBoolMethod > ScriptInvokerBool
SCR_ECommStatus
This class may become obsolete on BackendAPI update.
ScriptInvokerBase< ScriptInvokerMissionWorkshopItemMethod > ScriptInvokerMissionWorkshopItem
proto native void Close()
static SCR_ConfigurableDialogUi CreateFromPreset(ResourceName presetsResourceName, string tag, SCR_ConfigurableDialogUi customDialogObj=null)
Creates a dialog from preset.
Same as SCR_BackendImageComponent, but implements default image based on scenario.
static SCR_ConfigurableDialogUi CreateDialog(string presetName)
const ResourceName DIALOGS_CONFIG
static SCR_ScenarioConfirmationDialogUi CreateScenarioConfirmationDialog(MissionWorkshopItem scenario, ScriptInvokerBool onFavoritesResponse=null)
static void UpdateInputButtons(MissionWorkshopItem mission, array< SCR_InputButtonComponent > buttons, bool visible=true)
static bool CanJoin(MissionWorkshopItem mission)
static void UpdateJoinInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static bool IsMultiplayer(MissionWorkshopItem mission)
static bool CanHost(MissionWorkshopItem mission)
static void UpdateHostInputButton(SCR_InputButtonComponent button, MissionWorkshopItem mission, bool visible=true)
static ScriptInvokerCommStatus GetOnCommStatusCheckFinished()
Workshop Item instance.