1 #ifndef VG_STEAM_REMOTE_STORAGE_H
2 #define VG_STEAM_REMOTE_STORAGE_H
4 #include "vg/vg_steam.h"
6 const u32 k_unMaxCloudFileChunkSize
= 100 * 1024 * 1024;
8 #if defined( VALVE_CALLBACK_PACK_SMALL )
9 #pragma pack( push, 4 )
10 #elif defined( VALVE_CALLBACK_PACK_LARGE )
11 #pragma pack( push, 8 )
13 #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
15 typedef struct SteamParamStringArray_t SteamParamStringArray_t
;
16 struct SteamParamStringArray_t
{
17 const char **m_ppStrings
;
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
;
31 /* Handle for writing to Steam Cloud */
32 typedef u64 UGCFileWriteStreamHandle_t
;
33 const UGCFileWriteStreamHandle_t
34 k_UGCFileStreamHandleInvalid
= 0xffffffffffffffffull
;
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 };
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),
55 /* NB we get one more before we need to widen some things */
56 k_ERemoteStoragePlatformAll
= 0xffffffff
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,
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
91 typedef enum EWorkshopVote EWorkshopVote
;
93 k_EWorkshopVoteUnvoted
= 0,
94 k_EWorkshopVoteFor
= 1,
95 k_EWorkshopVoteAgainst
= 2,
96 k_EWorkshopVoteLater
= 3,
99 typedef enum EWorkshopFileAction EWorkshopFileAction
;
100 enum EWorkshopFileAction
{
101 k_EWorkshopFileActionPlayed
= 0,
102 k_EWorkshopFileActionCompleted
= 1,
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,
116 typedef enum EWorkshopVideoProvider EWorkshopVideoProvider
;
117 enum EWorkshopVideoProvider
{
118 k_EWorkshopVideoProviderNone
= 0,
119 k_EWorkshopVideoProviderYoutube
= 1
122 typedef enum EUGCReadAction EUGCReadAction
;
124 k_EUGCRead_ContinueReadingUntilFinished
= 0,
125 k_EUGCRead_ContinueReading
= 1,
126 k_EUGCRead_Close
= 2,
129 typedef enum ERemoteStorageLocalFileChange ERemoteStorageLocalFileChange
;
130 enum ERemoteStorageLocalFileChange
{
131 k_ERemoteStorageLocalFileChange_Invalid
= 0,
132 k_ERemoteStorageLocalFileChange_FileUpdated
= 1,
133 k_ERemoteStorageLocalFileChange_FileDeleted
= 2,
136 typedef enum ERemoteStorageFilePathType ERemoteStorageFilePathType
;
137 enum ERemoteStorageFilePathType
{
138 k_ERemoteStorageFilePathType_Invalid
= 0,
139 k_ERemoteStorageFilePathType_Absolute
= 1,
140 k_ERemoteStorageFilePathType_APIFilename
= 2,
143 #define STEAMREMOTESTORAGE_INTERFACE_VERSION \
144 "STEAMREMOTESTORAGE_INTERFACE_VERSION016"
146 #if defined( VALVE_CALLBACK_PACK_SMALL )
147 #pragma pack( push, 4 )
148 #elif defined( VALVE_CALLBACK_PACK_LARGE )
149 #pragma pack( push, 8 )
151 #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
154 typedef struct RemoteStorageFileShareResult_t RemoteStorageFileShareResult_t
;
155 struct RemoteStorageFileShareResult_t
{
158 char m_rgchFilename
[k_cchFilenameMax
];
160 enum { k_iRemoteStorageFileShareResult
= k_iSteamRemoteStorageCallbacks
+ 7 };
162 typedef struct RemoteStoragePublishFileResult_t
163 RemoteStoragePublishFileResult_t
;
164 struct RemoteStoragePublishFileResult_t
{
166 PublishedFileId_t m_nPublishedFileId
;
167 int m_bUserNeedsToAcceptWorkshopLegalAgreement
;
169 enum { k_iRemoteStoragePublushFileResult
= k_iSteamRemoteStorageCallbacks
+ 9 };
171 typedef struct RemoteStorageDeletePublishedFileResult_t
172 RemoteStorageDeletePublishedFileResult_t
;
173 struct RemoteStorageDeletePublishedFileResult_t
{
175 PublishedFileId_t m_nPublishedFileId
;
177 enum { k_iRemoteStorageDeletePublishedFileResult
=
178 k_iSteamRemoteStorageCallbacks
+ 11 };
180 typedef struct RemoteStorageEnumerateUserPublishedFilesResult_t
181 RemoteStorageEnumerateUserPublishedFilesResult_t
;
182 struct RemoteStorageEnumerateUserPublishedFilesResult_t
{
184 i32 m_nResultsReturned
;
185 i32 m_nTotalResultCount
;
186 PublishedFileId_t m_rgPublishedFileId
[k_unEnumeratePublishedFilesMaxResults
];
188 enum { k_iRemoteStorageEnumerateUserPublishedFilesResult
=
189 k_iSteamRemoteStorageCallbacks
+ 12 };
191 typedef struct RemoteStorageSubscribePublishedFileResult_t
192 RemoteStorageSubscribePublishedFileResult_t
;
193 struct RemoteStorageSubscribePublishedFileResult_t
{
195 PublishedFileId_t m_nPublishedFileId
;
197 enum { k_iRemoteStorageSubscribePublishedFileResult
=
198 k_iSteamRemoteStorageCallbacks
+ 13 };
201 typedef struct RemoteStorageEnumerateUserSubscribedFilesResult_t
202 RemoteStorageEnumerateUserSubscribedFilesResult_t
;
203 struct RemoteStorageEnumerateUserSubscribedFilesResult_t
{
205 i32 m_nResultsReturned
;
206 i32 m_nTotalResultCount
;
207 PublishedFileId_t m_rgPublishedFileId
[ k_unEnumeratePublishedFilesMaxResults
];
208 u32 m_rgRTimeSubscribed
[ k_unEnumeratePublishedFilesMaxResults
];
210 enum { k_iRemoteStorageEnumerateUserSubscribedFilesResult
=
211 k_iSteamRemoteStorageCallbacks
+ 14 };
213 typedef struct RemoteStorageUnsubscribePublishedFileResult_t
214 RemoteStorageUnsubscribePublishedFileResult_t
;
215 struct RemoteStorageUnsubscribePublishedFileResult_t
{
217 PublishedFileId_t m_nPublishedFileId
;
219 enum { k_iRemoteStorageUnsubscribePublishedFileResult
=
220 k_iSteamRemoteStorageCallbacks
+ 15 };
222 typedef struct RemoteStorageUpdatePublishedFileResult_t
223 RemoteStorageUpdatePublishedFileResult_t
;
224 struct RemoteStorageUpdatePublishedFileResult_t
{
226 PublishedFileId_t m_nPublishedFileId
;
227 int m_bUserNeedsToAcceptWorkshopLegalAgreement
;
229 enum { k_iRemoteStorageUpdatePublishedFileResult
=
230 k_iSteamRemoteStorageCallbacks
+ 16 };
233 typedef struct RemoteStorageDownloadUGCResult_t
234 RemoteStorageDownloadUGCResult_t
;
235 struct RemoteStorageDownloadUGCResult_t
{
240 char m_pchFileName
[k_cchFilenameMax
];
241 u64 m_ulSteamIDOwner
;
243 enum { k_iRemoteStorageDownloadUGCResult
=
244 k_iSteamRemoteStorageCallbacks
+ 17 };
247 typedef struct RemoteStorageGetPublishedFileDetailsResult_t
248 RemoteStorageGetPublishedFileDetailsResult_t
;
249 struct RemoteStorageGetPublishedFileDetailsResult_t
{
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
];
257 UGCHandle_t m_hPreviewFile
;
258 u64 m_ulSteamIDOwner
;
261 ERemoteStoragePublishedFileVisibility m_eVisibility
;
263 char m_rgchTags
[k_cchTagListMax
];
264 int m_bTagsTruncated
;
265 char m_pchFileName
[k_cchFilenameMax
];
267 i32 m_nPreviewFileSize
;
268 char m_rgchURL
[k_cchPublishedFileURLMax
];
269 EWorkshopFileType m_eFileType
;
270 int m_bAcceptedForUse
;
272 enum { k_iRemoteStorageGetPublishedFileDetailsResult
=
273 k_iSteamRemoteStorageCallbacks
+ 18 };
275 typedef struct RemoteStorageEnumerateWorkshopFilesResult_t
276 RemoteStorageEnumerateWorkshopFilesResult_t
;
277 struct RemoteStorageEnumerateWorkshopFilesResult_t
{
279 i32 m_nResultsReturned
;
280 i32 m_nTotalResultCount
;
281 PublishedFileId_t m_rgPublishedFileId
[ k_unEnumeratePublishedFilesMaxResults
];
282 float m_rgScore
[ k_unEnumeratePublishedFilesMaxResults
];
286 enum { k_iRemoteStorageEnumerateWorkshopFilesResult_t
=
287 k_iSteamRemoteStorageCallbacks
+ 19 };
290 typedef struct RemoteStorageGetPublishedItemVoteDetailsResult_t
291 RemoteStorageGetPublishedItemVoteDetailsResult_t
;
292 struct RemoteStorageGetPublishedItemVoteDetailsResult_t
{
294 PublishedFileId_t m_unPublishedFileId
;
300 enum { k_iRemoteStorageGetPublishedItemVoteDetailsResult_t
=
301 k_iSteamRemoteStorageCallbacks
+ 20 };
304 typedef struct RemoteStoragePublishedFileSubscribed_t
305 RemoteStoragePublishedFileSubscribed_t
;
306 struct RemoteStoragePublishedFileSubscribed_t
{
307 PublishedFileId_t m_nPublishedFileId
;
310 enum { k_iRemoteStoragePublishedFileSubscribed_t
=
311 k_iSteamRemoteStorageCallbacks
+ 21 };
313 typedef struct RemoteStoragePublishedFileUnsubscribed_t
314 RemoteStoragePublishedFileUnsubscribed_t
;
315 struct RemoteStoragePublishedFileUnsubscribed_t
{
316 PublishedFileId_t m_nPublishedFileId
;
319 enum { k_iRemoteStoragePublishedFileUnsubscribed_t
=
320 k_iSteamRemoteStorageCallbacks
+ 22 };
323 typedef struct RemoteStoragePublishedFileDeleted_t
324 RemoteStoragePublishedFileDeleted_t
;
325 struct RemoteStoragePublishedFileDeleted_t
{
326 PublishedFileId_t m_nPublishedFileId
;
329 enum { k_iRemoteStoragePublishedFileDeleted_t
=
330 k_iSteamRemoteStorageCallbacks
+ 23 };
332 typedef struct RemoteStorageUpdateUserPublishedItemVoteResult_t
333 RemoteStorageUpdateUserPublishedItemVoteResult_t
;
334 struct RemoteStorageUpdateUserPublishedItemVoteResult_t
{
336 PublishedFileId_t m_nPublishedFileId
;
338 enum { k_iRemoteStorageUpdateUserPublishedItemVoteResult_t
=
339 k_iSteamRemoteStorageCallbacks
+ 24 };
341 typedef struct RemoteStorageUserVoteDetails_t RemoteStorageUserVoteDetails_t
;
342 struct RemoteStorageUserVoteDetails_t
{
344 PublishedFileId_t m_nPublishedFileId
;
345 EWorkshopVote m_eVote
;
347 enum { k_iRemoteStorageUserVoteDetails_t
=
348 k_iSteamRemoteStorageCallbacks
+ 25 };
350 typedef struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t
351 RemoteStorageEnumerateUserSharedWorkshopFilesResult_t
;
352 struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t
{
354 i32 m_nResultsReturned
;
355 i32 m_nTotalResultCount
;
356 PublishedFileId_t m_rgPublishedFileId
[k_unEnumeratePublishedFilesMaxResults
];
358 enum { k_iRemoteStorageEnumerateUserSharedWorkshopFilesResult_t
=
359 k_iSteamRemoteStorageCallbacks
+ 26 };
361 typedef struct RemoteStorageSetUserPublishedFileActionResult_t
362 RemoteStorageSetUserPublishedFileActionResult_t
;
363 struct RemoteStorageSetUserPublishedFileActionResult_t
{
365 PublishedFileId_t m_nPublishedFileId
;
366 EWorkshopFileAction m_eAction
;
368 enum { k_iRemoteStorageSetUserPublishedFileActionResult_t
=
369 k_iSteamRemoteStorageCallbacks
+ 27 };
371 typedef struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t
372 RemoteStorageEnumeratePublishedFilesByUserActionResult_t
;
373 struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t
{
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
];
381 enum { k_iRemoteStorageEnumeratePublishedFilesByUserActionResult_t
=
382 k_iSteamRemoteStorageCallbacks
+ 28 };
384 typedef struct RemoteStoragePublishFileProgress_t
385 RemoteStoragePublishFileProgress_t
;
386 struct RemoteStoragePublishFileProgress_t
{
387 double m_dPercentFile
;
390 enum { k_iRemoteStoragePublishFileProgress_t
=
391 k_iSteamRemoteStorageCallbacks
+ 29 };
393 typedef struct RemoteStoragePublishedFileUpdated_t
394 RemoteStoragePublishedFileUpdated_t
;
395 struct RemoteStoragePublishedFileUpdated_t
{
396 PublishedFileId_t m_nPublishedFileId
;
400 enum { k_iRemoteStoragePublishedFileUpdated_t
=
401 k_iSteamRemoteStorageCallbacks
+ 30 };
403 typedef struct RemoteStorageFileWriteAsyncComplete_t
404 RemoteStorageFileWriteAsyncComplete_t
;
405 struct RemoteStorageFileWriteAsyncComplete_t
{
408 enum { k_iRemoteStorageFileWriteAsyncComplete_t
=
409 k_iSteamRemoteStorageCallbacks
+ 31 };
411 typedef struct RemoteStorageFileReadAsyncComplete_t
412 RemoteStorageFileReadAsyncComplete_t
;
413 struct RemoteStorageFileReadAsyncComplete_t
{
414 SteamAPICall_t m_hFileReadAsync
;
419 enum { k_iRemoteStorageFileReadAsyncComplete_t
=
420 k_iSteamRemoteStorageCallbacks
+ 32 };
424 #endif /* VG_STEAM_REMOTE_STORAGE_H */