clean flag
[vg.git] / vg_steam_ugc.h
1 #ifndef VG_STEAM_UGC_H
2 #define VG_STEAM_UGC_H
3
4 #include "vg_steam.h"
5 #include "vg_steam_remote_storage.h"
6
7 #if defined( VALVE_CALLBACK_PACK_SMALL )
8 ;
9 #pragma pack( push, 4 )
10 #elif defined( VALVE_CALLBACK_PACK_LARGE )
11 #pragma pack( push, 8 )
12 #endif
13
14 typedef void ISteamUGC;
15 typedef u64 UGCQueryHandle_t;
16 typedef u64 UGCUpdateHandle_t;
17
18 const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull;
19 const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull;
20
21 /* Matching UGC types for queries */
22 typedef enum EUGCMatchingUGCType EUGCMatchingUGCType;
23 enum EUGCMatchingUGCType{
24 /* both mtx items and ready-to-use items */
25 k_EUGCMatchingUGCType_Items = 0,
26 k_EUGCMatchingUGCType_Items_Mtx = 1,
27 k_EUGCMatchingUGCType_Items_ReadyToUse = 2,
28 k_EUGCMatchingUGCType_Collections = 3,
29 k_EUGCMatchingUGCType_Artwork = 4,
30 k_EUGCMatchingUGCType_Videos = 5,
31 k_EUGCMatchingUGCType_Screenshots = 6,
32
33 /* both web guides and integrated guides */
34 k_EUGCMatchingUGCType_AllGuides = 7,
35 k_EUGCMatchingUGCType_WebGuides = 8,
36 k_EUGCMatchingUGCType_IntegratedGuides = 9,
37
38 /* ready-to-use items and integrated guides */
39 k_EUGCMatchingUGCType_UsableInGame = 10,
40 k_EUGCMatchingUGCType_ControllerBindings= 11,
41
42 /* game managed items (not managed by users) */
43 k_EUGCMatchingUGCType_GameManagedItems = 12,
44
45 /* @note: will only be valid for CreateQueryUserUGCRequest requests */
46 k_EUGCMatchingUGCType_All = ~0,
47 };
48
49 /*
50 * Different lists of published UGC for a user.
51 * If the current logged in user is different than the specified user, then some
52 * options may not be allowed.
53 */
54 typedef enum EUserUGCList EUserUGCList;
55 enum EUserUGCList{
56 k_EUserUGCList_Published,
57 k_EUserUGCList_VotedOn,
58 k_EUserUGCList_VotedUp,
59 k_EUserUGCList_VotedDown,
60 k_EUserUGCList_WillVoteLater,
61 k_EUserUGCList_Favorited,
62 k_EUserUGCList_Subscribed,
63 k_EUserUGCList_UsedOrPlayed,
64 k_EUserUGCList_Followed,
65 };
66
67 /*
68 * Sort order for user published UGC lists (defaults to creation order
69 * descending)
70 */
71 typedef enum EUserUGCListSortOrder EUserUGCListSortOrder;
72 enum EUserUGCListSortOrder{
73 k_EUserUGCListSortOrder_CreationOrderDesc,
74 k_EUserUGCListSortOrder_CreationOrderAsc,
75 k_EUserUGCListSortOrder_TitleAsc,
76 k_EUserUGCListSortOrder_LastUpdatedDesc,
77 k_EUserUGCListSortOrder_SubscriptionDateDesc,
78 k_EUserUGCListSortOrder_VoteScoreDesc,
79 k_EUserUGCListSortOrder_ForModeration,
80 };
81
82 /*
83 * Combination of sorting and filtering for queries across all UGC
84 */
85 typedef enum EUGCQuery EUGCQuery;
86 enum EUGCQuery{
87 k_EUGCQuery_RankedByVote = 0,
88 k_EUGCQuery_RankedByPublicationDate = 1,
89 k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2,
90 k_EUGCQuery_RankedByTrend = 3,
91 k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4,
92 k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5,
93 k_EUGCQuery_RankedByNumTimesReported = 6,
94 k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate= 7,
95 k_EUGCQuery_NotYetRated = 8,
96 k_EUGCQuery_RankedByTotalVotesAsc = 9,
97 k_EUGCQuery_RankedByVotesUp = 10,
98 k_EUGCQuery_RankedByTextSearch = 11,
99 k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12,
100 k_EUGCQuery_RankedByPlaytimeTrend = 13,
101 k_EUGCQuery_RankedByTotalPlaytime = 14,
102 k_EUGCQuery_RankedByAveragePlaytimeTrend = 15,
103 k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16,
104 k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17,
105 k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18,
106 k_EUGCQuery_RankedByLastUpdatedDate = 19,
107 };
108
109 typedef enum EItemUpdateStatus EItemUpdateStatus;
110 enum EItemUpdateStatus{
111 /* The item update handle was invalid, job might be finished, listen too
112 * SubmitItemUpdateResult_t */
113 k_EItemUpdateStatusInvalid = 0,
114
115 /* The item update is processing configuration data */
116 k_EItemUpdateStatusPreparingConfig = 1,
117
118 /* The item update is reading and processing content files */
119 k_EItemUpdateStatusPreparingContent= 2,
120
121 /* The item update is uploading content changes to Steam */
122 k_EItemUpdateStatusUploadingContent= 3,
123
124 /* The item update is uploading new preview file image */
125 k_EItemUpdateStatusUploadingPreviewFile= 4,
126
127 /* The item update is committing all changes */
128 k_EItemUpdateStatusCommittingChanges = 5
129 };
130
131 typedef enum EItemState EItemState;
132 enum EItemState{
133 /* item not tracked on client */
134 k_EItemStateNone = 0,
135
136 /* current user is subscribed to this item. Not just cached. */
137 k_EItemStateSubscribed = 1,
138
139 /* item was created with ISteamRemoteStorage */
140 k_EItemStateLegacyItem = 2,
141
142 /* item is installed and usable (but maybe out of date) */
143 k_EItemStateInstalled = 4,
144
145 /* items needs an update. Either because it's not installed yet or creator
146 * updated content */
147 k_EItemStateNeedsUpdate = 8,
148
149 /* item update is currently downloading */
150 k_EItemStateDownloading = 16,
151
152 /* DownloadItem() was called for this item, content isn't available until
153 * DownloadItemResult_t is fired */
154 k_EItemStateDownloadPending= 32,
155 };
156
157 typedef enum EItemStatistic EItemStatistic;
158 enum EItemStatistic{
159 k_EItemStatistic_NumSubscriptions = 0,
160 k_EItemStatistic_NumFavorites = 1,
161 k_EItemStatistic_NumFollowers = 2,
162 k_EItemStatistic_NumUniqueSubscriptions = 3,
163 k_EItemStatistic_NumUniqueFavorites = 4,
164 k_EItemStatistic_NumUniqueFollowers = 5,
165 k_EItemStatistic_NumUniqueWebsiteViews = 6,
166 k_EItemStatistic_ReportScore = 7,
167 k_EItemStatistic_NumSecondsPlayed = 8,
168 k_EItemStatistic_NumPlaytimeSessions = 9,
169 k_EItemStatistic_NumComments = 10,
170 k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11,
171 k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12,
172 };
173
174 typedef enum EItemPreviewType EItemPreviewType;
175 enum EItemPreviewType{
176 /* standard image file expected (e.g. jpg, png, gif, etc.) */
177 k_EItemPreviewType_Image = 0,
178
179 k_EItemPreviewType_YouTubeVideo = 1, /* video id is stored */
180 k_EItemPreviewType_Sketchfab = 2, /* model id is stored */
181
182 /*
183 * standard image file expected - cube map in the layout
184 * +---+---+-------+
185 * | |Up | |
186 * +---+---+---+---+
187 * | L | F | R | B |
188 * +---+---+---+---+
189 * | |Dn | |
190 * +---+---+---+---+
191 */
192 k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3,
193
194 /* standard image file expected */
195 k_EItemPreviewType_EnvironmentMap_LatLong = 4,
196
197 /* you can specify your own types above this value */
198 k_EItemPreviewType_ReservedMax = 255,
199 };
200
201 const u32 kNumUGCResultsPerPage = 50;
202 const u32 k_cchDeveloperMetadataMax = 5000;
203
204 /* Details for a single published file/UGC */
205 typedef struct SteamUGCDetails_t SteamUGCDetails_t;
206 struct SteamUGCDetails_t{
207 PublishedFileId_t m_nPublishedFileId;
208 EResult m_eResult; /* The result of the operation. */
209 EWorkshopFileType m_eFileType; /* Type of the file */
210 AppId_t m_nCreatorAppID; /*ID of the app that created this file. */
211 AppId_t m_nConsumerAppID; /* ID of the app that will consume this file. */
212 char m_rgchTitle[k_cchPublishedDocumentTitleMax]; /* title of document */
213
214 /* description of document */
215 char m_rgchDescription[k_cchPublishedDocumentDescriptionMax];
216 u64 m_ulSteamIDOwner; /* Steam ID of the user who created this content. */
217 u32 m_rtimeCreated; /* time when the published file was created */
218 u32 m_rtimeUpdated; /* time when the published file was last updated */
219
220 /* time when the user added the published file to their list (not always
221 * applicable) */
222 u32 m_rtimeAddedToUserList;
223 ERemoteStoragePublishedFileVisibility m_eVisibility; /* visibility */
224 steamapi_bool m_bBanned; /* whether the file was banned */
225
226 /* developer has specifically flagged this item as accepted in the Workshop*/
227 steamapi_bool m_bAcceptedForUse;
228
229 /* whether the list of tags was too long to be returned in the provided
230 * buffer */
231 steamapi_bool m_bTagsTruncated;
232
233 /* comma separated list of all tags associated with this file */
234 char m_rgchTags[k_cchTagListMax];
235
236 /* file/url information */
237 UGCHandle_t m_hFile; /* The handle of the primary file */
238 UGCHandle_t m_hPreviewFile; /* The handle of the preview file */
239
240 /* The cloud filename of the primary file */
241 char m_pchFileName[k_cchFilenameMax];
242
243 /* Size of the primary file */
244 i32 m_nFileSize;
245 i32 m_nPreviewFileSize; /* Size of the preview file */
246 char m_rgchURL[k_cchPublishedFileURLMax]; /* URL (for a video or a website)*/
247
248 /* voting information */
249 u32 m_unVotesUp; /* number of votes up */
250 u32 m_unVotesDown; /* number of votes down */
251 float m_flScore; /* calculated score */
252
253 /* collection details */
254 u32 m_unNumChildren;
255 };
256
257 /*
258 * Callback for querying UGC
259 */
260 typedef struct SteamUGCQueryCompleted_t SteamUGCQueryCompleted_t;
261 struct SteamUGCQueryCompleted_t{
262 UGCQueryHandle_t m_handle;
263 EResult m_eResult;
264 u32 m_unNumResultsReturned;
265 u32 m_unTotalMatchingResults;
266
267 /* indicates whether this data was retrieved from the local on-disk cache */
268 steamapi_bool m_bCachedData;
269
270 /* If a paging cursor was used, then this will be the next cursor to get the
271 * next result set. */
272 char m_rgchNextCursor[k_cchPublishedFileURLMax];
273 };
274 enum { k_iSteamUGCQueryCompleted = k_iSteamUGCCallbacks + 31 };
275
276 /*
277 * Callback for requesting details on one piece of UGC
278 */
279 typedef struct SteamUGCRequestUGCDetailsResult_t
280 SteamUGCRequestUGCDetailsResult_t;
281 struct SteamUGCRequestUGCDetailsResult_t{
282 SteamUGCDetails_t m_details;
283
284 /* indicates whether this data was retrieved from the local on-disk cache */
285 steamapi_bool m_bCachedData;
286 };
287 enum { k_iSteamUGCRequestUGCDetailsResult = k_iSteamUGCCallbacks + 2 };
288
289
290 /*
291 * Purpose: result for ISteamUGC::CreateItem()
292 */
293 typedef struct CreateItemResult_t CreateItemResult_t;
294 struct CreateItemResult_t{
295 EResult m_eResult;
296
297 /* new item got this UGC PublishFileID */
298 PublishedFileId_t m_nPublishedFileId;
299 steamapi_bool m_bUserNeedsToAcceptWorkshopLegalAgreement;
300 };
301 enum { k_iCreateItemResult = k_iSteamUGCCallbacks + 3 };
302
303
304 /*
305 * Purpose: result for ISteamUGC::SubmitItemUpdate()
306 */
307 typedef struct SubmitItemUpdateResult_t SubmitItemUpdateResult_t;
308 struct SubmitItemUpdateResult_t{
309 EResult m_eResult;
310 steamapi_bool m_bUserNeedsToAcceptWorkshopLegalAgreement;
311 PublishedFileId_t m_nPublishedFileId;
312 };
313 enum { k_iSubmitItemUpdateResult = k_iSteamUGCCallbacks + 4 };
314
315
316 /*
317 * Purpose: a Workshop item has been installed or updated
318 */
319 typedef struct ItemInstalled_t ItemInstalled_t;
320 struct ItemInstalled_t{
321 AppId_t m_unAppID;
322 PublishedFileId_t m_nPublishedFileId;
323 };
324 enum { k_iItemInstalled = k_iSteamUGCCallbacks + 5 };
325
326
327 /*
328 * Purpose: result of DownloadItem(), existing item files can be accessed again
329 */
330 typedef struct DownloadItemResult_t DownloadItemResult_t;
331 struct DownloadItemResult_t{
332 AppId_t m_unAppID;
333 PublishedFileId_t m_nPublishedFileId;
334 EResult m_eResult;
335 };
336 enum { k_iDownloadItemResult = k_iSteamUGCCallbacks + 6 };
337
338 /*
339 * Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites()
340 */
341 typedef struct UserFavoriteItemsListChanged_t UserFavoriteItemsListChanged_t;
342 struct UserFavoriteItemsListChanged_t{
343 PublishedFileId_t m_nPublishedFileId;
344 EResult m_eResult;
345 steamapi_bool m_bWasAddRequest;
346 };
347 enum { k_iUserFavoriteItemsListChanged = k_iSteamUGCCallbacks + 7 };
348
349 /*
350 * Purpose: The result of a call to SetUserItemVote()
351 */
352 typedef struct SetUserItemVoteResult_t SetUserItemVoteResult_t;
353 struct SetUserItemVoteResult_t{
354 PublishedFileId_t m_nPublishedFileId;
355 EResult m_eResult;
356 steamapi_bool m_bVoteUp;
357 };
358 enum { k_iSetUserItemVoteResult = k_iSteamUGCCallbacks + 8 };
359
360 /*
361 * Purpose: The result of a call to GetUserItemVote()
362 */
363 typedef struct GetUserItemVoteResult_t GetUserItemVoteResult_t;
364 struct GetUserItemVoteResult_t{
365 PublishedFileId_t m_nPublishedFileId;
366 EResult m_eResult;
367 steamapi_bool m_bVotedUp;
368 steamapi_bool m_bVotedDown;
369 steamapi_bool m_bVoteSkipped;
370 };
371 enum { k_iGetUserItemVoteResult = k_iSteamUGCCallbacks + 9 };
372
373 /*
374 * Purpose: The result of a call to StartPlaytimeTracking()
375 */
376 typedef struct StartPlaytimeTrackingResult_t StartPlaytimeTrackingResult_t;
377 struct StartPlaytimeTrackingResult_t{
378 EResult m_eResult;
379 };
380 enum { k_iStartPlaytimeTrackingResult = k_iSteamUGCCallbacks + 10 };
381
382 /*
383 * Purpose: The result of a call to StopPlaytimeTracking()
384 */
385 typedef struct StopPlaytimeTrackingResult_t StopPlaytimeTrackingResult_t;
386 struct StopPlaytimeTrackingResult_t{
387 EResult m_eResult;
388 };
389 enum { k_iStopPlaytimeTrackingResult = k_iSteamUGCCallbacks + 11 };
390
391 /*
392 * Purpose: The result of a call to AddDependency
393 */
394 typedef struct AddUGCDependencyResult_t AddUGCDependencyResult_t;
395 struct AddUGCDependencyResult_t{
396 EResult m_eResult;
397 PublishedFileId_t m_nPublishedFileId;
398 PublishedFileId_t m_nChildPublishedFileId;
399 };
400 enum { k_iAddUGCDependecyResult = k_iSteamUGCCallbacks + 12 };
401
402 /*
403 * Purpose: The result of a call to RemoveDependency
404 */
405 typedef struct RemoveUGCDependencyResult_t RemoveUGCDependencyResult_t;
406 struct RemoveUGCDependencyResult_t{
407 EResult m_eResult;
408 PublishedFileId_t m_nPublishedFileId;
409 PublishedFileId_t m_nChildPublishedFileId;
410 };
411 enum { k_iRemoveUGCDependecyResult = k_iSteamUGCCallbacks + 13 };
412
413
414 /*
415 * Purpose: The result of a call to AddAppDependency
416 */
417 typedef struct AddAppDependencyResult_t AddAppDependencyResult_t;
418 struct AddAppDependencyResult_t{
419 EResult m_eResult;
420 PublishedFileId_t m_nPublishedFileId;
421 AppId_t m_nAppID;
422 };
423 enum { k_iAddAppDependencyResult = k_iSteamUGCCallbacks + 14 };
424
425 /*
426 * Purpose: The result of a call to RemoveAppDependency
427 */
428 typedef struct RemoveAppDependencyResult_t RemoveAppDependencyResult_t;
429 struct RemoveAppDependencyResult_t{
430 EResult m_eResult;
431 PublishedFileId_t m_nPublishedFileId;
432 AppId_t m_nAppID;
433 };
434 enum { k_iRemoveAppDependencyResult = k_iSteamUGCCallbacks + 15 };
435
436 /*
437 * Purpose: The result of a call to GetAppDependencies. Callback may be called
438 * multiple times until all app dependencies have been returned.
439 */
440 typedef struct GetAppDependenciesResult_t GetAppDependenciesResult_t;
441 struct GetAppDependenciesResult_t{
442 EResult m_eResult;
443 PublishedFileId_t m_nPublishedFileId;
444 AppId_t m_rgAppIDs[32];
445 u32 m_nNumAppDependencies; // number returned in this struct
446 u32 m_nTotalNumAppDependencies; // total found
447 };
448 enum { k_iGetAppDependeniesResult = k_iSteamUGCCallbacks + 16 };
449
450 /*
451 * Purpose: The result of a call to DeleteItem
452 */
453 typedef struct DeleteItemResult_t DeleteItemResult_t;
454 struct DeleteItemResult_t{
455 EResult m_eResult;
456 PublishedFileId_t m_nPublishedFileId;
457 };
458 enum { k_iDeleteItemResult = k_iSteamUGCCallbacks + 17 };
459
460
461 /*
462 * Purpose: signal that the list of subscribed items changed
463 */
464 typedef struct UserSubscribedItemsListChanged_t
465 UserSubscribedItemsListChanged_t;
466 struct UserSubscribedItemsListChanged_t{
467 AppId_t m_nAppID;
468 };
469 enum { k_iUserSubscribedItemsListChanged = k_iSteamUGCCallbacks + 18 };
470
471
472 /*
473 * Purpose: Status of the user's acceptable/rejection of the app's specific
474 * Workshop EULA
475 */
476 typedef struct WorkshopEULAStatus_t WorkshopEULAStatus_t;
477 struct WorkshopEULAStatus_t{
478 EResult m_eResult;
479 AppId_t m_nAppID;
480 u32 m_unVersion;
481 RTime32 m_rtAction;
482 steamapi_bool m_bAccepted;
483 steamapi_bool m_bNeedsAction;
484 };
485 enum { k_iWorkshopEULAStatus = k_iSteamUGCCallbacks + 20 };
486
487 #pragma pack( pop )
488
489 #define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION016"
490
491 ISteamUGC *SteamAPI_SteamUGC_v016();
492 ISteamUGC *SteamAPI_SteamUGC()
493 {
494 return SteamAPI_SteamUGC_v016();
495 }
496 ISteamUGC *SteamAPI_SteamGameServerUGC_v016();
497 ISteamUGC *SteamAPI_SteamGameServerUGC()
498 {
499 return SteamAPI_SteamGameServerUGC_v016();
500 }
501 UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest(
502 ISteamUGC *self, AccountID_t unAccountID, EUserUGCList eListType,
503 EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder,
504 AppId_t nCreatorAppID, AppId_t nConsumerAppID, u32 unPage );
505
506 UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage(
507 ISteamUGC *self, EUGCQuery eQueryType,
508 EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType,
509 AppId_t nCreatorAppID, AppId_t nConsumerAppID, u32 unPage );
510
511 UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor(
512 ISteamUGC *self, EUGCQuery eQueryType,
513 EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType,
514 AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor );
515
516 UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest(
517 ISteamUGC *self, PublishedFileId_t *pvecPublishedFileID,
518 u32 unNumPublishedFileIDs );
519
520 SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest( ISteamUGC* self,
521 UGCQueryHandle_t handle );
522
523 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCResult(
524 ISteamUGC *self, UGCQueryHandle_t handle, u32 index,
525 SteamUGCDetails_t *pDetails );
526
527 u32 SteamAPI_ISteamUGC_GetQueryUGCNumTags( ISteamUGC* self,
528 UGCQueryHandle_t handle, u32 index );
529
530 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCTag(
531 ISteamUGC* self, UGCQueryHandle_t handle, u32 index, u32 indexTag,
532 char * pchValue, u32 cchValueSize );
533
534 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName( ISteamUGC* self,
535 UGCQueryHandle_t handle, u32 index, u32 indexTag, char * pchValue,
536 u32 cchValueSize );
537
538 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL( ISteamUGC* self,
539 UGCQueryHandle_t handle, u32 index, char * pchURL, u32 cchURLSize );
540
541 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCMetadata( ISteamUGC* self,
542 UGCQueryHandle_t handle, u32 index, char * pchMetadata,
543 u32 cchMetadatasize );
544
545 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCChildren( ISteamUGC* self,
546 UGCQueryHandle_t handle, u32 index,
547 PublishedFileId_t *pvecPublishedFileID, u32 cMaxEntries );
548
549 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCStatistic( ISteamUGC* self,
550 UGCQueryHandle_t handle, u32 index, EItemStatistic eStatType,
551 u64 *pStatValue );
552
553 u32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews( ISteamUGC* self,
554 UGCQueryHandle_t handle, u32 index );
555
556 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self,
557 UGCQueryHandle_t handle, u32 index, u32 previewIndex,
558 char *pchURLOrVideoID, u32 cchURLSize, char *pchOriginalFileName,
559 u32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType );
560
561 u32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self,
562 UGCQueryHandle_t handle, u32 index );
563
564 steamapi_bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self,
565 UGCQueryHandle_t handle, u32 index, u32 keyValueTagIndex, char *pchKey,
566 u32 cchKeySize, char * pchValue, u32 cchValueSize );
567
568 steamapi_bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self,
569 UGCQueryHandle_t handle, u32 index, const char *pchKey, char *pchValue,
570 u32 cchValueSize );
571
572 steamapi_bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self,
573 UGCQueryHandle_t handle );
574
575 steamapi_bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self,
576 UGCQueryHandle_t handle, const char * pTagName );
577
578 steamapi_bool SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self,
579 UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups );
580
581 steamapi_bool SteamAPI_ISteamUGC_AddExcludedTag( ISteamUGC* self,
582 UGCQueryHandle_t handle, const char * pTagName );
583
584 steamapi_bool SteamAPI_ISteamUGC_SetReturnOnlyIDs( ISteamUGC* self,
585 UGCQueryHandle_t handle, steamapi_bool bReturnOnlyIDs );
586
587 steamapi_bool SteamAPI_ISteamUGC_SetReturnKeyValueTags( ISteamUGC* self,
588 UGCQueryHandle_t handle, steamapi_bool bReturnKeyValueTags );
589
590 steamapi_bool SteamAPI_ISteamUGC_SetReturnLongDescription( ISteamUGC* self,
591 UGCQueryHandle_t handle, steamapi_bool bReturnLongDescription );
592
593 steamapi_bool SteamAPI_ISteamUGC_SetReturnMetadata( ISteamUGC* self,
594 UGCQueryHandle_t handle, steamapi_bool bReturnMetadata );
595
596 steamapi_bool SteamAPI_ISteamUGC_SetReturnChildren( ISteamUGC* self,
597 UGCQueryHandle_t handle, steamapi_bool bReturnChildren );
598
599 steamapi_bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews( ISteamUGC* self,
600 UGCQueryHandle_t handle, steamapi_bool bReturnAdditionalPreviews );
601
602 steamapi_bool SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self,
603 UGCQueryHandle_t handle, steamapi_bool bReturnTotalOnly );
604
605 steamapi_bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self,
606 UGCQueryHandle_t handle, u32 unDays );
607
608 steamapi_bool SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self,
609 UGCQueryHandle_t handle, const char * pchLanguage );
610
611 steamapi_bool SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self,
612 UGCQueryHandle_t handle, u32 unMaxAgeSeconds );
613
614 steamapi_bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self,
615 UGCQueryHandle_t handle, const char * pMatchCloudFileName );
616
617 steamapi_bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self,
618 UGCQueryHandle_t handle, steamapi_bool bMatchAnyTag );
619
620 steamapi_bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self,
621 UGCQueryHandle_t handle, const char * pSearchText );
622
623 steamapi_bool SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self,
624 UGCQueryHandle_t handle, u32 unDays );
625
626 steamapi_bool SteamAPI_ISteamUGC_SetTimeCreatedDateRange( ISteamUGC* self,
627 UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd );
628
629 steamapi_bool SteamAPI_ISteamUGC_SetTimeUpdatedDateRange( ISteamUGC* self,
630 UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd );
631
632 steamapi_bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self,
633 UGCQueryHandle_t handle, const char * pKey, const char * pValue );
634
635 SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self,
636 PublishedFileId_t nPublishedFileID, u32 unMaxAgeSeconds );
637
638 SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self,
639 AppId_t nConsumerAppId, EWorkshopFileType eFileType );
640
641 UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate( ISteamUGC* self,
642 AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID );
643
644 steamapi_bool SteamAPI_ISteamUGC_SetItemTitle( ISteamUGC* self,
645 UGCUpdateHandle_t handle, const char * pchTitle );
646
647 steamapi_bool SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self,
648 UGCUpdateHandle_t handle, const char * pchDescription );
649
650 steamapi_bool SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self,
651 UGCUpdateHandle_t handle, const char * pchLanguage );
652
653 steamapi_bool SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self,
654 UGCUpdateHandle_t handle, const char * pchMetaData );
655
656 steamapi_bool SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self,
657 UGCUpdateHandle_t handle,
658 ERemoteStoragePublishedFileVisibility eVisibility );
659
660 steamapi_bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self,
661 UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags );
662
663 steamapi_bool SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self,
664 UGCUpdateHandle_t handle, const char * pszContentFolder );
665
666 steamapi_bool SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self,
667 UGCUpdateHandle_t handle, const char * pszPreviewFile );
668
669 steamapi_bool SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self,
670 UGCUpdateHandle_t handle, steamapi_bool bAllowLegacyUpload );
671
672 steamapi_bool SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags( ISteamUGC* self,
673 UGCUpdateHandle_t handle );
674
675 steamapi_bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags( ISteamUGC* self,
676 UGCUpdateHandle_t handle, const char * pchKey );
677
678 steamapi_bool SteamAPI_ISteamUGC_AddItemKeyValueTag( ISteamUGC* self,
679 UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue );
680
681 steamapi_bool SteamAPI_ISteamUGC_AddItemPreviewFile( ISteamUGC* self,
682 UGCUpdateHandle_t handle, const char * pszPreviewFile,
683 EItemPreviewType type );
684
685 steamapi_bool SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self,
686 UGCUpdateHandle_t handle, const char * pszVideoID );
687
688 steamapi_bool SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self,
689 UGCUpdateHandle_t handle, u32 index, const char * pszPreviewFile );
690
691 steamapi_bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self,
692 UGCUpdateHandle_t handle, u32 index, const char * pszVideoID );
693
694 steamapi_bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self,
695 UGCUpdateHandle_t handle, u32 index );
696
697 SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self,
698 UGCUpdateHandle_t handle, const char * pchChangeNote );
699
700 EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self,
701 UGCUpdateHandle_t handle, u64 * punBytesProcessed, u64 * punBytesTotal );
702
703 SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self,
704 PublishedFileId_t nPublishedFileID, steamapi_bool bVoteUp );
705
706 SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote( ISteamUGC* self,
707 PublishedFileId_t nPublishedFileID );
708
709 SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* self,
710 AppId_t nAppId, PublishedFileId_t nPublishedFileID );
711
712 SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self,
713 AppId_t nAppId, PublishedFileId_t nPublishedFileID );
714
715 SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self,
716 PublishedFileId_t nPublishedFileID );
717
718 SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self,
719 PublishedFileId_t nPublishedFileID );
720
721 u32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self );
722
723 u32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self,
724 PublishedFileId_t * pvecPublishedFileID, u32 cMaxEntries );
725
726 u32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self,
727 PublishedFileId_t nPublishedFileID );
728
729 steamapi_bool SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self,
730 PublishedFileId_t nPublishedFileID, u64 * punSizeOnDisk, char * pchFolder,
731 u32 cchFolderSize, u32 * punTimeStamp );
732
733 steamapi_bool SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self,
734 PublishedFileId_t nPublishedFileID, u64 * punBytesDownloaded,
735 u64 * punBytesTotal );
736
737 steamapi_bool SteamAPI_ISteamUGC_DownloadItem( ISteamUGC* self,
738 PublishedFileId_t nPublishedFileID, steamapi_bool bHighPriority );
739
740 steamapi_bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer( ISteamUGC* self,
741 DepotId_t unWorkshopDepotID, const char * pszFolder );
742
743 void SteamAPI_ISteamUGC_SuspendDownloads( ISteamUGC* self,
744 steamapi_bool bSuspend );
745
746 SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking( ISteamUGC* self,
747 PublishedFileId_t * pvecPublishedFileID, u32 unNumPublishedFileIDs );
748
749 SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking( ISteamUGC* self,
750 PublishedFileId_t * pvecPublishedFileID, u32 unNumPublishedFileIDs );
751
752 SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(
753 ISteamUGC* self );
754
755 SteamAPICall_t SteamAPI_ISteamUGC_AddDependency( ISteamUGC* self,
756 PublishedFileId_t nParentPublishedFileID,
757 PublishedFileId_t nChildPublishedFileID );
758
759 SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency( ISteamUGC* self,
760 PublishedFileId_t nParentPublishedFileID,
761 PublishedFileId_t nChildPublishedFileID );
762
763 SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self,
764 PublishedFileId_t nPublishedFileID, AppId_t nAppID );
765
766 SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self,
767 PublishedFileId_t nPublishedFileID, AppId_t nAppID );
768
769 SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self,
770 PublishedFileId_t nPublishedFileID );
771
772 SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self,
773 PublishedFileId_t nPublishedFileID );
774
775 steamapi_bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self );
776
777 SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self );
778
779 #endif /* VG_STEAM_UGC_H */