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_WorkshopAddonBarComponent.c
Go to the documentation of this file.
1
class
SCR_WorkshopAddonBarComponent
:
SCR_ScriptedWidgetComponent
2
{
3
protected
ref
SCR_WorkshopAddonBarWidgets
m_Widgets
=
new
SCR_WorkshopAddonBarWidgets
();
4
5
[
Attribute
(
"20"
,
UIWidgets
.EditBox,
desc
:
"After how many character should be display preset name cut"
)]
6
protected
int
m_iPresetNameCap
;
7
8
protected
static
SCR_ConfigurableDialogUi
m_FailDialog
;
9
10
protected
ref
SCR_AddonPatchSizeLoader
m_Loader
=
new
SCR_AddonPatchSizeLoader
();
11
protected
SCR_LoadingOverlayDialog
m_LoadingOverlay
;
12
13
protected
const
int
UPDATE_DELAY
= 250;
14
15
//------------------------------------------------------------------------------------------------
16
override
void
HandlerAttached
(
Widget
w)
17
{
18
super.HandlerAttached(w);
19
20
if
(!
GetGame
().InPlayMode())
21
return
;
22
23
m_Widgets
.Init(w);
24
25
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
26
if
(!mgr)
27
return
;
28
29
mgr.
m_OnAddonsEnabledChanged
.Insert(
Callback_OnAddonsEnabledChanged
);
30
mgr.
GetPresetStorage
().
GetEventOnUsedPresetChanged
().Insert(
OnUsedPresetChanged
);
31
32
OnUsedPresetChanged
(mgr.
GetPresetStorage
().
GetUsedPreset
());
33
34
UpdateAllWidgets
();
35
36
m_Widgets
.m_PresetsButtonComponent.GetButton().m_OnClicked.Insert(
SCR_CommonDialogs
.CreateModPresetsDialog);
37
m_Widgets
.m_UpdateButtonComponent.GetButton().m_OnClicked.Insert(
OnUpdateButtonClicked
);
38
39
HandleUpdatesButton
();
40
GetGame
().GetCallqueue().CallLater(
HandleUpdatesButton
,
UPDATE_DELAY
,
true
);
41
42
SCR_MenuHelper
.
GetOnMenuOpen
().Insert(
OnMenuShow
);
43
}
44
45
//------------------------------------------------------------------------------------------------
46
override
void
HandlerDeattached
(
Widget
w)
47
{
48
super.HandlerDeattached(w);
49
50
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
51
52
if
(mgr)
53
SCR_AddonManager
.
GetInstance
().
m_OnAddonsEnabledChanged
.Remove(
Callback_OnAddonsEnabledChanged
);
54
55
if
(
m_LoadingOverlay
)
56
m_LoadingOverlay
.Close();
57
58
GetGame
().GetCallqueue().Remove(
HandleUpdatesButton
);
59
60
SCR_MenuHelper
.
GetOnMenuOpen
().Remove(
OnMenuShow
);
61
}
62
63
//------------------------------------------------------------------------------------------------
64
protected
void
OnMenuShow
(
ChimeraMenuBase
menu)
65
{
66
if
(
ChimeraMenuBase
.
GetOwnerMenu
(
m_wRoot
) == menu)
67
HandleUpdatesButton
();
68
}
69
70
//------------------------------------------------------------------------------------------------
71
protected
void
Callback_OnAddonsEnabledChanged
()
72
{
73
UpdateAllWidgets
();
74
}
75
76
//------------------------------------------------------------------------------------------------
78
protected
void
OnUsedPresetChanged
(
string
name)
79
{
80
// Cap
81
if
(!name.IsEmpty() && name.Length() >
m_iPresetNameCap
)
82
name = name.Substring(0,
m_iPresetNameCap
) +
"..."
;
83
84
m_Widgets
.m_PresetsButtonComponent.SetLabelText(name);
85
}
86
87
//------------------------------------------------------------------------------------------------
88
protected
void
UpdateAllWidgets
()
89
{
90
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
91
92
if
(!mgr)
93
return
;
94
95
// Mod count text
96
int
nAddonsEnabled =
SCR_AddonManager
.
CountItemsAnd
(
SCR_AddonManager
.
GetInstance
().
GetOfflineAddons
(),
EWorkshopItemQuery
.ENABLED |
EWorkshopItemQuery
.ONLY_WORKSHOP_ITEM);
97
m_Widgets
.m_PresetsButtonComponent.SetCountText(nAddonsEnabled.ToString());
98
}
99
100
//------------------------------------------------------------------------------------------------
101
protected
void
OnUpdateButtonClicked
()
102
{
103
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
104
array<ref SCR_WorkshopItem> addonsOutdated =
SCR_AddonManager
.
SelectItemsBasic
(mgr.
GetOfflineAddons
(),
EWorkshopItemQuery
.UPDATE_AVAILABLE);
105
106
// Load patch sizes for latest revision
107
m_Loader
=
new
SCR_AddonPatchSizeLoader
();
108
109
foreach
(
SCR_WorkshopItem
item : addonsOutdated)
110
{
111
Revision
rev = item.GetLatestRevision();
112
item.SetItemTargetRevision(rev);
113
m_Loader
.InsertItem(item);
114
}
115
116
m_LoadingOverlay
=
SCR_LoadingOverlayDialog
.
Create
();
117
118
m_Loader
.GetOnAllPatchSizeLoaded().Insert(
OnUpdatePatchSizeLoaded
);
119
m_Loader
.LoadPatchSizes();
120
}
121
122
//------------------------------------------------------------------------------------------------
123
protected
void
OnUpdatePatchSizeLoaded
(
SCR_AddonPatchSizeLoader
loader,
bool
allLoaded)
124
{
125
// Cleanup
126
m_Loader
.GetOnAllPatchSizeLoaded().Remove(
OnUpdatePatchSizeLoaded
);
127
if
(
m_LoadingOverlay
)
128
m_LoadingOverlay
.Close();
129
130
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
131
array<ref SCR_WorkshopItem> addonsOutdated =
SCR_AddonManager
.
SelectItemsBasic
(mgr.
GetOfflineAddons
(),
EWorkshopItemQuery
.UPDATE_AVAILABLE);
132
133
// Open download confirmation dialog
134
array<ref Tuple2<SCR_WorkshopItem, ref Revision>> addonsAndVersions = {};
135
foreach
(
SCR_WorkshopItem
item : addonsOutdated)
136
{
137
addonsAndVersions.Insert(
new
Tuple2<SCR_WorkshopItem, ref Revision>(item, item.GetLatestRevision()));
138
139
}
140
141
SCR_AddonUpdateConfirmationDialog
dialog =
SCR_AddonUpdateConfirmationDialog
.CreateForUpdates(addonsAndVersions,
false
);
142
if
(dialog)
143
dialog.m_OnClose.Insert(
OnAddonUpdateDialogClose
);
144
}
145
146
//------------------------------------------------------------------------------------------------
147
protected
void
OnAddonUpdateDialogClose
(
SCR_ConfigurableDialogUi
dialog)
148
{
149
HandleUpdatesButton
();
150
}
151
152
//------------------------------------------------------------------------------------------------
153
protected
void
HandleUpdatesButton
()
154
{
155
if
(!
SCR_MenuHelper
.
IsInTopMenu
(
GetRootWidget
()))
156
{
157
m_Widgets
.m_UpdateButtonComponent.SetVisible(
false
);
158
return
;
159
}
160
161
SCR_AddonManager
mgr =
SCR_AddonManager
.
GetInstance
();
162
array<ref SCR_WorkshopItem> addonsOutdated = {};
163
164
if
(mgr)
165
addonsOutdated =
SCR_AddonManager
.
SelectItemsBasic
(mgr.
GetOfflineAddons
(),
EWorkshopItemQuery
.UPDATE_AVAILABLE);
166
167
int
nOutdated;
168
169
foreach
(
SCR_WorkshopItem
item : addonsOutdated)
170
{
171
if
(!item.IsDownloadRunning())
172
nOutdated++;
173
}
174
175
m_Widgets
.m_UpdateButtonComponent.SetVisible(nOutdated > 0);
176
177
if
(nOutdated > 0)
178
m_Widgets
.m_UpdateButtonComponent.SetCountText(nOutdated.ToString());
179
}
180
181
//------------------------------------------------------------------------------------------------
182
protected
void
DisplayFailDialog
()
183
{
184
// Check if dialog is not already opened
185
if
(
m_FailDialog
)
186
return
;
187
188
array<ref Tuple2<SCR_WorkshopItem, ref Revision>> failed = {};
189
array<ref SCR_WorkshopItemActionDownload> failedActions =
SCR_DownloadManager
.
GetInstance
().
GetFailedDownloads
();
190
191
foreach
(
SCR_WorkshopItemActionDownload
action : failedActions)
192
{
193
SCR_WorkshopItem
item = action.m_Wrapper;
194
Revision
version = item.
GetDependency
().GetRevision();
195
196
failed.Insert(
new
Tuple2<SCR_WorkshopItem, ref Revision>>(item, version));
197
}
198
199
// Setup dialog
200
SCR_DownloadFailDialog
dialog =
SCR_DownloadFailDialog
.CreateFailedAddonsDialog(failed,
false
);
201
if
(!dialog)
202
return
;
203
204
m_FailDialog
= dialog;
205
m_FailDialog
.m_OnConfirm.Insert(
Callback_OnFailDialogConfirm
);
206
}
207
208
//------------------------------------------------------------------------------------------------
209
protected
void
Callback_OnFailDialogConfirm
(
SCR_ConfigurableDialogUi
dialog)
210
{
211
// Clear dialog
212
m_FailDialog
.m_OnConfirm.Clear();
213
m_FailDialog
.Close();
214
m_FailDialog
= null;
215
SCR_DownloadManager
.
GetInstance
().
ClearFailedDownloads
();
216
}
217
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
EWorkshopItemQuery
EWorkshopItemQuery
Definition
SCR_AddonManager.c:35
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
ChimeraMenuBase
Constant variables used in various menus.
Definition
ChimeraMenuBase.c:72
ChimeraMenuBase::GetOwnerMenu
static ChimeraMenuBase GetOwnerMenu(Widget w)
Returns parent menu of a widget.
Definition
ChimeraMenuBase.c:179
Revision
Definition
Revision.c:13
SCR_AddonManager
Definition
SCR_AddonManager.c:80
SCR_AddonManager::GetOfflineAddons
array< ref SCR_WorkshopItem > GetOfflineAddons()
Returns array with all offline addons.
Definition
SCR_AddonManager.c:159
SCR_AddonManager::SelectItemsBasic
static array< ref SCR_WorkshopItem > SelectItemsBasic(array< ref SCR_WorkshopItem > items, EWorkshopItemQuery query)
Definition
SCR_AddonManager.c:304
SCR_AddonManager::CountItemsAnd
static int CountItemsAnd(array< ref SCR_WorkshopItem > items, EWorkshopItemQuery query, bool returnOnFirstMatch=false)
Counts items which match query. All flags must match.
Definition
SCR_AddonManager.c:353
SCR_AddonManager::GetPresetStorage
SCR_WorkshopAddonManagerPresetStorage GetPresetStorage()
Definition
SCR_AddonManager.c:988
SCR_AddonManager::m_OnAddonsEnabledChanged
ref ScriptInvoker m_OnAddonsEnabledChanged
Definition
SCR_AddonManager.c:105
SCR_AddonManager::GetInstance
static SCR_AddonManager GetInstance()
Definition
SCR_AddonManager.c:139
SCR_AddonPatchSizeLoader
Definition
SCR_AddonPatchSizeLoader.c:10
SCR_AddonUpdateConfirmationDialog
Definition
SCR_AddonUpdateConfirmationDialog.c:10
SCR_CommonDialogs
Definition
CommonDialogs.c:6
SCR_ConfigurableDialogUi
Definition
SCR_ConfigurableDialogUI.c:17
SCR_DownloadFailDialog
Definition
SCR_DownloadFailDialog.c:7
SCR_DownloadManager
Definition
SCR_DownloadManager.c:21
SCR_DownloadManager::GetFailedDownloads
array< ref SCR_WorkshopItemActionDownload > GetFailedDownloads()
Definition
SCR_DownloadManager.c:478
SCR_DownloadManager::ClearFailedDownloads
void ClearFailedDownloads()
Definition
SCR_DownloadManager.c:490
SCR_DownloadManager::GetInstance
static SCR_DownloadManager GetInstance()
Definition
SCR_DownloadManager.c:91
SCR_LoadingOverlayDialog
Definition
SCR_LoadingOverlayDialog.c:6
SCR_LoadingOverlayDialog::Create
static SCR_LoadingOverlayDialog Create(string text=string.Empty)
Definition
SCR_LoadingOverlayDialog.c:21
SCR_MenuHelper
Definition
SCR_MenuHelper.c:19
SCR_MenuHelper::IsInTopMenu
static bool IsInTopMenu(notnull Widget componentRoot)
NB: This will return false if the widget is in a DIALOG on top of the MENU!!!
Definition
SCR_MenuHelper.c:144
SCR_MenuHelper::GetOnMenuOpen
static ScriptInvokerMenu GetOnMenuOpen()
Definition
SCR_MenuHelper.c:61
SCR_ScriptedWidgetComponent
Definition
SCR_ScriptedWidgetComponent.c:8
SCR_ScriptedWidgetComponent::m_wRoot
Widget m_wRoot
Definition
SCR_ScriptedWidgetComponent.c:9
SCR_ScriptedWidgetComponent::GetRootWidget
Widget GetRootWidget()
Definition
SCR_ScriptedWidgetComponent.c:51
SCR_WorkshopAddonBarComponent
Definition
SCR_WorkshopAddonBarComponent.c:2
SCR_WorkshopAddonBarComponent::HandlerDeattached
override void HandlerDeattached(Widget w)
Definition
SCR_WorkshopAddonBarComponent.c:46
SCR_WorkshopAddonBarComponent::OnMenuShow
void OnMenuShow(ChimeraMenuBase menu)
Definition
SCR_WorkshopAddonBarComponent.c:64
SCR_WorkshopAddonBarComponent::Callback_OnAddonsEnabledChanged
void Callback_OnAddonsEnabledChanged()
Definition
SCR_WorkshopAddonBarComponent.c:71
SCR_WorkshopAddonBarComponent::UPDATE_DELAY
const int UPDATE_DELAY
Definition
SCR_WorkshopAddonBarComponent.c:13
SCR_WorkshopAddonBarComponent::m_Loader
ref SCR_AddonPatchSizeLoader m_Loader
Definition
SCR_WorkshopAddonBarComponent.c:10
SCR_WorkshopAddonBarComponent::m_Widgets
ref SCR_WorkshopAddonBarWidgets m_Widgets
Definition
SCR_WorkshopAddonBarComponent.c:3
SCR_WorkshopAddonBarComponent::UpdateAllWidgets
void UpdateAllWidgets()
Definition
SCR_WorkshopAddonBarComponent.c:88
SCR_WorkshopAddonBarComponent::Callback_OnFailDialogConfirm
void Callback_OnFailDialogConfirm(SCR_ConfigurableDialogUi dialog)
Definition
SCR_WorkshopAddonBarComponent.c:209
SCR_WorkshopAddonBarComponent::m_LoadingOverlay
SCR_LoadingOverlayDialog m_LoadingOverlay
Definition
SCR_WorkshopAddonBarComponent.c:11
SCR_WorkshopAddonBarComponent::OnUsedPresetChanged
void OnUsedPresetChanged(string name)
Show actual preset name on preset name change.
Definition
SCR_WorkshopAddonBarComponent.c:78
SCR_WorkshopAddonBarComponent::m_iPresetNameCap
int m_iPresetNameCap
Definition
SCR_WorkshopAddonBarComponent.c:6
SCR_WorkshopAddonBarComponent::OnUpdateButtonClicked
void OnUpdateButtonClicked()
Definition
SCR_WorkshopAddonBarComponent.c:101
SCR_WorkshopAddonBarComponent::DisplayFailDialog
void DisplayFailDialog()
Definition
SCR_WorkshopAddonBarComponent.c:182
SCR_WorkshopAddonBarComponent::OnAddonUpdateDialogClose
void OnAddonUpdateDialogClose(SCR_ConfigurableDialogUi dialog)
Definition
SCR_WorkshopAddonBarComponent.c:147
SCR_WorkshopAddonBarComponent::m_FailDialog
static SCR_ConfigurableDialogUi m_FailDialog
Definition
SCR_WorkshopAddonBarComponent.c:8
SCR_WorkshopAddonBarComponent::OnUpdatePatchSizeLoaded
void OnUpdatePatchSizeLoaded(SCR_AddonPatchSizeLoader loader, bool allLoaded)
Definition
SCR_WorkshopAddonBarComponent.c:123
SCR_WorkshopAddonBarComponent::HandlerAttached
override void HandlerAttached(Widget w)
Definition
SCR_WorkshopAddonBarComponent.c:16
SCR_WorkshopAddonBarComponent::HandleUpdatesButton
void HandleUpdatesButton()
Definition
SCR_WorkshopAddonBarComponent.c:153
SCR_WorkshopAddonBarWidgets
Definition
SCR_WorkshopAddonBarWidgets.c:2
SCR_WorkshopAddonManagerPresetStorage::GetEventOnUsedPresetChanged
ScriptInvoker GetEventOnUsedPresetChanged()
Definition
SCR_WorkshopAddonManagerStorage.c:137
SCR_WorkshopAddonManagerPresetStorage::GetUsedPreset
string GetUsedPreset()
Definition
SCR_WorkshopAddonManagerStorage.c:228
SCR_WorkshopItemActionDownload
Definition
SCR_WorkshopItemActionDownload.c:10
SCR_WorkshopItem
Definition
SCR_WorkshopItem.c:28
SCR_WorkshopItem::GetDependency
Dependency GetDependency()
Definition
SCR_WorkshopItem.c:111
UIWidgets
Definition
attributes.c:40
Widget
Definition
Widget.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
UI
Menu
ContentBrowser
AddonManager
SCR_WorkshopAddonBarComponent.c
Generated by
1.17.0