--- /dev/null
+#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 */