X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg_steam_ugc.h;fp=vg_steam_ugc.h;h=520419226fe5e624dd0be1811994b954b1a2472d;hb=ffd724233b7a3cb89d0d5d253ba4c475d87c76e2;hp=0000000000000000000000000000000000000000;hpb=2026f6fe648696888762c5b10210191748a6c9de;p=vg.git diff --git a/vg_steam_ugc.h b/vg_steam_ugc.h new file mode 100644 index 0000000..5204192 --- /dev/null +++ b/vg_steam_ugc.h @@ -0,0 +1,778 @@ +#ifndef VG_STEAM_UGC_H +#define VG_STEAM_UGC_H + +#include "vg_steam.h" +#include "vg_steam_remote_storage.h" + +#if defined( VALVE_CALLBACK_PACK_SMALL ) + ; + #pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) + #pragma pack( push, 8 ) +#endif + +typedef void ISteamUGC; +typedef u64 UGCQueryHandle_t; +typedef u64 UGCUpdateHandle_t; + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + +/* Matching UGC types for queries */ +typedef enum EUGCMatchingUGCType EUGCMatchingUGCType; +enum EUGCMatchingUGCType{ + /* both mtx items and ready-to-use items */ + k_EUGCMatchingUGCType_Items = 0, + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + + /* both web guides and integrated guides */ + k_EUGCMatchingUGCType_AllGuides = 7, + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + + /* ready-to-use items and integrated guides */ + k_EUGCMatchingUGCType_UsableInGame = 10, + k_EUGCMatchingUGCType_ControllerBindings= 11, + + /* game managed items (not managed by users) */ + k_EUGCMatchingUGCType_GameManagedItems = 12, + + /* @note: will only be valid for CreateQueryUserUGCRequest requests */ + k_EUGCMatchingUGCType_All = ~0, +}; + +/* + * Different lists of published UGC for a user. + * If the current logged in user is different than the specified user, then some + * options may not be allowed. + */ +typedef enum EUserUGCList EUserUGCList; +enum EUserUGCList{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +/* + * Sort order for user published UGC lists (defaults to creation order + * descending) + */ +typedef enum EUserUGCListSortOrder EUserUGCListSortOrder; +enum EUserUGCListSortOrder{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +/* + * Combination of sorting and filtering for queries across all UGC + */ +typedef enum EUGCQuery EUGCQuery; +enum EUGCQuery{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate= 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, + k_EUGCQuery_RankedByLastUpdatedDate = 19, +}; + +typedef enum EItemUpdateStatus EItemUpdateStatus; +enum EItemUpdateStatus{ + /* The item update handle was invalid, job might be finished, listen too + * SubmitItemUpdateResult_t */ + k_EItemUpdateStatusInvalid = 0, + + /* The item update is processing configuration data */ + k_EItemUpdateStatusPreparingConfig = 1, + + /* The item update is reading and processing content files */ + k_EItemUpdateStatusPreparingContent= 2, + + /* The item update is uploading content changes to Steam */ + k_EItemUpdateStatusUploadingContent= 3, + + /* The item update is uploading new preview file image */ + k_EItemUpdateStatusUploadingPreviewFile= 4, + + /* The item update is committing all changes */ + k_EItemUpdateStatusCommittingChanges = 5 +}; + +typedef enum EItemState EItemState; +enum EItemState{ + /* item not tracked on client */ + k_EItemStateNone = 0, + + /* current user is subscribed to this item. Not just cached. */ + k_EItemStateSubscribed = 1, + + /* item was created with ISteamRemoteStorage */ + k_EItemStateLegacyItem = 2, + + /* item is installed and usable (but maybe out of date) */ + k_EItemStateInstalled = 4, + + /* items needs an update. Either because it's not installed yet or creator + * updated content */ + k_EItemStateNeedsUpdate = 8, + + /* item update is currently downloading */ + k_EItemStateDownloading = 16, + + /* DownloadItem() was called for this item, content isn't available until + * DownloadItemResult_t is fired */ + k_EItemStateDownloadPending= 32, +}; + +typedef enum EItemStatistic EItemStatistic; +enum EItemStatistic{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, + k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, + k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, +}; + +typedef enum EItemPreviewType EItemPreviewType; +enum EItemPreviewType{ + /* standard image file expected (e.g. jpg, png, gif, etc.) */ + k_EItemPreviewType_Image = 0, + + k_EItemPreviewType_YouTubeVideo = 1, /* video id is stored */ + k_EItemPreviewType_Sketchfab = 2, /* model id is stored */ + + /* + * standard image file expected - cube map in the layout + * +---+---+-------+ + * | |Up | | + * +---+---+---+---+ + * | L | F | R | B | + * +---+---+---+---+ + * | |Dn | | + * +---+---+---+---+ + */ + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + + /* standard image file expected */ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + + /* you can specify your own types above this value */ + k_EItemPreviewType_ReservedMax = 255, +}; + +const u32 kNumUGCResultsPerPage = 50; +const u32 k_cchDeveloperMetadataMax = 5000; + +/* Details for a single published file/UGC */ +typedef struct SteamUGCDetails_t SteamUGCDetails_t; +struct SteamUGCDetails_t{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; /* The result of the operation. */ + EWorkshopFileType m_eFileType; /* Type of the file */ + AppId_t m_nCreatorAppID; /*ID of the app that created this file. */ + AppId_t m_nConsumerAppID; /* ID of the app that will consume this file. */ + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; /* title of document */ + + /* description of document */ + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; + u64 m_ulSteamIDOwner; /* Steam ID of the user who created this content. */ + u32 m_rtimeCreated; /* time when the published file was created */ + u32 m_rtimeUpdated; /* time when the published file was last updated */ + + /* time when the user added the published file to their list (not always + * applicable) */ + u32 m_rtimeAddedToUserList; + ERemoteStoragePublishedFileVisibility m_eVisibility; /* visibility */ + int m_bBanned; /* whether the file was banned */ + + /* developer has specifically flagged this item as accepted in the Workshop*/ + int m_bAcceptedForUse; + + /* whether the list of tags was too long to be returned in the provided + * buffer */ + int m_bTagsTruncated; + + /* comma separated list of all tags associated with this file */ + char m_rgchTags[k_cchTagListMax]; + + /* file/url information */ + UGCHandle_t m_hFile; /* The handle of the primary file */ + UGCHandle_t m_hPreviewFile; /* The handle of the preview file */ + + /* The cloud filename of the primary file */ + char m_pchFileName[k_cchFilenameMax]; + + /* Size of the primary file */ + i32 m_nFileSize; + i32 m_nPreviewFileSize; /* Size of the preview file */ + char m_rgchURL[k_cchPublishedFileURLMax]; /* URL (for a video or a website)*/ + + /* voting information */ + u32 m_unVotesUp; /* number of votes up */ + u32 m_unVotesDown; /* number of votes down */ + float m_flScore; /* calculated score */ + + /* collection details */ + u32 m_unNumChildren; +}; + +/* + * Callback for querying UGC + */ +typedef struct SteamUGCQueryCompleted_t SteamUGCQueryCompleted_t; +struct SteamUGCQueryCompleted_t{ + UGCQueryHandle_t m_handle; + EResult m_eResult; + u32 m_unNumResultsReturned; + u32 m_unTotalMatchingResults; + + /* indicates whether this data was retrieved from the local on-disk cache */ + int m_bCachedData; + + /* If a paging cursor was used, then this will be the next cursor to get the + * next result set. */ + char m_rgchNextCursor[k_cchPublishedFileURLMax]; +}; +enum { k_iSteamUGCQueryCompleted = k_iSteamUGCCallbacks + 31 }; + +/* + * Callback for requesting details on one piece of UGC + */ +typedef struct SteamUGCRequestUGCDetailsResult_t + SteamUGCRequestUGCDetailsResult_t; +struct SteamUGCRequestUGCDetailsResult_t{ + SteamUGCDetails_t m_details; + + /* indicates whether this data was retrieved from the local on-disk cache */ + int m_bCachedData; +}; +enum { k_iSteamUGCRequestUGCDetailsResult = k_iSteamUGCCallbacks + 2 }; + + +/* + * Purpose: result for ISteamUGC::CreateItem() + */ +typedef struct CreateItemResult_t CreateItemResult_t; +struct CreateItemResult_t{ + EResult m_eResult; + + /* new item got this UGC PublishFileID */ + PublishedFileId_t m_nPublishedFileId; + int m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; +enum { k_iCreateItemResult = k_iSteamUGCCallbacks + 3 }; + + +/* + * Purpose: result for ISteamUGC::SubmitItemUpdate() + */ +typedef struct SubmitItemUpdateResult_t SubmitItemUpdateResult_t; +struct SubmitItemUpdateResult_t{ + EResult m_eResult; + int m_bUserNeedsToAcceptWorkshopLegalAgreement; + PublishedFileId_t m_nPublishedFileId; +}; +enum { k_iSubmitItemUpdateResult = k_iSteamUGCCallbacks + 4 }; + + +/* + * Purpose: a Workshop item has been installed or updated + */ +typedef struct ItemInstalled_t ItemInstalled_t; +struct ItemInstalled_t{ + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; +enum { k_iItemInstalled = k_iSteamUGCCallbacks + 5 }; + + +/* + * Purpose: result of DownloadItem(), existing item files can be accessed again + */ +typedef struct DownloadItemResult_t DownloadItemResult_t; +struct DownloadItemResult_t{ + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; +enum { k_iDownloadItemResult = k_iSteamUGCCallbacks + 6 }; + +/* + * Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() + */ +typedef struct UserFavoriteItemsListChanged_t UserFavoriteItemsListChanged_t; +struct UserFavoriteItemsListChanged_t{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + int m_bWasAddRequest; +}; +enum { k_iUserFavoriteItemsListChanged = k_iSteamUGCCallbacks + 7 }; + +/* + * Purpose: The result of a call to SetUserItemVote() + */ +typedef struct SetUserItemVoteResult_t SetUserItemVoteResult_t; +struct SetUserItemVoteResult_t{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + int m_bVoteUp; +}; +enum { k_iSetUserItemVoteResult = k_iSteamUGCCallbacks + 8 }; + +/* + * Purpose: The result of a call to GetUserItemVote() + */ +typedef struct GetUserItemVoteResult_t GetUserItemVoteResult_t; +struct GetUserItemVoteResult_t{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + int m_bVotedUp; + int m_bVotedDown; + int m_bVoteSkipped; +}; +enum { k_iGetUserItemVoteResult = k_iSteamUGCCallbacks + 9 }; + +/* + * Purpose: The result of a call to StartPlaytimeTracking() + */ +typedef struct StartPlaytimeTrackingResult_t StartPlaytimeTrackingResult_t; +struct StartPlaytimeTrackingResult_t{ + EResult m_eResult; +}; +enum { k_iStartPlaytimeTrackingResult = k_iSteamUGCCallbacks + 10 }; + +/* + * Purpose: The result of a call to StopPlaytimeTracking() + */ +typedef struct StopPlaytimeTrackingResult_t StopPlaytimeTrackingResult_t; +struct StopPlaytimeTrackingResult_t{ + EResult m_eResult; +}; +enum { k_iStopPlaytimeTrackingResult = k_iSteamUGCCallbacks + 11 }; + +/* + * Purpose: The result of a call to AddDependency + */ +typedef struct AddUGCDependencyResult_t AddUGCDependencyResult_t; +struct AddUGCDependencyResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; +enum { k_iAddUGCDependecyResult = k_iSteamUGCCallbacks + 12 }; + +/* + * Purpose: The result of a call to RemoveDependency + */ +typedef struct RemoveUGCDependencyResult_t RemoveUGCDependencyResult_t; +struct RemoveUGCDependencyResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; +enum { k_iRemoveUGCDependecyResult = k_iSteamUGCCallbacks + 13 }; + + +/* + * Purpose: The result of a call to AddAppDependency + */ +typedef struct AddAppDependencyResult_t AddAppDependencyResult_t; +struct AddAppDependencyResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nAppID; +}; +enum { k_iAddAppDependencyResult = k_iSteamUGCCallbacks + 14 }; + +/* + * Purpose: The result of a call to RemoveAppDependency + */ +typedef struct RemoveAppDependencyResult_t RemoveAppDependencyResult_t; +struct RemoveAppDependencyResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nAppID; +}; +enum { k_iRemoveAppDependencyResult = k_iSteamUGCCallbacks + 15 }; + +/* + * Purpose: The result of a call to GetAppDependencies. Callback may be called + * multiple times until all app dependencies have been returned. + */ +typedef struct GetAppDependenciesResult_t GetAppDependenciesResult_t; +struct GetAppDependenciesResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_rgAppIDs[32]; + u32 m_nNumAppDependencies; // number returned in this struct + u32 m_nTotalNumAppDependencies; // total found +}; +enum { k_iGetAppDependeniesResult = k_iSteamUGCCallbacks + 16 }; + +/* + * Purpose: The result of a call to DeleteItem + */ +typedef struct DeleteItemResult_t DeleteItemResult_t; +struct DeleteItemResult_t{ + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; +}; +enum { k_iDeleteItemResult = k_iSteamUGCCallbacks + 17 }; + + +/* + * Purpose: signal that the list of subscribed items changed + */ +typedef struct UserSubscribedItemsListChanged_t + UserSubscribedItemsListChanged_t; +struct UserSubscribedItemsListChanged_t{ + AppId_t m_nAppID; +}; +enum { k_iUserSubscribedItemsListChanged = k_iSteamUGCCallbacks + 18 }; + + +/* + * Purpose: Status of the user's acceptable/rejection of the app's specific + * Workshop EULA + */ +typedef struct WorkshopEULAStatus_t WorkshopEULAStatus_t; +struct WorkshopEULAStatus_t{ + EResult m_eResult; + AppId_t m_nAppID; + u32 m_unVersion; + RTime32 m_rtAction; + int m_bAccepted; + int m_bNeedsAction; +}; +enum { k_iWorkshopEULAStatus = k_iSteamUGCCallbacks + 20 }; + +#pragma pack( pop ) + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION016" + +ISteamUGC *SteamAPI_SteamUGC_v016(); +ISteamUGC *SteamAPI_SteamUGC() +{ + return SteamAPI_SteamUGC_v016(); +} +ISteamUGC *SteamAPI_SteamGameServerUGC_v016(); +ISteamUGC *SteamAPI_SteamGameServerUGC() +{ + return SteamAPI_SteamGameServerUGC_v016(); +} +UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( + ISteamUGC *self, AccountID_t unAccountID, EUserUGCList eListType, + EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, + AppId_t nCreatorAppID, AppId_t nConsumerAppID, u32 unPage ); + +UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( + ISteamUGC *self, EUGCQuery eQueryType, + EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, + AppId_t nCreatorAppID, AppId_t nConsumerAppID, u32 unPage ); + +UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( + ISteamUGC *self, EUGCQuery eQueryType, + EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, + AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); + +UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest( + ISteamUGC *self, PublishedFileId_t *pvecPublishedFileID, + u32 unNumPublishedFileIDs ); + +SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest( ISteamUGC* self, + UGCQueryHandle_t handle ); + +int SteamAPI_ISteamUGC_GetQueryUGCResult( + ISteamUGC *self, UGCQueryHandle_t handle, u32 index, + SteamUGCDetails_t *pDetails ); + +u32 SteamAPI_ISteamUGC_GetQueryUGCNumTags( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index ); + +int SteamAPI_ISteamUGC_GetQueryUGCTag( + ISteamUGC* self, UGCQueryHandle_t handle, u32 index, u32 indexTag, + char * pchValue, u32 cchValueSize ); + +int SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, u32 indexTag, char * pchValue, + u32 cchValueSize ); + +int SteamAPI_ISteamUGC_GetQueryUGCPreviewURL( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, char * pchURL, u32 cchURLSize ); + +int SteamAPI_ISteamUGC_GetQueryUGCMetadata( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, char * pchMetadata, + u32 cchMetadatasize ); + +int SteamAPI_ISteamUGC_GetQueryUGCChildren( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, + PublishedFileId_t *pvecPublishedFileID, u32 cMaxEntries ); + +int SteamAPI_ISteamUGC_GetQueryUGCStatistic( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, EItemStatistic eStatType, + u64 *pStatValue ); + +u32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index ); + +int SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, u32 previewIndex, + char *pchURLOrVideoID, u32 cchURLSize, char *pchOriginalFileName, + u32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ); + +u32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index ); + +int SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, u32 keyValueTagIndex, char *pchKey, + u32 cchKeySize, char * pchValue, u32 cchValueSize ); + +int SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, + UGCQueryHandle_t handle, u32 index, const char *pchKey, char *pchValue, + u32 cchValueSize ); + +int SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, + UGCQueryHandle_t handle ); + +int SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, + const char * pTagName ); + +int SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self, + UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups ); + +int SteamAPI_ISteamUGC_AddExcludedTag( ISteamUGC* self, UGCQueryHandle_t handle, + const char * pTagName ); + +int SteamAPI_ISteamUGC_SetReturnOnlyIDs( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnOnlyIDs ); + +int SteamAPI_ISteamUGC_SetReturnKeyValueTags( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnKeyValueTags ); + +int SteamAPI_ISteamUGC_SetReturnLongDescription( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnLongDescription ); + +int SteamAPI_ISteamUGC_SetReturnMetadata( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnMetadata ); + +int SteamAPI_ISteamUGC_SetReturnChildren( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnChildren ); + +int SteamAPI_ISteamUGC_SetReturnAdditionalPreviews( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnAdditionalPreviews ); + +int SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self, + UGCQueryHandle_t handle, int bReturnTotalOnly ); + +int SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self, + UGCQueryHandle_t handle, u32 unDays ); + +int SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self, UGCQueryHandle_t handle, + const char * pchLanguage ); + +int SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self, + UGCQueryHandle_t handle, u32 unMaxAgeSeconds ); + +int SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, + UGCQueryHandle_t handle, const char * pMatchCloudFileName ); + +int SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, + int bMatchAnyTag ); + +int SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, + const char * pSearchText ); + +int SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self, + UGCQueryHandle_t handle, u32 unDays ); + +int SteamAPI_ISteamUGC_SetTimeCreatedDateRange( ISteamUGC* self, + UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); + +int SteamAPI_ISteamUGC_SetTimeUpdatedDateRange( ISteamUGC* self, + UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); + +int SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self, + UGCQueryHandle_t handle, const char * pKey, const char * pValue ); + +SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, u32 unMaxAgeSeconds ); + +SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self, + AppId_t nConsumerAppId, EWorkshopFileType eFileType ); + +UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate( ISteamUGC* self, + AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ); + +int SteamAPI_ISteamUGC_SetItemTitle( ISteamUGC* self, UGCUpdateHandle_t handle, + const char * pchTitle ); + +int SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchDescription ); + +int SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchLanguage ); + +int SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchMetaData ); + +int SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self, + UGCUpdateHandle_t handle, + ERemoteStoragePublishedFileVisibility eVisibility ); + +int SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, + UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags ); + +int SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pszContentFolder ); + +int SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pszPreviewFile ); + +int SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self, + UGCUpdateHandle_t handle, int bAllowLegacyUpload ); + +int SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags( ISteamUGC* self, + UGCUpdateHandle_t handle ); + +int SteamAPI_ISteamUGC_RemoveItemKeyValueTags( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchKey ); + +int SteamAPI_ISteamUGC_AddItemKeyValueTag( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue ); + +int SteamAPI_ISteamUGC_AddItemPreviewFile( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pszPreviewFile, + EItemPreviewType type ); + +int SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pszVideoID ); + +int SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self, + UGCUpdateHandle_t handle, u32 index, const char * pszPreviewFile ); + +int SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, + UGCUpdateHandle_t handle, u32 index, const char * pszVideoID ); + +int SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, + UGCUpdateHandle_t handle, u32 index ); + +SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, + UGCUpdateHandle_t handle, const char * pchChangeNote ); + +EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, + UGCUpdateHandle_t handle, u64 * punBytesProcessed, u64 * punBytesTotal ); + +SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, int bVoteUp ); + +SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* self, + AppId_t nAppId, PublishedFileId_t nPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self, + AppId_t nAppId, PublishedFileId_t nPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +u32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self ); + +u32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, + PublishedFileId_t * pvecPublishedFileID, u32 cMaxEntries ); + +u32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +int SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, u64 * punSizeOnDisk, char * pchFolder, + u32 cchFolderSize, u32 * punTimeStamp ); + +int SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, u64 * punBytesDownloaded, + u64 * punBytesTotal ); + +int SteamAPI_ISteamUGC_DownloadItem( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, int bHighPriority ); + +int SteamAPI_ISteamUGC_BInitWorkshopForGameServer( ISteamUGC* self, + DepotId_t unWorkshopDepotID, const char * pszFolder ); + +void SteamAPI_ISteamUGC_SuspendDownloads( ISteamUGC* self, int bSuspend ); + +SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking( ISteamUGC* self, + PublishedFileId_t * pvecPublishedFileID, u32 unNumPublishedFileIDs ); + +SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking( ISteamUGC* self, + PublishedFileId_t * pvecPublishedFileID, u32 unNumPublishedFileIDs ); + +SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems( + ISteamUGC* self ); + +SteamAPICall_t SteamAPI_ISteamUGC_AddDependency( ISteamUGC* self, + PublishedFileId_t nParentPublishedFileID, + PublishedFileId_t nChildPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency( ISteamUGC* self, + PublishedFileId_t nParentPublishedFileID, + PublishedFileId_t nChildPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, AppId_t nAppID ); + +SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self, + PublishedFileId_t nPublishedFileID, AppId_t nAppID ); + +SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, + PublishedFileId_t nPublishedFileID ); + +int SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); + +SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); + +#endif /* VG_STEAM_UGC_H */