7d92cce07dc4b680b0922e7f93af9ca59e2463cb
[vg.git] / vg_steam_remote_storage.h
1 #ifndef VG_STEAM_REMOTE_STORAGE_H
2 #define VG_STEAM_REMOTE_STORAGE_H
3
4 #include "vg/vg_steam.h"
5
6 const u32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024;
7
8 #if defined( VALVE_CALLBACK_PACK_SMALL )
9 #pragma pack( push, 4 )
10 #elif defined( VALVE_CALLBACK_PACK_LARGE )
11 #pragma pack( push, 8 )
12 #else
13 #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
14 #endif
15 typedef struct SteamParamStringArray_t SteamParamStringArray_t;
16 struct SteamParamStringArray_t{
17 const char **m_ppStrings;
18 i32 m_nNumStrings;
19 };
20 #pragma pack( pop )
21
22 /* A handle to a piece of user generated content */
23 typedef u64 UGCHandle_t;
24 typedef u64 PublishedFileUpdateHandle_t;
25 typedef u64 PublishedFileId_t;
26 const PublishedFileId_t k_PublishedFileIdInvalid = 0;
27 const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull;
28 const PublishedFileUpdateHandle_t
29 k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull;
30
31 /* Handle for writing to Steam Cloud */
32 typedef u64 UGCFileWriteStreamHandle_t;
33 const UGCFileWriteStreamHandle_t
34 k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull;
35
36 enum{ k_cchPublishedDocumentTitleMax = 128 + 1 };
37 enum{ k_cchPublishedDocumentDescriptionMax = 8000 };
38 enum{ k_cchPublishedDocumentChangeDescriptionMax = 8000 };
39 enum{ k_unEnumeratePublishedFilesMaxResults = 50 };
40 enum{ k_cchTagListMax = 1024 + 1 };
41 enum{ k_cchFilenameMax = 260 };
42 enum{ k_cchPublishedFileURLMax = 256 };
43
44 typedef enum ERemoteStoragePlatform ERemoteStoragePlatform;
45 enum ERemoteStoragePlatform{
46 k_ERemoteStoragePlatformNone = 0,
47 k_ERemoteStoragePlatformWindows = (1 << 0),
48 k_ERemoteStoragePlatformOSX = (1 << 1),
49 k_ERemoteStoragePlatformPS3 = (1 << 2),
50 k_ERemoteStoragePlatformLinux = (1 << 3),
51 k_ERemoteStoragePlatformSwitch = (1 << 4),
52 k_ERemoteStoragePlatformAndroid = (1 << 5),
53 k_ERemoteStoragePlatformIOS = (1 << 6),
54
55 /* NB we get one more before we need to widen some things */
56 k_ERemoteStoragePlatformAll = 0xffffffff
57 };
58
59 typedef enum ERemoteStoragePublishedFileVisibility
60 ERemoteStoragePublishedFileVisibility;
61 enum ERemoteStoragePublishedFileVisibility{
62 k_ERemoteStoragePublishedFileVisibilityPublic = 0,
63 k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1,
64 k_ERemoteStoragePublishedFileVisibilityPrivate = 2,
65 k_ERemoteStoragePublishedFileVisibilityUnlisted = 3,
66 };
67
68
69 typedef enum EWorkshopFileType EWorkshopFileType;
70 enum EWorkshopFileType{
71 k_EWorkshopFileTypeFirst = 0,
72 k_EWorkshopFileTypeCommunity = 0,
73 k_EWorkshopFileTypeMicrotransaction = 1,
74 k_EWorkshopFileTypeCollection = 2,
75 k_EWorkshopFileTypeArt = 3,
76 k_EWorkshopFileTypeVideo = 4,
77 k_EWorkshopFileTypeScreenshot = 5,
78 k_EWorkshopFileTypeGame = 6,
79 k_EWorkshopFileTypeSoftware = 7,
80 k_EWorkshopFileTypeConcept = 8,
81 k_EWorkshopFileTypeWebGuide = 9,
82 k_EWorkshopFileTypeIntegratedGuide = 10,
83 k_EWorkshopFileTypeMerch = 11,
84 k_EWorkshopFileTypeControllerBinding = 12,
85 k_EWorkshopFileTypeSteamworksAccessInvite = 13,
86 k_EWorkshopFileTypeSteamVideo = 14,
87 k_EWorkshopFileTypeGameManagedItem = 15,
88 k_EWorkshopFileTypeMax = 16
89 };
90
91 typedef enum EWorkshopVote EWorkshopVote;
92 enum EWorkshopVote{
93 k_EWorkshopVoteUnvoted = 0,
94 k_EWorkshopVoteFor = 1,
95 k_EWorkshopVoteAgainst = 2,
96 k_EWorkshopVoteLater = 3,
97 };
98
99 typedef enum EWorkshopFileAction EWorkshopFileAction;
100 enum EWorkshopFileAction{
101 k_EWorkshopFileActionPlayed = 0,
102 k_EWorkshopFileActionCompleted = 1,
103 };
104
105 typedef enum EWorkshopEnumerationType EWorkshopEnumerationType;
106 enum EWorkshopEnumerationType{
107 k_EWorkshopEnumerationTypeRankedByVote = 0,
108 k_EWorkshopEnumerationTypeRecent = 1,
109 k_EWorkshopEnumerationTypeTrending = 2,
110 k_EWorkshopEnumerationTypeFavoritesOfFriends = 3,
111 k_EWorkshopEnumerationTypeVotedByFriends = 4,
112 k_EWorkshopEnumerationTypeContentByFriends = 5,
113 k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6,
114 };
115
116 typedef enum EWorkshopVideoProvider EWorkshopVideoProvider;
117 enum EWorkshopVideoProvider{
118 k_EWorkshopVideoProviderNone = 0,
119 k_EWorkshopVideoProviderYoutube = 1
120 };
121
122 typedef enum EUGCReadAction EUGCReadAction;
123 enum EUGCReadAction{
124 k_EUGCRead_ContinueReadingUntilFinished = 0,
125 k_EUGCRead_ContinueReading = 1,
126 k_EUGCRead_Close = 2,
127 };
128
129 typedef enum ERemoteStorageLocalFileChange ERemoteStorageLocalFileChange;
130 enum ERemoteStorageLocalFileChange{
131 k_ERemoteStorageLocalFileChange_Invalid = 0,
132 k_ERemoteStorageLocalFileChange_FileUpdated = 1,
133 k_ERemoteStorageLocalFileChange_FileDeleted = 2,
134 };
135
136 typedef enum ERemoteStorageFilePathType ERemoteStorageFilePathType;
137 enum ERemoteStorageFilePathType{
138 k_ERemoteStorageFilePathType_Invalid = 0,
139 k_ERemoteStorageFilePathType_Absolute = 1,
140 k_ERemoteStorageFilePathType_APIFilename = 2,
141 };
142
143 #define STEAMREMOTESTORAGE_INTERFACE_VERSION \
144 "STEAMREMOTESTORAGE_INTERFACE_VERSION016"
145
146 #if defined( VALVE_CALLBACK_PACK_SMALL )
147 #pragma pack( push, 4 )
148 #elif defined( VALVE_CALLBACK_PACK_LARGE )
149 #pragma pack( push, 8 )
150 #else
151 #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
152 #endif
153
154 typedef struct RemoteStorageFileShareResult_t RemoteStorageFileShareResult_t;
155 struct RemoteStorageFileShareResult_t{
156 EResult m_eResult;
157 UGCHandle_t m_hFile;
158 char m_rgchFilename[k_cchFilenameMax];
159 };
160 enum { k_iRemoteStorageFileShareResult = k_iSteamRemoteStorageCallbacks + 7 };
161
162 typedef struct RemoteStoragePublishFileResult_t
163 RemoteStoragePublishFileResult_t;
164 struct RemoteStoragePublishFileResult_t{
165 EResult m_eResult;
166 PublishedFileId_t m_nPublishedFileId;
167 int m_bUserNeedsToAcceptWorkshopLegalAgreement;
168 };
169 enum { k_iRemoteStoragePublushFileResult = k_iSteamRemoteStorageCallbacks + 9 };
170
171 typedef struct RemoteStorageDeletePublishedFileResult_t
172 RemoteStorageDeletePublishedFileResult_t;
173 struct RemoteStorageDeletePublishedFileResult_t{
174 EResult m_eResult;
175 PublishedFileId_t m_nPublishedFileId;
176 };
177 enum { k_iRemoteStorageDeletePublishedFileResult =
178 k_iSteamRemoteStorageCallbacks + 11 };
179
180 typedef struct RemoteStorageEnumerateUserPublishedFilesResult_t
181 RemoteStorageEnumerateUserPublishedFilesResult_t;
182 struct RemoteStorageEnumerateUserPublishedFilesResult_t{
183 EResult m_eResult;
184 i32 m_nResultsReturned;
185 i32 m_nTotalResultCount;
186 PublishedFileId_t m_rgPublishedFileId[k_unEnumeratePublishedFilesMaxResults];
187 };
188 enum { k_iRemoteStorageEnumerateUserPublishedFilesResult =
189 k_iSteamRemoteStorageCallbacks + 12 };
190
191 typedef struct RemoteStorageSubscribePublishedFileResult_t
192 RemoteStorageSubscribePublishedFileResult_t;
193 struct RemoteStorageSubscribePublishedFileResult_t{
194 EResult m_eResult;
195 PublishedFileId_t m_nPublishedFileId;
196 };
197 enum { k_iRemoteStorageSubscribePublishedFileResult =
198 k_iSteamRemoteStorageCallbacks + 13 };
199
200
201 typedef struct RemoteStorageEnumerateUserSubscribedFilesResult_t
202 RemoteStorageEnumerateUserSubscribedFilesResult_t;
203 struct RemoteStorageEnumerateUserSubscribedFilesResult_t{
204 EResult m_eResult;
205 i32 m_nResultsReturned;
206 i32 m_nTotalResultCount;
207 PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ];
208 u32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ];
209 };
210 enum { k_iRemoteStorageEnumerateUserSubscribedFilesResult =
211 k_iSteamRemoteStorageCallbacks + 14 };
212
213 typedef struct RemoteStorageUnsubscribePublishedFileResult_t
214 RemoteStorageUnsubscribePublishedFileResult_t;
215 struct RemoteStorageUnsubscribePublishedFileResult_t{
216 EResult m_eResult;
217 PublishedFileId_t m_nPublishedFileId;
218 };
219 enum { k_iRemoteStorageUnsubscribePublishedFileResult =
220 k_iSteamRemoteStorageCallbacks + 15 };
221
222 typedef struct RemoteStorageUpdatePublishedFileResult_t
223 RemoteStorageUpdatePublishedFileResult_t;
224 struct RemoteStorageUpdatePublishedFileResult_t{
225 EResult m_eResult;
226 PublishedFileId_t m_nPublishedFileId;
227 int m_bUserNeedsToAcceptWorkshopLegalAgreement;
228 };
229 enum { k_iRemoteStorageUpdatePublishedFileResult =
230 k_iSteamRemoteStorageCallbacks + 16 };
231
232
233 typedef struct RemoteStorageDownloadUGCResult_t
234 RemoteStorageDownloadUGCResult_t;
235 struct RemoteStorageDownloadUGCResult_t{
236 EResult m_eResult;
237 UGCHandle_t m_hFile;
238 AppId_t m_nAppID;
239 i32 m_nSizeInBytes;
240 char m_pchFileName[k_cchFilenameMax];
241 u64 m_ulSteamIDOwner;
242 };
243 enum { k_iRemoteStorageDownloadUGCResult =
244 k_iSteamRemoteStorageCallbacks + 17 };
245
246
247 typedef struct RemoteStorageGetPublishedFileDetailsResult_t
248 RemoteStorageGetPublishedFileDetailsResult_t;
249 struct RemoteStorageGetPublishedFileDetailsResult_t{
250 EResult m_eResult;
251 PublishedFileId_t m_nPublishedFileId;
252 AppId_t m_nCreatorAppID;
253 AppId_t m_nConsumerAppID;
254 char m_rgchTitle[k_cchPublishedDocumentTitleMax];
255 char m_rgchDescription[k_cchPublishedDocumentDescriptionMax];
256 UGCHandle_t m_hFile;
257 UGCHandle_t m_hPreviewFile;
258 u64 m_ulSteamIDOwner;
259 u32 m_rtimeCreated;
260 u32 m_rtimeUpdated;
261 ERemoteStoragePublishedFileVisibility m_eVisibility;
262 int m_bBanned;
263 char m_rgchTags[k_cchTagListMax];
264 int m_bTagsTruncated;
265 char m_pchFileName[k_cchFilenameMax];
266 i32 m_nFileSize;
267 i32 m_nPreviewFileSize;
268 char m_rgchURL[k_cchPublishedFileURLMax];
269 EWorkshopFileType m_eFileType;
270 int m_bAcceptedForUse;
271 };
272 enum { k_iRemoteStorageGetPublishedFileDetailsResult =
273 k_iSteamRemoteStorageCallbacks + 18 };
274
275 typedef struct RemoteStorageEnumerateWorkshopFilesResult_t
276 RemoteStorageEnumerateWorkshopFilesResult_t;
277 struct RemoteStorageEnumerateWorkshopFilesResult_t{
278 EResult m_eResult;
279 i32 m_nResultsReturned;
280 i32 m_nTotalResultCount;
281 PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ];
282 float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ];
283 AppId_t m_nAppId;
284 u32 m_unStartIndex;
285 };
286 enum { k_iRemoteStorageEnumerateWorkshopFilesResult_t =
287 k_iSteamRemoteStorageCallbacks + 19 };
288
289
290 typedef struct RemoteStorageGetPublishedItemVoteDetailsResult_t
291 RemoteStorageGetPublishedItemVoteDetailsResult_t;
292 struct RemoteStorageGetPublishedItemVoteDetailsResult_t{
293 EResult m_eResult;
294 PublishedFileId_t m_unPublishedFileId;
295 i32 m_nVotesFor;
296 i32 m_nVotesAgainst;
297 i32 m_nReports;
298 float m_fScore;
299 };
300 enum { k_iRemoteStorageGetPublishedItemVoteDetailsResult_t =
301 k_iSteamRemoteStorageCallbacks + 20 };
302
303
304 typedef struct RemoteStoragePublishedFileSubscribed_t
305 RemoteStoragePublishedFileSubscribed_t;
306 struct RemoteStoragePublishedFileSubscribed_t{
307 PublishedFileId_t m_nPublishedFileId;
308 AppId_t m_nAppID;
309 };
310 enum { k_iRemoteStoragePublishedFileSubscribed_t =
311 k_iSteamRemoteStorageCallbacks + 21 };
312
313 typedef struct RemoteStoragePublishedFileUnsubscribed_t
314 RemoteStoragePublishedFileUnsubscribed_t;
315 struct RemoteStoragePublishedFileUnsubscribed_t{
316 PublishedFileId_t m_nPublishedFileId;
317 AppId_t m_nAppID;
318 };
319 enum { k_iRemoteStoragePublishedFileUnsubscribed_t =
320 k_iSteamRemoteStorageCallbacks + 22 };
321
322
323 typedef struct RemoteStoragePublishedFileDeleted_t
324 RemoteStoragePublishedFileDeleted_t;
325 struct RemoteStoragePublishedFileDeleted_t{
326 PublishedFileId_t m_nPublishedFileId;
327 AppId_t m_nAppID;
328 };
329 enum { k_iRemoteStoragePublishedFileDeleted_t =
330 k_iSteamRemoteStorageCallbacks + 23 };
331
332 typedef struct RemoteStorageUpdateUserPublishedItemVoteResult_t
333 RemoteStorageUpdateUserPublishedItemVoteResult_t;
334 struct RemoteStorageUpdateUserPublishedItemVoteResult_t{
335 EResult m_eResult;
336 PublishedFileId_t m_nPublishedFileId;
337 };
338 enum { k_iRemoteStorageUpdateUserPublishedItemVoteResult_t =
339 k_iSteamRemoteStorageCallbacks + 24 };
340
341 typedef struct RemoteStorageUserVoteDetails_t RemoteStorageUserVoteDetails_t;
342 struct RemoteStorageUserVoteDetails_t{
343 EResult m_eResult;
344 PublishedFileId_t m_nPublishedFileId;
345 EWorkshopVote m_eVote;
346 };
347 enum { k_iRemoteStorageUserVoteDetails_t =
348 k_iSteamRemoteStorageCallbacks + 25 };
349
350 typedef struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t
351 RemoteStorageEnumerateUserSharedWorkshopFilesResult_t;
352 struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t{
353 EResult m_eResult;
354 i32 m_nResultsReturned;
355 i32 m_nTotalResultCount;
356 PublishedFileId_t m_rgPublishedFileId[k_unEnumeratePublishedFilesMaxResults];
357 };
358 enum { k_iRemoteStorageEnumerateUserSharedWorkshopFilesResult_t =
359 k_iSteamRemoteStorageCallbacks + 26 };
360
361 typedef struct RemoteStorageSetUserPublishedFileActionResult_t
362 RemoteStorageSetUserPublishedFileActionResult_t;
363 struct RemoteStorageSetUserPublishedFileActionResult_t{
364 EResult m_eResult;
365 PublishedFileId_t m_nPublishedFileId;
366 EWorkshopFileAction m_eAction;
367 };
368 enum { k_iRemoteStorageSetUserPublishedFileActionResult_t =
369 k_iSteamRemoteStorageCallbacks + 27 };
370
371 typedef struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t
372 RemoteStorageEnumeratePublishedFilesByUserActionResult_t;
373 struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t{
374 EResult m_eResult;
375 EWorkshopFileAction m_eAction;
376 i32 m_nResultsReturned;
377 i32 m_nTotalResultCount;
378 PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ];
379 u32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ];
380 };
381 enum { k_iRemoteStorageEnumeratePublishedFilesByUserActionResult_t =
382 k_iSteamRemoteStorageCallbacks + 28 };
383
384 typedef struct RemoteStoragePublishFileProgress_t
385 RemoteStoragePublishFileProgress_t;
386 struct RemoteStoragePublishFileProgress_t{
387 double m_dPercentFile;
388 int m_bPreview;
389 };
390 enum { k_iRemoteStoragePublishFileProgress_t =
391 k_iSteamRemoteStorageCallbacks + 29 };
392
393 typedef struct RemoteStoragePublishedFileUpdated_t
394 RemoteStoragePublishedFileUpdated_t;
395 struct RemoteStoragePublishedFileUpdated_t{
396 PublishedFileId_t m_nPublishedFileId;
397 AppId_t m_nAppID;
398 u64 m_ulUnused;
399 };
400 enum { k_iRemoteStoragePublishedFileUpdated_t =
401 k_iSteamRemoteStorageCallbacks + 30 };
402
403 typedef struct RemoteStorageFileWriteAsyncComplete_t
404 RemoteStorageFileWriteAsyncComplete_t;
405 struct RemoteStorageFileWriteAsyncComplete_t{
406 EResult m_eResult;
407 };
408 enum { k_iRemoteStorageFileWriteAsyncComplete_t =
409 k_iSteamRemoteStorageCallbacks + 31 };
410
411 typedef struct RemoteStorageFileReadAsyncComplete_t
412 RemoteStorageFileReadAsyncComplete_t;
413 struct RemoteStorageFileReadAsyncComplete_t{
414 SteamAPICall_t m_hFileReadAsync;
415 EResult m_eResult;
416 u32 m_nOffset;
417 u32 m_cubRead;
418 };
419 enum { k_iRemoteStorageFileReadAsyncComplete_t =
420 k_iSteamRemoteStorageCallbacks + 32 };
421
422 #pragma pack( pop )
423
424 #endif /* VG_STEAM_REMOTE_STORAGE_H */