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_AddonPatchSizeLoader.c
Go to the documentation of this file.
1
4
//------------------------------------------------------------------------------------------------
5
void
ScriptInvoker_AddonPatchSizeLoad
(
SCR_AddonPatchSizeLoader
loader,
bool
allLoaded);
6
typedef
func
ScriptInvoker_AddonPatchSizeLoad
;
7
8
//------------------------------------------------------------------------------------------------
9
class
SCR_AddonPatchSizeLoader
10
{
11
protected
ref array<SCR_WorkshopItem>
m_aItems
= {};
12
protected
ref array<SCR_WorkshopItem>
m_aItemsFailed
= {};
13
protected
int
m_iLoadedPatches
;
14
15
protected
ref ScriptInvokerBase<ScriptInvoker_AddonPatchSizeLoad>
m_OnAllPatchSizeLoaded
;
16
17
//------------------------------------------------------------------------------------------------
18
// Public
19
//------------------------------------------------------------------------------------------------
20
21
//------------------------------------------------------------------------------------------------
22
void
InsertItem
(
SCR_WorkshopItem
item)
23
{
24
m_aItems
.Insert(item);
25
}
26
27
//------------------------------------------------------------------------------------------------
28
void
RemoveItem
(
SCR_WorkshopItem
item)
29
{
30
m_aItems
.RemoveItem(item);
31
}
32
33
//------------------------------------------------------------------------------------------------
34
void
ClearItems
()
35
{
36
m_aItems
.Clear();
37
}
38
39
protected
ref array<ref BackendCallback>
m_aCallbacks
= {};
40
41
//------------------------------------------------------------------------------------------------
43
void
LoadPatchSizes
()
44
{
45
foreach
(
SCR_WorkshopItem
item :
m_aItems
)
46
{
47
Revision
revision = item.GetCurrentLocalRevision();
48
Revision
target = item.GetItemTargetRevision();
49
50
// Is matching
51
if
(
Revision
.AreEqual(revision, target))
52
{
53
m_iLoadedPatches
++;
54
continue
;
55
}
56
57
// Compute patch size
58
SCR_BackendCallbackWorkshopItem
callback =
new
SCR_BackendCallbackWorkshopItem
(item);
59
callback.SetOnSuccess(
OnPatchSizeLoadResponse
);
60
callback.SetOnError(
OnPatchSizeLoadError
);
61
m_aCallbacks
.Insert(callback);
62
63
target.ComputePatchSize(callback);
64
}
65
}
66
67
//------------------------------------------------------------------------------------------------
68
// Protected
69
//------------------------------------------------------------------------------------------------
70
71
//------------------------------------------------------------------------------------------------
72
protected
void
OnPatchSizeLoadResponse
(
SCR_BackendCallbackWorkshopItem
callback)
73
{
74
SCR_WorkshopItem
item = callback.GetItem();
75
76
float
size
;
77
if
(item.
GetItemTargetRevision
().GetPatchSize(
size
))
78
{
79
// Setup size
80
item.
SetTargetRevisionPatchSize
(
size
);
81
m_iLoadedPatches
++;
82
}
83
else
84
{
85
// Patch size not loaded
86
m_aItemsFailed
.Insert(item);
87
}
88
89
// All loaded
90
if
(
m_iLoadedPatches
+
m_aItemsFailed
.Count() ==
m_aItems
.Count())
91
{
92
bool
allLoaded =
m_aItemsFailed
.IsEmpty();
93
94
if
(
m_OnAllPatchSizeLoaded
)
95
m_OnAllPatchSizeLoaded
.Invoke(
this
, allLoaded);
96
}
97
98
m_aCallbacks
.RemoveItem(callback);
99
}
100
101
//------------------------------------------------------------------------------------------------
102
protected
void
OnPatchSizeLoadError
(
SCR_BackendCallbackWorkshopItem
callback)
103
{
104
SCR_WorkshopItem
item = callback.GetItem();
105
106
// Fail or timeout
107
m_aItemsFailed
.Insert(item);
108
109
// All loaded
110
if
(
m_iLoadedPatches
+
m_aItemsFailed
.Count() ==
m_aItems
.Count())
111
{
112
bool
allLoaded =
m_aItemsFailed
.IsEmpty();
113
114
if
(
m_OnAllPatchSizeLoaded
)
115
m_OnAllPatchSizeLoaded
.Invoke(
this
, allLoaded);
116
}
117
118
m_aCallbacks
.RemoveItem(callback);
119
}
120
121
//------------------------------------------------------------------------------------------------
122
// Get set
123
//------------------------------------------------------------------------------------------------
124
125
//------------------------------------------------------------------------------------------------
126
ScriptInvokerBase<ScriptInvoker_AddonPatchSizeLoad>
GetOnAllPatchSizeLoaded
()
127
{
128
if
(!
m_OnAllPatchSizeLoaded
)
129
m_OnAllPatchSizeLoaded
=
new
ScriptInvokerBase<ScriptInvoker_AddonPatchSizeLoad>();
130
131
return
m_OnAllPatchSizeLoaded
;
132
}
133
134
//------------------------------------------------------------------------------------------------
135
// Construct
136
//------------------------------------------------------------------------------------------------
137
138
//------------------------------------------------------------------------------------------------
139
void
~SCR_AddonPatchSizeLoader
()
140
{
141
m_aItems
.Clear();
142
m_aItemsFailed
.Clear();
143
144
if
(
m_OnAllPatchSizeLoaded
)
145
m_OnAllPatchSizeLoaded
.Clear();
146
}
147
}
148
149
//------------------------------------------------------------------------------------------------
150
class
SCR_BackendCallbackWorkshopItem
:
BackendCallback
151
{
152
protected
ref
SCR_WorkshopItem
m_Item
;
153
154
//------------------------------------------------------------------------------------------------
155
SCR_WorkshopItem
GetItem
()
156
{
157
return
m_Item
;
158
}
159
160
//------------------------------------------------------------------------------------------------
161
void
SCR_BackendCallbackWorkshopItem
(
SCR_WorkshopItem
item)
162
{
163
m_Item
= item;
164
}
165
}
size
int size
Definition
PrefabImporter.c:35
func
func
Definition
SCR_AIThreatSystem.c:6
GetItem
SCR_WorkshopItem GetItem()
Definition
SCR_AddonPatchSizeLoader.c:155
SCR_BackendCallbackWorkshopItem
void SCR_BackendCallbackWorkshopItem(SCR_WorkshopItem item)
Definition
SCR_AddonPatchSizeLoader.c:161
ScriptInvoker_AddonPatchSizeLoad
func ScriptInvoker_AddonPatchSizeLoad
Definition
SCR_AddonPatchSizeLoader.c:6
m_Item
NewsFeedItem m_Item
Definition
SCR_NewsSubMenu.c:0
BackendCallback
Definition
Backend_Storage.c:5
Revision
Definition
Revision.c:13
SCR_AddonPatchSizeLoader
Definition
SCR_AddonPatchSizeLoader.c:10
SCR_AddonPatchSizeLoader::m_aCallbacks
ref array< ref BackendCallback > m_aCallbacks
Definition
SCR_AddonPatchSizeLoader.c:39
SCR_AddonPatchSizeLoader::~SCR_AddonPatchSizeLoader
void ~SCR_AddonPatchSizeLoader()
Definition
SCR_AddonPatchSizeLoader.c:139
SCR_AddonPatchSizeLoader::LoadPatchSizes
void LoadPatchSizes()
Call compute patch size and setup response reaction.
Definition
SCR_AddonPatchSizeLoader.c:43
SCR_AddonPatchSizeLoader::OnPatchSizeLoadResponse
void OnPatchSizeLoadResponse(SCR_BackendCallbackWorkshopItem callback)
Definition
SCR_AddonPatchSizeLoader.c:72
SCR_AddonPatchSizeLoader::GetOnAllPatchSizeLoaded
ScriptInvokerBase< ScriptInvoker_AddonPatchSizeLoad > GetOnAllPatchSizeLoaded()
Definition
SCR_AddonPatchSizeLoader.c:126
SCR_AddonPatchSizeLoader::m_aItems
ref array< SCR_WorkshopItem > m_aItems
Definition
SCR_AddonPatchSizeLoader.c:11
SCR_AddonPatchSizeLoader::InsertItem
void InsertItem(SCR_WorkshopItem item)
Definition
SCR_AddonPatchSizeLoader.c:22
SCR_AddonPatchSizeLoader::m_iLoadedPatches
int m_iLoadedPatches
Definition
SCR_AddonPatchSizeLoader.c:13
SCR_AddonPatchSizeLoader::RemoveItem
void RemoveItem(SCR_WorkshopItem item)
Definition
SCR_AddonPatchSizeLoader.c:28
SCR_AddonPatchSizeLoader::ClearItems
void ClearItems()
Definition
SCR_AddonPatchSizeLoader.c:34
SCR_AddonPatchSizeLoader::m_OnAllPatchSizeLoaded
ref ScriptInvokerBase< ScriptInvoker_AddonPatchSizeLoad > m_OnAllPatchSizeLoaded
Definition
SCR_AddonPatchSizeLoader.c:15
SCR_AddonPatchSizeLoader::m_aItemsFailed
ref array< SCR_WorkshopItem > m_aItemsFailed
Definition
SCR_AddonPatchSizeLoader.c:12
SCR_AddonPatchSizeLoader::OnPatchSizeLoadError
void OnPatchSizeLoadError(SCR_BackendCallbackWorkshopItem callback)
Definition
SCR_AddonPatchSizeLoader.c:102
SCR_WorkshopItem
Definition
SCR_WorkshopItem.c:28
SCR_WorkshopItem::GetItemTargetRevision
Revision GetItemTargetRevision()
Definition
SCR_WorkshopItem.c:2164
SCR_WorkshopItem::SetTargetRevisionPatchSize
void SetTargetRevisionPatchSize(float size)
Definition
SCR_WorkshopItem.c:2170
scripts
Game
UI
Menu
DownloadManager
DownloadSequence
SCR_AddonPatchSizeLoader.c
Generated by
1.17.0