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