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_ServicesStatusDialogUI.c
Go to the documentation of this file.
1
enum
EServiceStatus
2
{
3
RUNNING
= 0,
4
WARNING
,
5
ERROR
,
6
};
7
8
class
SCR_ServicesStatusDialogUI
:
SCR_ConfigurableDialogUi
9
{
10
protected
SCR_ServicesStatusDialogComponent
m_ServicesStatusDialogComponent
;
11
12
protected
static
const
int
LAST_UPDATED_REFRESH_RATE
= 500;
// ping age check frequency (is the ping old enough to enable the "Refresh" button?)
13
14
protected
SCR_InputButtonComponent
m_Refresh
;
15
protected
static
bool
m_bIsOpen
;
16
17
//------------------------------------------------------------------------------------------------
18
protected
override
void
OnMenuOpen
(
SCR_ConfigurableDialogUiPreset
preset)
19
{
20
super.OnMenuOpen(preset);
21
22
m_bIsOpen
=
true
;
23
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Remove(
OnCommStatusUpdatedOpenDialog
);
24
25
m_Refresh
=
FindButton
(
"Refresh"
);
26
if
(
m_Refresh
)
27
m_Refresh
.m_OnActivated.Insert(
OnRefresh
);
28
29
m_ServicesStatusDialogComponent
=
SCR_ServicesStatusDialogComponent
.Cast(
GetContentLayoutRoot
().FindHandler(
SCR_ServicesStatusDialogComponent
));
30
31
#ifdef WORKBENCH
32
if
(!
m_ServicesStatusDialogComponent
)
33
Print
(
"No SCR_ServicesStatusDialogComponent component found | "
+ __FILE__ +
": "
+ __LINE__,
LogLevel
.WARNING);
34
#endif
35
36
OnRefresh
();
37
}
38
39
//------------------------------------------------------------------------------------------------
40
protected
override
void
OnMenuClose
()
41
{
42
super.OnMenuClose();
43
44
m_bIsOpen
=
false
;
45
46
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Remove(
OnCommStatusUpdated
);
47
GetGame
().GetCallqueue().Remove(
UpdateRefreshWidgets
);
48
GetGame
().GetCallqueue().Remove(
OnRefresh
);
49
}
50
51
//------------------------------------------------------------------------------------------------
54
protected
void
OnRefresh
()
55
{
56
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Insert(
OnCommStatusUpdated
);
57
SCR_ServicesStatusHelper
.
RefreshPing
();
58
if
(!
SCR_ServicesStatusHelper
.
IsInRefreshCooldown
())
59
SCR_ServicesStatusHelper
.
ClearRefreshQueue
();
60
61
UpdateUI
(
SCR_ServicesStatusHelper
.
GetLastReceivedCommStatus
());
62
}
63
64
//------------------------------------------------------------------------------------------------
65
protected
void
OnCommStatusUpdated
(
SCR_ECommStatus
status,
float
responseTime,
float
lastSuccessTime,
float
lastFailTime)
66
{
67
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Remove(
OnCommStatusUpdated
);
68
SCR_ServicesStatusHelper
.
ClearRefreshQueue
();
69
70
UpdateUI
(status);
71
72
// Automatic refresh
73
GetGame
().GetCallqueue().Remove(
OnRefresh
);
74
GetGame
().GetCallqueue().CallLater(
OnRefresh
,
SCR_ServicesStatusHelper
.
AUTOMATIC_REFRESH_RATE
);
75
}
76
77
//------------------------------------------------------------------------------------------------
79
protected
void
UpdateUI
(
SCR_ECommStatus
status)
80
{
81
if
(!
m_ServicesStatusDialogComponent
)
82
return
;
83
84
EServiceStatus
servicesStatus;
85
86
switch
(status)
87
{
88
case
SCR_ECommStatus
.NOT_EXECUTED:
89
{
90
servicesStatus =
EServiceStatus
.ERROR;
91
m_ServicesStatusDialogComponent
.SetAllServicesState(
EServiceStatus
.ERROR);
92
break
;
93
}
94
95
case
SCR_ECommStatus
.RUNNING:
96
{
97
servicesStatus =
EServiceStatus
.WARNING;
98
m_ServicesStatusDialogComponent
.SetAllServicesState(
EServiceStatus
.WARNING);
99
break
;
100
}
101
102
case
SCR_ECommStatus
.FINISHED:
103
{
104
servicesStatus =
UpdateServiceStates
();
105
break
;
106
}
107
108
case
SCR_ECommStatus
.FAILED:
109
{
110
servicesStatus =
EServiceStatus
.WARNING;
111
m_ServicesStatusDialogComponent
.SetAllServicesState(
EServiceStatus
.WARNING);
112
break
;
113
}
114
}
115
116
// Update main Icon and message
117
m_ServicesStatusDialogComponent
.UpdateServicesMessage(status, servicesStatus);
118
119
if
(
m_wImgTitleIcon
)
120
m_ServicesStatusDialogComponent
.SetStatusImageAndColor(
m_wImgTitleIcon
, servicesStatus,
true
);
121
122
// Update refresh widgets
123
UpdatePingValueUI
();
124
UpdateRefreshWidgets
();
125
}
126
127
//------------------------------------------------------------------------------------------------
129
protected
EServiceStatus
UpdateServiceStates
()
130
{
131
EServiceStatus
generalStatus =
EServiceStatus
.RUNNING;
// General Status reporting! o7
132
133
// Main status check
134
ServiceStatusItem
mainStatus =
SCR_ServicesStatusHelper
.
GetMainStatus
();
135
if
(!mainStatus || mainStatus.Status().IsEmpty())
136
{
137
generalStatus =
EServiceStatus
.ERROR;
138
m_ServicesStatusDialogComponent
.SetAllServicesState(generalStatus);
139
return
generalStatus;
140
}
141
142
// Update states of services
143
int
errors, warnings, totalServices;
144
145
EServiceStatus
status;
146
foreach
(
SCR_BackendServiceDisplay
serviceInfo :
m_ServicesStatusDialogComponent
.GetAllServices())
147
{
148
if
(!
SCR_ServicesStatusHelper
.
DisplayServiceOnCurrentPlatform
(serviceInfo))
149
continue
;
150
151
status =
GetEnumStatus
(serviceInfo.m_sServiceId);
152
m_ServicesStatusDialogComponent
.SetServiceState(serviceInfo.m_sId, status);
153
154
if
(status ==
EServiceStatus
.ERROR)
155
errors++;
156
if
(status ==
EServiceStatus
.WARNING)
157
warnings++;
158
159
totalServices++;
160
}
161
162
if
(warnings > 0)
163
generalStatus =
EServiceStatus
.WARNING;
164
if
(errors + warnings == totalServices)
165
generalStatus =
EServiceStatus
.ERROR;
166
167
return
generalStatus;
168
}
169
170
//------------------------------------------------------------------------------------------------
171
protected
void
UpdatePingValueUI
()
172
{
173
if
(!
m_ServicesStatusDialogComponent
)
174
return
;
175
176
m_ServicesStatusDialogComponent
.SetPing(
SCR_ServicesStatusHelper
.
GetPingValue
());
177
}
178
179
//------------------------------------------------------------------------------------------------
180
protected
void
UpdateRefreshWidgets
()
181
{
182
GetGame
().GetCallqueue().Remove(
UpdateRefreshWidgets
);
183
GetGame
().GetCallqueue().CallLater(
UpdateRefreshWidgets
,
LAST_UPDATED_REFRESH_RATE
);
184
185
if
(
m_Refresh
)
186
m_Refresh
.SetEnabled(
SCR_ServicesStatusHelper
.
CanRefresh
());
187
188
if
(!
m_ServicesStatusDialogComponent
)
189
return
;
190
191
m_ServicesStatusDialogComponent
.SetLastUpdateMessage(
SCR_ServicesStatusHelper
.
GetPingAge
());
192
193
// Refresh countdown
194
int
seconds = ((
SCR_ServicesStatusHelper
.
REFRESH_COOLDOWN
-
SCR_ServicesStatusHelper
.
GetPingAge
()) * 0.001) + 1;
195
m_ServicesStatusDialogComponent
.SetRefreshMessage(seconds, !
SCR_ServicesStatusHelper
.
CanRefresh
() && seconds > 0);
196
}
197
198
//------------------------------------------------------------------------------------------------
199
protected
EServiceStatus
GetEnumStatus
(
string
wantedItemName)
200
{
201
ServiceStatusItem
serviceItem =
SCR_ServicesStatusHelper
.
GetStatusByName
(wantedItemName);
202
if
(!serviceItem)
203
return
EServiceStatus
.WARNING;
204
205
return
GetStatusFromString
(serviceItem.Status());
206
}
207
208
//------------------------------------------------------------------------------------------------
209
protected
EServiceStatus
GetStatusFromString
(
string
status)
210
{
211
status.ToLower();
212
213
if
(status ==
SCR_ServicesStatusHelper
.
STATUS_OK
)
214
return
EServiceStatus
.RUNNING;
215
216
if
(status ==
SCR_ServicesStatusHelper
.
STATUS_ERROR
)
217
return
EServiceStatus
.ERROR;
218
219
return
EServiceStatus
.WARNING;
220
}
221
222
//------------------------------------------------------------------------------------------------
223
// TODO: look at the code where this is called, it's working weirdly
224
// the waiting-for-display logic should happen in MainMenuUI, the refresh logic in here
225
static
void
OpenIfServicesAreNotOK
()
226
{
227
// returns false even if enabled but without internet connection for now
228
if
(!
SCR_ServicesStatusHelper
.
IsBackendEnabled
())
229
{
230
// SCR_CommonDialogs.CreateServicesStatusDialog();
231
return
;
232
}
233
234
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Insert(
OnCommStatusUpdatedOpenDialog
);
235
SCR_ServicesStatusHelper
.
RefreshPing
();
236
}
237
238
//------------------------------------------------------------------------------------------------
239
protected
static
void
OnCommStatusUpdatedOpenDialog
(
SCR_ECommStatus
status,
float
responseTime,
float
lastSuccessTime,
float
lastFailTime)
240
{
241
SCR_ServicesStatusHelper
.
GetOnCommStatusCheckFinished
().Remove(
OnCommStatusUpdatedOpenDialog
);
242
243
ServiceStatusItem
mainStatus =
SCR_ServicesStatusHelper
.
GetMainStatus
();
244
245
bool
statusIssues = status ==
SCR_ECommStatus
.NOT_EXECUTED || !mainStatus || mainStatus.Status() !=
SCR_ServicesStatusHelper
.
STATUS_OK
;
246
if
(statusIssues && !
m_bIsOpen
&&
GetGame
().
m_bIsMainMenuOpen
)
//Open in core menus only
247
SCR_CommonDialogs
.CreateServicesStatusDialog();
248
}
249
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
m_bIsMainMenuOpen
bool m_bIsMainMenuOpen
Definition
game.c:57
EServiceStatus
EServiceStatus
Definition
SCR_ServicesStatusDialogUI.c:2
SCR_ECommStatus
SCR_ECommStatus
This class may become obsolete on BackendAPI update.
Definition
SCR_ServicesStatusHelper.c:3
SCR_BackendServiceDisplay
Definition
SCR_ServicesStatusHelper.c:494
SCR_CommonDialogs
Definition
CommonDialogs.c:6
SCR_ConfigurableDialogUi
Definition
SCR_ConfigurableDialogUI.c:17
SCR_ConfigurableDialogUi::GetContentLayoutRoot
Widget GetContentLayoutRoot()
Returns the root of the content layout.
Definition
SCR_ConfigurableDialogUI.c:241
SCR_ConfigurableDialogUi::FindButton
SCR_InputButtonComponent FindButton(string tag)
Returns a button with given tag.
Definition
SCR_ConfigurableDialogUI.c:419
SCR_ConfigurableDialogUi::m_wImgTitleIcon
ImageWidget m_wImgTitleIcon
Definition
SCR_ConfigurableDialogUI.c:57
SCR_ConfigurableDialogUiPreset
Configuration for a dialog.
Definition
SCR_ConfigurableDialogUI.c:764
SCR_InputButtonComponent
Definition
SCR_InputButtonComponent.c:2
SCR_ServicesStatusDialogComponent
Definition
SCR_ServicesStatusDialogComponent.c:2
SCR_ServicesStatusDialogUI
Definition
SCR_ServicesStatusDialogUI.c:9
SCR_ServicesStatusDialogUI::UpdateUI
void UpdateUI(SCR_ECommStatus status)
refresh UI through ServicesStatusDialogComponent
Definition
SCR_ServicesStatusDialogUI.c:79
SCR_ServicesStatusDialogUI::m_ServicesStatusDialogComponent
SCR_ServicesStatusDialogComponent m_ServicesStatusDialogComponent
Definition
SCR_ServicesStatusDialogUI.c:10
SCR_ServicesStatusDialogUI::m_bIsOpen
static bool m_bIsOpen
Definition
SCR_ServicesStatusDialogUI.c:15
SCR_ServicesStatusDialogUI::OnMenuClose
override void OnMenuClose()
Definition
SCR_ServicesStatusDialogUI.c:40
SCR_ServicesStatusDialogUI::GetStatusFromString
EServiceStatus GetStatusFromString(string status)
Definition
SCR_ServicesStatusDialogUI.c:209
SCR_ServicesStatusDialogUI::OnCommStatusUpdated
void OnCommStatusUpdated(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
Definition
SCR_ServicesStatusDialogUI.c:65
SCR_ServicesStatusDialogUI::OnMenuOpen
override void OnMenuOpen(SCR_ConfigurableDialogUiPreset preset)
Definition
SCR_ServicesStatusDialogUI.c:18
SCR_ServicesStatusDialogUI::m_Refresh
SCR_InputButtonComponent m_Refresh
Definition
SCR_ServicesStatusDialogUI.c:14
SCR_ServicesStatusDialogUI::OnCommStatusUpdatedOpenDialog
static void OnCommStatusUpdatedOpenDialog(SCR_ECommStatus status, float responseTime, float lastSuccessTime, float lastFailTime)
Definition
SCR_ServicesStatusDialogUI.c:239
SCR_ServicesStatusDialogUI::LAST_UPDATED_REFRESH_RATE
static const int LAST_UPDATED_REFRESH_RATE
Definition
SCR_ServicesStatusDialogUI.c:12
SCR_ServicesStatusDialogUI::UpdateServiceStates
EServiceStatus UpdateServiceStates()
Updates status of services and returns general status based on the number of active services.
Definition
SCR_ServicesStatusDialogUI.c:129
SCR_ServicesStatusDialogUI::GetEnumStatus
EServiceStatus GetEnumStatus(string wantedItemName)
Definition
SCR_ServicesStatusDialogUI.c:199
SCR_ServicesStatusDialogUI::OpenIfServicesAreNotOK
static void OpenIfServicesAreNotOK()
Definition
SCR_ServicesStatusDialogUI.c:225
SCR_ServicesStatusDialogUI::OnRefresh
void OnRefresh()
Definition
SCR_ServicesStatusDialogUI.c:54
SCR_ServicesStatusDialogUI::UpdatePingValueUI
void UpdatePingValueUI()
Definition
SCR_ServicesStatusDialogUI.c:171
SCR_ServicesStatusDialogUI::UpdateRefreshWidgets
void UpdateRefreshWidgets()
Definition
SCR_ServicesStatusDialogUI.c:180
SCR_ServicesStatusHelper
Definition
SCR_ServicesStatusHelper.c:16
SCR_ServicesStatusHelper::CanRefresh
static bool CanRefresh()
Definition
SCR_ServicesStatusHelper.c:250
SCR_ServicesStatusHelper::GetPingValue
static int GetPingValue()
Definition
SCR_ServicesStatusHelper.c:231
SCR_ServicesStatusHelper::GetMainStatus
static ServiceStatusItem GetMainStatus()
Definition
SCR_ServicesStatusHelper.c:299
SCR_ServicesStatusHelper::GetOnCommStatusCheckFinished
static ScriptInvokerCommStatus GetOnCommStatusCheckFinished()
Definition
SCR_ServicesStatusHelper.c:422
SCR_ServicesStatusHelper::RefreshPing
static void RefreshPing()
Definition
SCR_ServicesStatusHelper.c:94
SCR_ServicesStatusHelper::IsBackendEnabled
static bool IsBackendEnabled()
Definition
SCR_ServicesStatusHelper.c:60
SCR_ServicesStatusHelper::REFRESH_COOLDOWN
static const int REFRESH_COOLDOWN
Definition
SCR_ServicesStatusHelper.c:26
SCR_ServicesStatusHelper::STATUS_OK
static const string STATUS_OK
Definition
SCR_ServicesStatusHelper.c:31
SCR_ServicesStatusHelper::STATUS_ERROR
static const string STATUS_ERROR
Definition
SCR_ServicesStatusHelper.c:32
SCR_ServicesStatusHelper::DisplayServiceOnCurrentPlatform
static bool DisplayServiceOnCurrentPlatform(SCR_BackendServiceDisplay service)
Definition
SCR_ServicesStatusHelper.c:355
SCR_ServicesStatusHelper::AUTOMATIC_REFRESH_RATE
static const int AUTOMATIC_REFRESH_RATE
Definition
SCR_ServicesStatusHelper.c:28
SCR_ServicesStatusHelper::ClearRefreshQueue
static void ClearRefreshQueue()
Definition
SCR_ServicesStatusHelper.c:216
SCR_ServicesStatusHelper::IsInRefreshCooldown
static bool IsInRefreshCooldown()
Definition
SCR_ServicesStatusHelper.c:257
SCR_ServicesStatusHelper::GetLastReceivedCommStatus
static SCR_ECommStatus GetLastReceivedCommStatus()
Definition
SCR_ServicesStatusHelper.c:223
SCR_ServicesStatusHelper::GetStatusByName
static ServiceStatusItem GetStatusByName(string statusName)
Definition
SCR_ServicesStatusHelper.c:307
SCR_ServicesStatusHelper::GetPingAge
static int GetPingAge()
Return the last ping's age in milliseconds.
Definition
SCR_ServicesStatusHelper.c:241
ServiceStatusItem
Service status item.
Definition
ServiceStatusItem.c:14
RUNNING
@ RUNNING
Definition
EAIActionState.c:15
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
WARNING
@ WARNING
Definition
LogLevel.c:19
ERROR
@ ERROR
Same as DELETE, but global error count for OnAfterLoad is affected.
Definition
LogLevel.c:20
UpdateUI
void UpdateUI()
Virtual method for updating the UI when an item is removed/added.
Definition
ScriptedBaseInventoryStorageComponent.c:9
scripts
Game
UI
Menu
SCR_ServicesStatusDialogUI.c
Generated by
1.17.0