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_WorkshopItemActionDownload.c
Go to the documentation of this file.
1
2
3
void
ScriptInvoker_ActionDownloadProgress
(
SCR_WorkshopItemActionDownload
action,
float
progressSize);
4
typedef
func
ScriptInvoker_ActionDownloadProgress
;
5
6
void
ScriptInvoker_ActionDownloadFullStorage
(
SCR_WorkshopItemActionDownload
action,
float
size
);
7
typedef
func
ScriptInvoker_ActionDownloadFullStorage
;
8
9
class
SCR_WorkshopItemActionDownload
:
SCR_WorkshopItemAction
10
{
11
protected
ref
Revision
m_StartVersion
;
// Version which was when the download was started
12
protected
ref
Revision
m_TargetRevision
;
13
14
protected
bool
m_bTargetVersionLatest
;
// When true, means we want to download latest version
15
16
protected
ref
BackendCallback
m_Callback
;
17
18
protected
float
m_fSizeBytes
;
// Total size of this download.
19
20
// True if this action is waiting for details to start the download
21
protected
bool
m_bWaitingForRevisions
;
22
23
// True when the actual download has been started
24
protected
bool
m_bDownloadStarted
;
25
26
protected
float
m_fProgress
;
27
protected
float
m_fProcessingProgress
;
28
protected
float
m_fDownloadedSize
;
29
30
// State of enabled state when this action was activated
31
protected
bool
m_bAddonEnabledAtStart
;
32
33
// Pause and resume handling
34
protected
ref
BackendCallback
m_PauseDownloadCallback
=
new
BackendCallback
();
35
protected
bool
m_bRunningImmediate
;
// Immediate change what is requested
36
protected
bool
m_bRunningAsync
;
// Changes after reponse
37
38
protected
ref ScriptInvokerBase<ScriptInvoker_ActionDownloadProgress>
m_OnDownloadProgress
;
39
protected
ref ScriptInvokerBase<ScriptInvoker_ActionDownloadFullStorage>
m_OnFullStorageError
;
40
41
//-----------------------------------------------------------------------------------------------
42
ScriptInvokerBase<ScriptInvoker_ActionDownloadProgress>
GetOnDownloadProgress
()
43
{
44
if
(!
m_OnDownloadProgress
)
45
m_OnDownloadProgress
=
new
ScriptInvokerBase<ScriptInvoker_ActionDownloadProgress>();
46
47
return
m_OnDownloadProgress
;
48
}
49
50
//-----------------------------------------------------------------------------------------------
51
ScriptInvokerBase<ScriptInvoker_ActionDownloadFullStorage>
GetOnFullStorageError
()
52
{
53
if
(!
m_OnFullStorageError
)
54
m_OnFullStorageError
=
new
ScriptInvokerBase<ScriptInvoker_ActionDownloadFullStorage>();
55
56
return
m_OnFullStorageError
;
57
}
58
59
//-----------------------------------------------------------------------------------------------
60
void
SCR_WorkshopItemActionDownload
(
SCR_WorkshopItem
wrapper,
bool
latestVersion,
Revision
revision = null)
61
{
62
m_bTargetVersionLatest
= latestVersion;
63
m_TargetRevision
= revision;
64
m_StartVersion
= wrapper.
GetCurrentLocalRevision
();
65
66
m_fSizeBytes
=
m_Wrapper
.GetTargetRevisionPatchSize();
67
if
(
m_fSizeBytes
<= 0)
68
{
69
revision.GetPatchSize(
m_fSizeBytes
);
70
}
71
}
72
73
//-----------------------------------------------------------------------------------------------
78
Revision
GetTargetRevision
()
79
{
80
return
m_TargetRevision
;
81
}
82
83
84
//-----------------------------------------------------------------------------------------------
86
Revision
GetStartRevision
()
87
{
88
return
m_StartVersion
;
89
}
90
91
//-----------------------------------------------------------------------------------------------
92
bool
GetTargetedAtLatestVersion
()
93
{
94
return
m_bTargetVersionLatest
;
95
}
96
97
//-----------------------------------------------------------------------------------------------
99
bool
GetUpdate
()
100
{
101
return
m_StartVersion
;
102
}
103
104
//-----------------------------------------------------------------------------------------------
106
float
GetProgress
()
107
{
108
if
(
IsCompleted
())
109
return
1.0;
110
return
m_fProgress
;
111
}
112
113
//-----------------------------------------------------------------------------------------------
114
float
GetProcessingProgress
()
115
{
116
return
m_fProcessingProgress
;
117
}
118
119
//-----------------------------------------------------------------------------------------------
121
float
GetSizeBytes
()
122
{
123
return
m_fSizeBytes
;
124
}
125
126
//-----------------------------------------------------------------------------------------------
127
protected
override
bool
OnActivate
()
128
{
129
m_bRunningImmediate
=
true
;
130
m_bRunningAsync
=
true
;
131
132
m_fDownloadedSize
= 0;
133
134
// Check if addon was enabled, when action is finished it will be restored
135
m_bAddonEnabledAtStart
=
m_Wrapper
.GetEnabled();
136
137
// If we have versions already, we start downloading immediately
138
// Otherwise we load details and start waiting
139
return
StartDownloadOrLoadDetails
();
140
}
141
142
//-----------------------------------------------------------------------------------------------
143
protected
override
bool
OnReactivate
()
144
{
145
return
OnActivate
();
146
}
147
148
//-----------------------------------------------------------------------------------------------
149
protected
override
bool
OnCancel
()
150
{
151
bool
success =
m_Wrapper
.Internal_CancelDownload();
152
153
return
success && !
IsFailed
();
154
}
155
156
//-----------------------------------------------------------------------------------------------
157
bool
GetRunningAsync
()
158
{
159
return
m_bRunningAsync
;
160
}
161
162
//-----------------------------------------------------------------------------------------------
163
bool
IsRunningAsyncSolved
()
164
{
165
return
m_bRunningImmediate
&&
m_bRunningAsync
;
166
}
167
168
//-----------------------------------------------------------------------------------------------
169
bool
IsPauseAsyncSolved
()
170
{
171
return
!
m_bRunningImmediate
&& !
m_bRunningAsync
;
172
}
173
174
//-----------------------------------------------------------------------------------------------
175
protected
override
bool
OnPause
()
176
{
177
// Check
178
WorkshopItem
item =
m_Wrapper
.GetWorkshopItem();
179
if
(!item)
180
return
false
;
181
182
// Setup result
183
if
(
m_bDownloadStarted
)
184
{
185
m_bRunningImmediate
=
false
;
186
187
m_PauseDownloadCallback
.SetOnSuccess(
OnPauseResponse
);
188
m_PauseDownloadCallback
.SetOnError(
OnPauseError
);
189
item.PauseDownload(
m_PauseDownloadCallback
);
190
}
191
192
// Result
193
return
!
IsFailed
();
194
}
195
196
//-----------------------------------------------------------------------------------------------
197
protected
void
OnPauseResponse
(
BackendCallback
callback)
198
{
199
// Success
200
m_bRunningAsync
=
false
;
201
InvokeOnChanged
();
202
}
203
204
//-----------------------------------------------------------------------------------------------
205
protected
void
OnPauseError
(
BackendCallback
callback)
206
{
207
// Get back to previsius reqeusted state
208
m_bRunningImmediate
=
true
;
209
}
210
211
//-----------------------------------------------------------------------------------------------
212
protected
override
bool
OnResume
()
213
{
214
// Check
215
WorkshopItem
item =
m_Wrapper
.GetWorkshopItem();
216
if
(!item)
217
return
false
;
218
219
// Setup result
220
if
(
m_bDownloadStarted
)
221
{
222
m_bRunningImmediate
=
true
;
223
224
m_Callback
=
new
BackendCallback
();
225
m_Callback
.SetOnError(
Callback_OnError
);
226
227
m_bRunningAsync
=
true
;
228
item.ResumeDownload(
m_Callback
);
229
230
// resume failed immediately - state changed in callback
231
if
(
m_State
==
STATE_FAILED
)
232
return
false
;
233
234
InvokeOnChanged
();
235
236
return
true
;
237
}
238
239
// If download didn't actually start, we must not resume but start a download
240
return
StartDownloadOrLoadDetails
();
241
}
242
243
//-----------------------------------------------------------------------------------------------
244
protected
override
void
OnComplete
()
245
{
246
// Restore 'enabled' state
247
m_Wrapper
.SetEnabled(
m_bAddonEnabledAtStart
);
248
}
249
250
//-----------------------------------------------------------------------------------------------
253
protected
bool
StartDownloadOrLoadDetails
()
254
{
255
#ifdef WORKSHOP_DEBUG
256
_print
(
"StartDownloadOrLoadDetails()"
);
257
#endif
258
259
#ifdef WORKSHOP_DEBUG
260
_print
(
"StartDownloadOrLoadDetails(): Revisions are loaded, starting the download"
);
261
#endif
262
263
// Instant fail if mod is restricted
264
// We know that it's restricted only after we have loaded the details
265
if
(
m_Wrapper
.GetRestricted())
266
{
267
Fail
();
268
return
false
;
269
}
270
271
m_Callback
=
new
BackendCallback
();
272
m_Callback
.SetOnError(
Callback_OnError
);
273
274
if
(
m_bTargetVersionLatest
)
275
{
276
m_TargetRevision
=
m_Wrapper
.GetLatestRevision();
277
#ifdef WORKSHOP_DEBUG
278
_print
(
"StartDownloadOrLoadDetails(): Download of latest version was requested"
);
279
#endif
280
}
281
282
#ifdef WORKSHOP_DEBUG
283
_print
(
string
.Format(
"StartDownloadOrLoadDetails(): Target version: %1"
,
m_TargetRevision
.GetVersion()));
284
#endif
285
286
bool
success =
m_Wrapper
.Internal_StartDownload(
m_TargetRevision
,
m_Callback
);
287
288
m_bWaitingForRevisions
=
false
;
289
m_bDownloadStarted
=
true
;
290
291
return
success && !
IsFailed
();
// The workshop API might have called the Error handler by now
292
}
293
294
//-----------------------------------------------------------------------------------------------
295
override
void
Internal_Update
(
float
timeSlice)
296
{
297
if
(!
m_Wrapper
)
298
return
;
299
300
// Check if comms have failed
301
if
(
m_State
!=
STATE_COMPLETED
&&
m_State
!=
STATE_FAILED
)
302
{
303
if
(
m_Wrapper
.GetRequestFailed())
304
Fail
();
305
}
306
307
// Complete the action when the addon is at the target revisioon and is downloaded
308
if
(
m_State
==
STATE_ACTIVE
)
309
{
310
bool
offline =
m_Wrapper
.GetOffline();
311
Revision
currentVersion =
m_Wrapper
.GetCurrentLocalRevision();
312
313
if
(
m_bWaitingForRevisions
)
314
{
315
// Try to start the download again if we have loaded the details
316
if
(
m_Wrapper
.GetRevisionsLoaded())
317
StartDownloadOrLoadDetails
();
318
}
319
else
if
(
m_Wrapper
.GetWorkshopItem().GetPendingDownload())
320
{
321
322
323
//#ifdef WORKSHOP_DEBUG
324
//_print(string.Format("Internal_Update: Offline: %1, CurrentVersion: '%2', TargetVersion: '%3'", offline, currentVersion, m_sTargetVersion));
325
//#endif
326
327
float
progress =
m_Wrapper
.Internal_GetDownloadProgress();
328
float
processingProgress =
m_Wrapper
.Internal_GetProcessingProgress();
329
330
// Downloading
331
if
(progress >
m_fProgress
)
332
{
333
float
currentDownloadSize =
m_Wrapper
.GetTargetRevisionPatchSize() * progress;
334
335
if
(
m_OnDownloadProgress
)
336
m_OnDownloadProgress
.Invoke(
this
, currentDownloadSize -
m_fDownloadedSize
);
337
338
m_fProgress
= progress;
339
m_fDownloadedSize
= currentDownloadSize;
340
341
InvokeOnChanged
();
342
}
343
344
// Processing (copying fragments)
345
else
if
(processingProgress >
m_fProcessingProgress
)
346
{
347
m_fProcessingProgress
= processingProgress;
348
InvokeOnChanged
();
349
}
350
}
351
else
if
(offline &&
Revision
.AreEqual(currentVersion,
m_TargetRevision
))
352
{
353
Complete
();
354
}
355
}
356
}
357
358
//-----------------------------------------------------------------------------------------------
359
protected
void
Callback_OnError
(
BackendCallback
callback)
360
{
361
int
restCode = callback.GetRestResult();
362
int
httpCode = callback.GetHttpCode();
363
//if (httpCode != EBackendError.EBERR_INVALID_STATE) // Ignore this one for now // EApiCode.EACODE_ERROR_OK
364
365
Fail
(httpCode);
366
367
// Full storage issues
368
if
(callback.GetHttpCode() ==
EBackendError
.EBERR_STORAGE_IS_FULL)
369
{
370
FullStorageFail
();
371
}
372
//data are not available or validation failed
373
else
if
((restCode >= 400 && restCode < 500) || (httpCode ==
EBackendError
.EBERR_VALIDATION_FAILED))
374
{
375
m_Wrapper
.DeleteDownloadProgress();
376
}
377
else
378
{
379
Fail
();
380
}
381
}
382
383
//-----------------------------------------------------------------------------------------------
384
void
FullStorageFail
()
385
{
386
if
(
m_OnFullStorageError
)
387
{
388
float
size
=
m_Wrapper
.GetItemTargetRevision().GetTotalSize();
389
390
if
(
size
> 0)
391
m_OnFullStorageError
.Invoke(
this
,
size
);
392
}
393
}
394
395
396
//-----------------------------------------------------------------------------------------------
398
SCR_WorkshopItemActionDownload
RetryDownload
()
399
{
400
// TODO: circular dependencies insanity: this m_Wrapper also has a reference to a SCR_WorkshopItemActionDownload which is not guaranteed to be this one
401
return
m_Wrapper
.RetryDownload(
m_TargetRevision
);
402
}
403
404
//-----------------------------------------------------------------------------------------------
405
void
ForceFail
()
406
{
407
Fail
();
408
}
409
410
//-----------------------------------------------------------------------------------------------
411
float
GetDownloadSize
()
412
{
413
return
m_fDownloadedSize
;
414
}
415
416
//-----------------------------------------------------------------------------------------------
417
bool
IsProcessing
()
418
{
419
return
m_Wrapper
&&
m_Wrapper
.Internal_GetIsProcessing();
420
}
421
};
size
int size
Definition
PrefabImporter.c:35
func
func
Definition
SCR_AIThreatSystem.c:6
ScriptInvoker_ActionDownloadProgress
func ScriptInvoker_ActionDownloadProgress
Definition
SCR_WorkshopItemActionDownload.c:4
ScriptInvoker_ActionDownloadFullStorage
func ScriptInvoker_ActionDownloadFullStorage
Definition
SCR_WorkshopItemActionDownload.c:7
BackendCallback
Definition
Backend_Storage.c:5
Revision
Definition
Revision.c:13
SCR_WorkshopItemActionDownload
Definition
SCR_WorkshopItemActionDownload.c:10
SCR_WorkshopItemActionDownload::GetUpdate
bool GetUpdate()
Returns true when this is an update, false when regular download.
Definition
SCR_WorkshopItemActionDownload.c:99
SCR_WorkshopItemActionDownload::IsProcessing
bool IsProcessing()
Definition
SCR_WorkshopItemActionDownload.c:417
SCR_WorkshopItemActionDownload::m_TargetRevision
ref Revision m_TargetRevision
Definition
SCR_WorkshopItemActionDownload.c:12
SCR_WorkshopItemActionDownload::OnReactivate
override bool OnReactivate()
Definition
SCR_WorkshopItemActionDownload.c:143
SCR_WorkshopItemActionDownload::OnActivate
override bool OnActivate()
Definition
SCR_WorkshopItemActionDownload.c:127
SCR_WorkshopItemActionDownload::Internal_Update
override void Internal_Update(float timeSlice)
Definition
SCR_WorkshopItemActionDownload.c:295
SCR_WorkshopItemActionDownload::m_bRunningAsync
bool m_bRunningAsync
Definition
SCR_WorkshopItemActionDownload.c:36
SCR_WorkshopItemActionDownload::GetStartRevision
Revision GetStartRevision()
Returns the version which was at the moment when the download was started.
Definition
SCR_WorkshopItemActionDownload.c:86
SCR_WorkshopItemActionDownload::GetOnDownloadProgress
ScriptInvokerBase< ScriptInvoker_ActionDownloadProgress > GetOnDownloadProgress()
Definition
SCR_WorkshopItemActionDownload.c:42
SCR_WorkshopItemActionDownload::OnPauseResponse
void OnPauseResponse(BackendCallback callback)
Definition
SCR_WorkshopItemActionDownload.c:197
SCR_WorkshopItemActionDownload::m_fProcessingProgress
float m_fProcessingProgress
Definition
SCR_WorkshopItemActionDownload.c:27
SCR_WorkshopItemActionDownload::m_fSizeBytes
float m_fSizeBytes
Definition
SCR_WorkshopItemActionDownload.c:18
SCR_WorkshopItemActionDownload::m_OnFullStorageError
ref ScriptInvokerBase< ScriptInvoker_ActionDownloadFullStorage > m_OnFullStorageError
Definition
SCR_WorkshopItemActionDownload.c:39
SCR_WorkshopItemActionDownload::m_PauseDownloadCallback
ref BackendCallback m_PauseDownloadCallback
Definition
SCR_WorkshopItemActionDownload.c:34
SCR_WorkshopItemActionDownload::GetProcessingProgress
float GetProcessingProgress()
Definition
SCR_WorkshopItemActionDownload.c:114
SCR_WorkshopItemActionDownload::StartDownloadOrLoadDetails
bool StartDownloadOrLoadDetails()
Definition
SCR_WorkshopItemActionDownload.c:253
SCR_WorkshopItemActionDownload::m_fDownloadedSize
float m_fDownloadedSize
Definition
SCR_WorkshopItemActionDownload.c:28
SCR_WorkshopItemActionDownload::Callback_OnError
void Callback_OnError(BackendCallback callback)
Definition
SCR_WorkshopItemActionDownload.c:359
SCR_WorkshopItemActionDownload::m_bAddonEnabledAtStart
bool m_bAddonEnabledAtStart
Definition
SCR_WorkshopItemActionDownload.c:31
SCR_WorkshopItemActionDownload::SCR_WorkshopItemActionDownload
void SCR_WorkshopItemActionDownload(SCR_WorkshopItem wrapper, bool latestVersion, Revision revision=null)
Definition
SCR_WorkshopItemActionDownload.c:60
SCR_WorkshopItemActionDownload::m_bDownloadStarted
bool m_bDownloadStarted
Definition
SCR_WorkshopItemActionDownload.c:24
SCR_WorkshopItemActionDownload::m_Callback
ref BackendCallback m_Callback
Definition
SCR_WorkshopItemActionDownload.c:16
SCR_WorkshopItemActionDownload::GetTargetedAtLatestVersion
bool GetTargetedAtLatestVersion()
Definition
SCR_WorkshopItemActionDownload.c:92
SCR_WorkshopItemActionDownload::m_StartVersion
ref Revision m_StartVersion
Definition
SCR_WorkshopItemActionDownload.c:11
SCR_WorkshopItemActionDownload::GetDownloadSize
float GetDownloadSize()
Definition
SCR_WorkshopItemActionDownload.c:411
SCR_WorkshopItemActionDownload::m_fProgress
float m_fProgress
Definition
SCR_WorkshopItemActionDownload.c:26
SCR_WorkshopItemActionDownload::GetSizeBytes
float GetSizeBytes()
Returns download size. Might return 0 until the actiion is activated.
Definition
SCR_WorkshopItemActionDownload.c:121
SCR_WorkshopItemActionDownload::GetTargetRevision
Revision GetTargetRevision()
Definition
SCR_WorkshopItemActionDownload.c:78
SCR_WorkshopItemActionDownload::m_OnDownloadProgress
ref ScriptInvokerBase< ScriptInvoker_ActionDownloadProgress > m_OnDownloadProgress
Definition
SCR_WorkshopItemActionDownload.c:38
SCR_WorkshopItemActionDownload::OnResume
override bool OnResume()
Definition
SCR_WorkshopItemActionDownload.c:212
SCR_WorkshopItemActionDownload::OnPause
override bool OnPause()
Definition
SCR_WorkshopItemActionDownload.c:175
SCR_WorkshopItemActionDownload::OnComplete
override void OnComplete()
Definition
SCR_WorkshopItemActionDownload.c:244
SCR_WorkshopItemActionDownload::m_bTargetVersionLatest
bool m_bTargetVersionLatest
Definition
SCR_WorkshopItemActionDownload.c:14
SCR_WorkshopItemActionDownload::GetProgress
float GetProgress()
Returns current download progress if active or paused, 1 if complete, otherwise 0.
Definition
SCR_WorkshopItemActionDownload.c:106
SCR_WorkshopItemActionDownload::m_bRunningImmediate
bool m_bRunningImmediate
Definition
SCR_WorkshopItemActionDownload.c:35
SCR_WorkshopItemActionDownload::OnPauseError
void OnPauseError(BackendCallback callback)
Definition
SCR_WorkshopItemActionDownload.c:205
SCR_WorkshopItemActionDownload::OnCancel
override bool OnCancel()
Definition
SCR_WorkshopItemActionDownload.c:149
SCR_WorkshopItemActionDownload::GetRunningAsync
bool GetRunningAsync()
Definition
SCR_WorkshopItemActionDownload.c:157
SCR_WorkshopItemActionDownload::m_bWaitingForRevisions
bool m_bWaitingForRevisions
Definition
SCR_WorkshopItemActionDownload.c:21
SCR_WorkshopItemActionDownload::IsRunningAsyncSolved
bool IsRunningAsyncSolved()
Definition
SCR_WorkshopItemActionDownload.c:163
SCR_WorkshopItemActionDownload::IsPauseAsyncSolved
bool IsPauseAsyncSolved()
Definition
SCR_WorkshopItemActionDownload.c:169
SCR_WorkshopItemActionDownload::GetOnFullStorageError
ScriptInvokerBase< ScriptInvoker_ActionDownloadFullStorage > GetOnFullStorageError()
Definition
SCR_WorkshopItemActionDownload.c:51
SCR_WorkshopItemActionDownload::ForceFail
void ForceFail()
Definition
SCR_WorkshopItemActionDownload.c:405
SCR_WorkshopItemActionDownload::FullStorageFail
void FullStorageFail()
Definition
SCR_WorkshopItemActionDownload.c:384
SCR_WorkshopItemActionDownload::RetryDownload
SCR_WorkshopItemActionDownload RetryDownload()
Try redownload failed addon.
Definition
SCR_WorkshopItemActionDownload.c:398
SCR_WorkshopItemAction::Fail
void Fail(int reason=-1)
Action must call this when it has failed.
Definition
SCR_WorkshopItemAction.c:335
SCR_WorkshopItemAction::SCR_WorkshopItemAction
void SCR_WorkshopItemAction(SCR_WorkshopItem wrapper)
Definition
SCR_WorkshopItemAction.c:53
SCR_WorkshopItemAction::Complete
void Complete()
Action must call this when it is completed.
Definition
SCR_WorkshopItemAction.c:356
SCR_WorkshopItemAction::_print
void _print(string str, LogLevel logLevel=LogLevel.DEBUG)
Definition
SCR_WorkshopItemAction.c:410
SCR_WorkshopItemAction::IsFailed
bool IsFailed()
Definition
SCR_WorkshopItemAction.c:85
SCR_WorkshopItemAction::InvokeOnChanged
void InvokeOnChanged()
Call this in inherited classes to invoke the OnChanged event handler.
Definition
SCR_WorkshopItemAction.c:377
SCR_WorkshopItemAction::m_Wrapper
SCR_WorkshopItem m_Wrapper
Definition
SCR_WorkshopItemAction.c:40
SCR_WorkshopItemAction::m_State
int m_State
Definition
SCR_WorkshopItemAction.c:38
SCR_WorkshopItemAction::STATE_COMPLETED
const int STATE_COMPLETED
Definition
SCR_WorkshopItemAction.c:32
SCR_WorkshopItemAction::IsCompleted
bool IsCompleted()
Definition
SCR_WorkshopItemAction.c:82
SCR_WorkshopItemAction::STATE_ACTIVE
const int STATE_ACTIVE
Definition
SCR_WorkshopItemAction.c:31
SCR_WorkshopItemAction::STATE_FAILED
const int STATE_FAILED
Definition
SCR_WorkshopItemAction.c:33
SCR_WorkshopItem
Definition
SCR_WorkshopItem.c:28
SCR_WorkshopItem::GetCurrentLocalRevision
Revision GetCurrentLocalRevision()
Returns the revision which we currently have on the local storage.
Definition
SCR_WorkshopItem.c:670
WorkshopItem
Workshop Item instance.
Definition
WorkshopItem.c:14
EBackendError
EBackendError
Backend error.
Definition
EBackendError.c:14
scripts
Game
Workshop
Actions
SCR_WorkshopItemActionDownload.c
Generated by
1.17.0