mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2025-03-28 14:56:24 +01:00
Merge pull request #190 from universal963/patch-sdk162
Update to SDK 1.62
This commit is contained in:
commit
d144082e6a
21 changed files with 1202 additions and 148 deletions
|
@ -52,6 +52,7 @@ extern const std::unordered_set<std::string> client_known_interfaces = {
|
|||
"SteamFriends015",
|
||||
"SteamFriends016",
|
||||
"SteamFriends017",
|
||||
"SteamFriends018",
|
||||
"SteamGameCoordinator001",
|
||||
"SteamGameServer002",
|
||||
"SteamGameServer003",
|
||||
|
@ -132,6 +133,7 @@ extern const std::unordered_set<std::string> client_known_interfaces = {
|
|||
"SteamParties002",
|
||||
"STEAMREMOTEPLAY_INTERFACE_VERSION001",
|
||||
"STEAMREMOTEPLAY_INTERFACE_VERSION002",
|
||||
"STEAMREMOTEPLAY_INTERFACE_VERSION003",
|
||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION001",
|
||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION002",
|
||||
"STEAMREMOTESTORAGE_INTERFACE_VERSION003",
|
||||
|
@ -178,6 +180,7 @@ extern const std::unordered_set<std::string> client_known_interfaces = {
|
|||
"STEAMUGC_INTERFACE_VERSION018",
|
||||
"STEAMUGC_INTERFACE_VERSION019",
|
||||
"STEAMUGC_INTERFACE_VERSION020",
|
||||
"STEAMUGC_INTERFACE_VERSION021",
|
||||
"STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001",
|
||||
"SteamUser004",
|
||||
"SteamUser005",
|
||||
|
|
|
@ -44,6 +44,7 @@ public ISteamFriends013,
|
|||
public ISteamFriends014,
|
||||
public ISteamFriends015,
|
||||
public ISteamFriends016,
|
||||
public ISteamFriends017,
|
||||
public ISteamFriends
|
||||
{
|
||||
class Settings *settings{};
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
class Steam_RemotePlay :
|
||||
public ISteamRemotePlay001,
|
||||
public ISteamRemotePlay002,
|
||||
public ISteamRemotePlay
|
||||
{
|
||||
class Settings *settings{};
|
||||
|
@ -30,6 +31,9 @@ public ISteamRemotePlay
|
|||
class SteamCallBacks *callbacks{};
|
||||
class RunEveryRunCB *run_every_runcb{};
|
||||
|
||||
bool direct_input{};
|
||||
RemotePlayCursorID_t cursor_handle{};
|
||||
|
||||
static void steam_callback(void *object, Common_Message *msg);
|
||||
static void steam_run_every_runcb(void *object);
|
||||
|
||||
|
@ -59,10 +63,55 @@ public:
|
|||
|
||||
bool BStartRemotePlayTogether( bool bShowOverlay );
|
||||
|
||||
bool ShowRemotePlayTogetherUI();
|
||||
|
||||
// Invite a friend to Remote Play Together
|
||||
// This returns false if the invite can't be sent
|
||||
bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend );
|
||||
|
||||
// Make mouse and keyboard input for Remote Play Together sessions available via GetInput() instead of being merged with local input
|
||||
bool BEnableRemotePlayTogetherDirectInput();
|
||||
|
||||
// Merge Remote Play Together mouse and keyboard input with local input
|
||||
void DisableRemotePlayTogetherDirectInput();
|
||||
|
||||
// Get input events from Remote Play Together sessions
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// pInput is an array of input events that will be filled in by this function, up to unMaxEvents.
|
||||
// This returns the number of events copied to pInput, or the number of events available if pInput is nullptr.
|
||||
uint32 GetInput( RemotePlayInput_t *pInput, uint32 unMaxEvents );
|
||||
|
||||
// Set the mouse cursor visibility for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
void SetMouseVisibility( RemotePlaySessionID_t unSessionID, bool bVisible );
|
||||
|
||||
// Set the mouse cursor position for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// This is used to warp the cursor to a specific location and isn't needed during normal event processing.
|
||||
//
|
||||
// The position is normalized relative to the window, where 0,0 is the upper left, and 1,1 is the lower right.
|
||||
void SetMousePosition( RemotePlaySessionID_t unSessionID, float flNormalizedX, float flNormalizedY );
|
||||
|
||||
// Create a cursor that can be used with SetMouseCursor()
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// Parameters:
|
||||
// nWidth - The width of the cursor, in pixels
|
||||
// nHeight - The height of the cursor, in pixels
|
||||
// nHotX - The X coordinate of the cursor hot spot in pixels, offset from the left of the cursor
|
||||
// nHotY - The Y coordinate of the cursor hot spot in pixels, offset from the top of the cursor
|
||||
// pBGRA - A pointer to the cursor pixels, with the color channels in red, green, blue, alpha order
|
||||
// nPitch - The distance between pixel rows in bytes, defaults to nWidth * 4
|
||||
RemotePlayCursorID_t CreateMouseCursor( int nWidth, int nHeight, int nHotX, int nHotY, const void *pBGRA, int nPitch );
|
||||
|
||||
// Set the mouse cursor for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// The cursor ID is a value returned by CreateMouseCursor()
|
||||
void SetMouseCursor( RemotePlaySessionID_t unSessionID, RemotePlayCursorID_t unCursorID );
|
||||
|
||||
void RunCallbacks();
|
||||
|
||||
void Callback(Common_Message *msg);
|
||||
|
|
|
@ -63,6 +63,7 @@ public ISteamUGC016,
|
|||
public ISteamUGC017,
|
||||
public ISteamUGC018,
|
||||
public ISteamUGC019,
|
||||
public ISteamUGC020,
|
||||
public ISteamUGC
|
||||
{
|
||||
public:
|
||||
|
@ -83,6 +84,7 @@ private:
|
|||
UGCQueryHandle_t handle = 50; // just makes debugging easier, any initial val is fine, even 1
|
||||
std::vector<struct UGC_query> ugc_queries{};
|
||||
std::set<PublishedFileId_t> favorites{};
|
||||
std::set<PublishedFileId_t> subscribed_disabled{};
|
||||
|
||||
UGCQueryHandle_t new_ugc_query(
|
||||
EQueryType query_type,
|
||||
|
@ -155,7 +157,7 @@ public:
|
|||
uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index );
|
||||
|
||||
|
||||
bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType );
|
||||
bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchOriginalFileNameSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType );
|
||||
|
||||
bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char *pchURLOrVideoID, uint32 cchURLSize, bool *hz );
|
||||
|
||||
|
@ -338,9 +340,11 @@ public:
|
|||
SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID );
|
||||
// unsubscribe from this item, will be uninstalled after game quits
|
||||
|
||||
uint32 GetNumSubscribedItems( bool bIncludeLocallyDisabled );
|
||||
uint32 GetNumSubscribedItems();
|
||||
// number of subscribed items
|
||||
|
||||
uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries, bool bIncludeLocallyDisabled );
|
||||
uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries );
|
||||
// all subscribed item PublishFileIDs
|
||||
|
||||
|
@ -425,6 +429,12 @@ public:
|
|||
// Return the user's community content descriptor preferences
|
||||
uint32 GetUserContentDescriptorPreferences( EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries );
|
||||
|
||||
// Sets whether the item should be disabled locally or not. This means that it will not be returned in GetSubscribedItems() by default.
|
||||
bool SetItemsDisabledLocally( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs, bool bDisabledLocally );
|
||||
|
||||
// Set the local load order for these items. If there are any items not in the given list, they will sort by the time subscribed.
|
||||
bool SetSubscriptionsLoadOrder( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs );
|
||||
|
||||
};
|
||||
|
||||
#endif // __INCLUDED_STEAM_UGC_H__
|
||||
|
|
110
dll/flat.cpp
110
dll/flat.cpp
|
@ -402,6 +402,11 @@ STEAMAPI_API steam_bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISte
|
|||
return (get_steam_client()->steam_user)->BSetDurationControlOnlineState(eNewState);
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamFriends *SteamAPI_SteamFriends_v018()
|
||||
{
|
||||
return get_steam_client()->GetISteamFriends(flat_hsteamuser(), flat_hsteampipe(), "SteamFriends018");
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamFriends *SteamAPI_SteamFriends_v017()
|
||||
{
|
||||
return get_steam_client()->GetISteamFriends(flat_hsteamuser(), flat_hsteampipe(), "SteamFriends017");
|
||||
|
@ -412,6 +417,7 @@ STEAMAPI_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends*
|
|||
return (get_steam_client()->steam_friends)->GetPersonaName();
|
||||
}
|
||||
|
||||
// removed in sdk 1.62
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName )
|
||||
{
|
||||
return (get_steam_client()->steam_friends)->SetPersonaName(pchPersonaName);
|
||||
|
@ -617,6 +623,7 @@ STEAMAPI_API uint64_steamid SteamAPI_ISteamFriends_GetClanOfficerByIndex( ISteam
|
|||
return (get_steam_client()->steam_friends)->GetClanOfficerByIndex(steamIDClan, iOfficer).ConvertToUint64();
|
||||
}
|
||||
|
||||
// removed in sdk 1.62
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self )
|
||||
{
|
||||
return (get_steam_client()->steam_friends)->GetUserRestrictions();
|
||||
|
@ -3585,6 +3592,11 @@ STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v020()
|
|||
return get_steam_client()->GetISteamUGC(flat_hsteamuser(), flat_hsteampipe(), "STEAMUGC_INTERFACE_VERSION020");
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v021()
|
||||
{
|
||||
return get_steam_client()->GetISteamUGC(flat_hsteamuser(), flat_hsteampipe(), "STEAMUGC_INTERFACE_VERSION021");
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v014()
|
||||
{
|
||||
return get_steam_client()->GetISteamUGC(flat_gs_hsteamuser(), flat_gs_hsteampipe(), "STEAMUGC_INTERFACE_VERSION014");
|
||||
|
@ -3615,6 +3627,11 @@ STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v020()
|
|||
return get_steam_client()->GetISteamUGC(flat_gs_hsteamuser(), flat_gs_hsteampipe(), "STEAMUGC_INTERFACE_VERSION020");
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v021()
|
||||
{
|
||||
return get_steam_client()->GetISteamUGC(flat_gs_hsteamuser(), flat_gs_hsteampipe(), "STEAMUGC_INTERFACE_VERSION021");
|
||||
}
|
||||
|
||||
STEAMAPI_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage )
|
||||
{
|
||||
long long client_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_ugc);
|
||||
|
@ -4527,7 +4544,7 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self,
|
|||
return (ptr)->UnsubscribeItem(nPublishedFileID);
|
||||
}
|
||||
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self )
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self, bool bIncludeLocallyDisabled )
|
||||
{
|
||||
long long client_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_ugc);
|
||||
long long server_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_gameserver_ugc);
|
||||
|
@ -4536,10 +4553,10 @@ STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self )
|
|||
ptr = get_steam_client()->steam_ugc;
|
||||
}
|
||||
|
||||
return (ptr)->GetNumSubscribedItems();
|
||||
return (ptr)->GetNumSubscribedItems(bIncludeLocallyDisabled);
|
||||
}
|
||||
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries )
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries, bool bIncludeLocallyDisabled )
|
||||
{
|
||||
long long client_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_ugc);
|
||||
long long server_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_gameserver_ugc);
|
||||
|
@ -4548,7 +4565,7 @@ STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, Publ
|
|||
ptr = get_steam_client()->steam_ugc;
|
||||
}
|
||||
|
||||
return (ptr)->GetSubscribedItems(pvecPublishedFileID, cMaxEntries);
|
||||
return (ptr)->GetSubscribedItems(pvecPublishedFileID, cMaxEntries, bIncludeLocallyDisabled);
|
||||
}
|
||||
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, PublishedFileId_t nPublishedFileID )
|
||||
|
@ -4767,6 +4784,29 @@ STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences( ISte
|
|||
return (ptr)->GetUserContentDescriptorPreferences(pvecDescriptors, cMaxEntries);
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_SetItemsDisabledLocally( ISteamUGC *self, PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs, bool bDisabledLocally )
|
||||
{
|
||||
long long client_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_ugc);
|
||||
long long server_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_gameserver_ugc);
|
||||
auto ptr = get_steam_client()->steam_gameserver_ugc;
|
||||
if (client_vftable_distance >= 0 && (server_vftable_distance < 0 || client_vftable_distance < server_vftable_distance)) {
|
||||
ptr = get_steam_client()->steam_ugc;
|
||||
}
|
||||
|
||||
return (ptr)->SetItemsDisabledLocally(pvecPublishedFileIDs, unNumPublishedFileIDs, bDisabledLocally);
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_SetSubscriptionsLoadOrder( ISteamUGC *self, PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs )
|
||||
{
|
||||
long long client_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_ugc);
|
||||
long long server_vftable_distance = ((char *)self - (char*)get_steam_client()->steam_gameserver_ugc);
|
||||
auto ptr = get_steam_client()->steam_gameserver_ugc;
|
||||
if (client_vftable_distance >= 0 && (server_vftable_distance < 0 || client_vftable_distance < server_vftable_distance)) {
|
||||
ptr = get_steam_client()->steam_ugc;
|
||||
}
|
||||
|
||||
return (ptr)->SetSubscriptionsLoadOrder(pvecPublishedFileIDs, unNumPublishedFileIDs);
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamAppList *SteamAPI_SteamAppList_v001()
|
||||
{
|
||||
|
@ -5742,44 +5782,90 @@ STEAMAPI_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v002()
|
|||
return get_steam_client()->GetISteamRemotePlay(flat_hsteamuser(), flat_hsteampipe(), "STEAMREMOTEPLAY_INTERFACE_VERSION002");
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v003()
|
||||
{
|
||||
return get_steam_client()->GetISteamRemotePlay(flat_hsteamuser(), flat_hsteampipe(), "STEAMREMOTEPLAY_INTERFACE_VERSION003");
|
||||
}
|
||||
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self )
|
||||
{
|
||||
return self->GetSessionCount();
|
||||
return (get_steam_client()->steam_remoteplay)->GetSessionCount();
|
||||
}
|
||||
|
||||
STEAMAPI_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex )
|
||||
{
|
||||
return self->GetSessionID(iSessionIndex);
|
||||
return (get_steam_client()->steam_remoteplay)->GetSessionID(iSessionIndex);
|
||||
}
|
||||
|
||||
STEAMAPI_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID )
|
||||
{
|
||||
return self->GetSessionSteamID(unSessionID).ConvertToUint64();
|
||||
return (get_steam_client()->steam_remoteplay)->GetSessionSteamID(unSessionID).ConvertToUint64();
|
||||
}
|
||||
|
||||
STEAMAPI_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID )
|
||||
{
|
||||
return self->GetSessionClientName(unSessionID);
|
||||
return (get_steam_client()->steam_remoteplay)->GetSessionClientName(unSessionID);
|
||||
}
|
||||
|
||||
STEAMAPI_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID )
|
||||
{
|
||||
return self->GetSessionClientFormFactor(unSessionID);
|
||||
return (get_steam_client()->steam_remoteplay)->GetSessionClientFormFactor(unSessionID);
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY )
|
||||
{
|
||||
return self->BGetSessionClientResolution(unSessionID, pnResolutionX, pnResolutionY);
|
||||
return (get_steam_client()->steam_remoteplay)->BGetSessionClientResolution(unSessionID, pnResolutionX, pnResolutionY);
|
||||
}
|
||||
|
||||
// removed in sdk 1.62
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether( ISteamRemotePlay* self, bool bShowOverlay )
|
||||
{
|
||||
return self->BStartRemotePlayTogether(bShowOverlay);
|
||||
return (get_steam_client()->steam_remoteplay)->BStartRemotePlayTogether(bShowOverlay);
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_ShowRemotePlayTogetherUI( ISteamRemotePlay *self )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->ShowRemotePlayTogetherUI();
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend )
|
||||
{
|
||||
return self->BSendRemotePlayTogetherInvite(steamIDFriend);
|
||||
return (get_steam_client()->steam_remoteplay)->BSendRemotePlayTogetherInvite(steamIDFriend);
|
||||
}
|
||||
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BEnableRemotePlayTogetherDirectInput( ISteamRemotePlay *self )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->BEnableRemotePlayTogetherDirectInput();
|
||||
}
|
||||
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_DisableRemotePlayTogetherDirectInput( ISteamRemotePlay *self )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->DisableRemotePlayTogetherDirectInput();
|
||||
}
|
||||
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamRemotePlay_GetInput( ISteamRemotePlay *self, RemotePlayInput_t *pInput, uint32 unMaxEvents )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->GetInput(pInput, unMaxEvents);
|
||||
}
|
||||
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMouseVisibility( ISteamRemotePlay *self, RemotePlaySessionID_t unSessionID, bool bVisible )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->SetMouseVisibility(unSessionID, bVisible);
|
||||
}
|
||||
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMousePosition( ISteamRemotePlay *self, RemotePlaySessionID_t unSessionID, float flNormalizedX, float flNormalizedY )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->SetMousePosition(unSessionID, flNormalizedX, flNormalizedY);
|
||||
}
|
||||
|
||||
STEAMAPI_API RemotePlayCursorID_t SteamAPI_ISteamRemotePlay_CreateMouseCursor( ISteamRemotePlay *self, int nWidth, int nHeight, int nHotX, int nHotY, const void *pBGRA, int nPitch )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->CreateMouseCursor(nWidth, nHeight, nHotX, nHotY, pBGRA, nPitch);
|
||||
}
|
||||
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMouseCursor( ISteamRemotePlay *self, RemotePlaySessionID_t unSessionID, RemotePlayCursorID_t unCursorID )
|
||||
{
|
||||
return (get_steam_client()->steam_remoteplay)->SetMouseCursor(unSessionID, unCursorID);
|
||||
}
|
||||
|
||||
STEAMAPI_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_v002()
|
||||
|
|
|
@ -226,6 +226,8 @@ ISteamFriends *Steam_Client::GetISteamFriends( HSteamUser hSteamUser, HSteamPipe
|
|||
return reinterpret_cast<ISteamFriends *>(static_cast<ISteamFriends015 *>(steam_friends));
|
||||
} else if (strcmp(pchVersion, "SteamFriends016") == 0) {
|
||||
return reinterpret_cast<ISteamFriends *>(static_cast<ISteamFriends016 *>(steam_friends)); // SteamFriends016 Not found in public Archive, must be between 1.42-1.43
|
||||
} else if (strcmp(pchVersion, "SteamFriends017") == 0) {
|
||||
return reinterpret_cast<ISteamFriends *>(static_cast<ISteamFriends017 *>(steam_friends));
|
||||
} else if (strcmp(pchVersion, STEAMFRIENDS_INTERFACE_VERSION) == 0) {
|
||||
return reinterpret_cast<ISteamFriends *>(static_cast<ISteamFriends *>(steam_friends));
|
||||
}
|
||||
|
@ -806,6 +808,8 @@ ISteamUGC *Steam_Client::GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamP
|
|||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC018 *>(steam_ugc_temp));
|
||||
} else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION019") == 0) {
|
||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC019 *>(steam_ugc_temp)); // not found in public sdk, based on reversing
|
||||
} else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION020") == 0) {
|
||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC020 *>(steam_ugc_temp));
|
||||
} else if (strcmp(pchVersion, STEAMUGC_INTERFACE_VERSION) == 0) {
|
||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC *>(steam_ugc_temp));
|
||||
}
|
||||
|
@ -1000,6 +1004,8 @@ ISteamRemotePlay *Steam_Client::GetISteamRemotePlay( HSteamUser hSteamUser, HSte
|
|||
|
||||
if (strcmp(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION001") == 0) {
|
||||
return reinterpret_cast<ISteamRemotePlay *>(static_cast<ISteamRemotePlay001 *>(steam_remoteplay));
|
||||
} else if (strcmp(pchVersion, "STEAMREMOTEPLAY_INTERFACE_VERSION002") == 0) {
|
||||
return reinterpret_cast<ISteamRemotePlay *>(static_cast<ISteamRemotePlay002 *>(steam_remoteplay));
|
||||
} else if (strcmp(pchVersion, STEAMREMOTEPLAY_INTERFACE_VERSION) == 0) {
|
||||
return reinterpret_cast<ISteamRemotePlay *>(static_cast<ISteamRemotePlay *>(steam_remoteplay));
|
||||
}
|
||||
|
|
|
@ -110,6 +110,13 @@ bool Steam_RemotePlay::BStartRemotePlayTogether( bool bShowOverlay )
|
|||
return false;
|
||||
}
|
||||
|
||||
bool Steam_RemotePlay::ShowRemotePlayTogetherUI()
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Invite a friend to Remote Play Together
|
||||
// This returns false if the invite can't be sent
|
||||
bool Steam_RemotePlay::BSendRemotePlayTogetherInvite( CSteamID steamIDFriend )
|
||||
|
@ -119,6 +126,60 @@ bool Steam_RemotePlay::BSendRemotePlayTogetherInvite( CSteamID steamIDFriend )
|
|||
return false;
|
||||
}
|
||||
|
||||
bool Steam_RemotePlay::BEnableRemotePlayTogetherDirectInput()
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
direct_input = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Steam_RemotePlay::DisableRemotePlayTogetherDirectInput()
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
direct_input = false;
|
||||
}
|
||||
|
||||
uint32 Steam_RemotePlay::GetInput( RemotePlayInput_t *pInput, uint32 unMaxEvents )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Steam_RemotePlay::SetMouseVisibility( RemotePlaySessionID_t unSessionID, bool bVisible )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
}
|
||||
|
||||
void Steam_RemotePlay::SetMousePosition( RemotePlaySessionID_t unSessionID, float flNormalizedX, float flNormalizedY )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
}
|
||||
|
||||
RemotePlayCursorID_t Steam_RemotePlay::CreateMouseCursor( int nWidth, int nHeight, int nHotX, int nHotY, const void *pBGRA, int nPitch )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
if (!direct_input)
|
||||
return 0;
|
||||
|
||||
++cursor_handle;
|
||||
if (cursor_handle == 0)
|
||||
++cursor_handle;
|
||||
|
||||
return cursor_handle;
|
||||
}
|
||||
|
||||
void Steam_RemotePlay::SetMouseCursor( RemotePlaySessionID_t unSessionID, RemotePlayCursorID_t unCursorID )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
}
|
||||
|
||||
void Steam_RemotePlay::RunCallbacks()
|
||||
{
|
||||
|
||||
|
|
|
@ -592,7 +592,7 @@ uint32 Steam_UGC::GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uin
|
|||
}
|
||||
|
||||
|
||||
bool Steam_UGC::GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType )
|
||||
bool Steam_UGC::GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchOriginalFileNameSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
|
@ -1402,26 +1402,51 @@ SteamAPICall_t Steam_UGC::UnsubscribeItem( PublishedFileId_t nPublishedFileID )
|
|||
}
|
||||
// unsubscribe from this item, will be uninstalled after game quits
|
||||
|
||||
uint32 Steam_UGC::GetNumSubscribedItems( bool bIncludeLocallyDisabled )
|
||||
{
|
||||
PRINT_DEBUG(" %d", (int)bIncludeLocallyDisabled);
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
|
||||
std::set<PublishedFileId_t> subscribed_enabled = std::set<PublishedFileId_t>(ugc_bridge->subbed_mods_itr_begin(), ugc_bridge->subbed_mods_itr_end());
|
||||
if (!bIncludeLocallyDisabled) {
|
||||
for (auto &sd : subscribed_disabled) {
|
||||
subscribed_enabled.erase(sd);
|
||||
}
|
||||
}
|
||||
|
||||
size_t count = subscribed_enabled.size();
|
||||
PRINT_DEBUG(" Steam_UGC::GetNumSubscribedItems = %zu", count);
|
||||
return (uint32)count;
|
||||
}
|
||||
|
||||
uint32 Steam_UGC::GetNumSubscribedItems()
|
||||
{
|
||||
PRINT_DEBUG_ENTRY();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
|
||||
PRINT_DEBUG(" Steam_UGC::GetNumSubscribedItems = %zu", ugc_bridge->subbed_mods_count());
|
||||
return (uint32)ugc_bridge->subbed_mods_count();
|
||||
return GetNumSubscribedItems(false);
|
||||
}
|
||||
// number of subscribed items
|
||||
|
||||
uint32 Steam_UGC::GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries )
|
||||
uint32 Steam_UGC::GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries, bool bIncludeLocallyDisabled )
|
||||
{
|
||||
PRINT_DEBUG("%p %u", pvecPublishedFileID, cMaxEntries);
|
||||
PRINT_DEBUG("%p %u %d", pvecPublishedFileID, cMaxEntries, (int)bIncludeLocallyDisabled);
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
if ((size_t)cMaxEntries > ugc_bridge->subbed_mods_count()) {
|
||||
cMaxEntries = (uint32)ugc_bridge->subbed_mods_count();
|
||||
|
||||
std::set<PublishedFileId_t> subscribed_enabled = std::set<PublishedFileId_t>(ugc_bridge->subbed_mods_itr_begin(), ugc_bridge->subbed_mods_itr_end());
|
||||
if (!bIncludeLocallyDisabled) {
|
||||
for (auto &sd : subscribed_disabled) {
|
||||
subscribed_enabled.erase(sd);
|
||||
}
|
||||
}
|
||||
|
||||
std::copy_n(ugc_bridge->subbed_mods_itr_begin(), cMaxEntries, pvecPublishedFileID);
|
||||
return cMaxEntries;
|
||||
size_t count = std::min<size_t>(subscribed_enabled.size(), cMaxEntries);
|
||||
std::copy_n(subscribed_enabled.begin(), count, pvecPublishedFileID);
|
||||
return (uint32)count;
|
||||
}
|
||||
|
||||
uint32 Steam_UGC::GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries )
|
||||
{
|
||||
PRINT_DEBUG("old %p %u", pvecPublishedFileID, cMaxEntries);
|
||||
return GetSubscribedItems(pvecPublishedFileID, cMaxEntries, false);
|
||||
}
|
||||
// all subscribed item PublishFileIDs
|
||||
|
||||
|
@ -1724,3 +1749,48 @@ uint32 Steam_UGC::GetUserContentDescriptorPreferences( EUGCContentDescriptorID *
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Sets whether the item should be disabled locally or not. This means that it will not be returned in GetSubscribedItems() by default.
|
||||
bool Steam_UGC::SetItemsDisabledLocally( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs, bool bDisabledLocally )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
// TODO: save results to disk because real steam can remember them even when restarting the app
|
||||
if (!unNumPublishedFileIDs)
|
||||
return false;
|
||||
if (!pvecPublishedFileIDs)
|
||||
return false; // real steam crashes the app
|
||||
|
||||
bool modified = false;
|
||||
std::set<PublishedFileId_t> all_subscribed = std::set<PublishedFileId_t>(ugc_bridge->subbed_mods_itr_begin(), ugc_bridge->subbed_mods_itr_end());
|
||||
|
||||
for (uint32 i = 0; i < unNumPublishedFileIDs; ++i) {
|
||||
PublishedFileId_t id = pvecPublishedFileIDs[i];
|
||||
|
||||
if (!all_subscribed.count(id))
|
||||
continue;
|
||||
|
||||
if (bDisabledLocally) {
|
||||
if (subscribed_disabled.insert(id).second)
|
||||
modified = true;
|
||||
}
|
||||
else {
|
||||
if (subscribed_disabled.erase(id))
|
||||
modified = true;
|
||||
}
|
||||
}
|
||||
|
||||
return modified;
|
||||
}
|
||||
|
||||
// Set the local load order for these items. If there are any items not in the given list, they will sort by the time subscribed.
|
||||
bool Steam_UGC::SetSubscriptionsLoadOrder( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs )
|
||||
{
|
||||
PRINT_DEBUG_TODO();
|
||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||
// TODO
|
||||
if (!unNumPublishedFileIDs)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public:
|
|||
|
||||
// Checks if the user is subscribed to the current app through a free weekend
|
||||
// This function will return false for users who have a retail or other type of license
|
||||
// Before using, please ask your Valve technical contact how to package and secure your free weekened
|
||||
// Before using, please ask your Valve technical contact how to package and secure your free weekend
|
||||
virtual bool BIsSubscribedFromFreeWeekend() = 0;
|
||||
|
||||
// Returns the number of DLC pieces for the running app
|
||||
|
|
|
@ -103,12 +103,10 @@ struct FriendGameInfo_t
|
|||
};
|
||||
#pragma pack( pop )
|
||||
|
||||
|
||||
// special values for FriendGameInfo_t::m_usQueryPort
|
||||
const uint16 k_usFriendGameInfoQueryPort_NotInitialized = 0xFFFF; // We haven't asked the GS for this query port's actual value yet. Was #define QUERY_PORT_NOT_INITIALIZED in older versions of Steamworks SDK.
|
||||
const uint16 k_usFriendGameInfoQueryPort_Error = 0xFFFE; // We were unable to get the query port for this server. Was #define QUERY_PORT_ERROR in older versions of Steamworks SDK.
|
||||
|
||||
|
||||
// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16.
|
||||
// The UTF-8 version has to be very generous to accomodate characters that get large when encoded
|
||||
// in UTF-8.
|
||||
|
@ -215,16 +213,6 @@ public:
|
|||
// off; it will eventually be free'd or re-allocated
|
||||
virtual const char *GetPersonaName() = 0;
|
||||
|
||||
// Sets the player name, stores it on the server and publishes the changes to all friends who are online.
|
||||
// Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.
|
||||
//
|
||||
// The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.
|
||||
//
|
||||
// If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted
|
||||
// to change the name back, in addition to the SetPersonaNameResponse_t callback.
|
||||
STEAM_CALL_RESULT( SetPersonaNameResponse_t )
|
||||
virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0;
|
||||
|
||||
// gets the status of the current user
|
||||
virtual EPersonaState GetPersonaState() = 0;
|
||||
|
||||
|
@ -370,10 +358,6 @@ public:
|
|||
virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0;
|
||||
// returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount)
|
||||
virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0;
|
||||
// if current user is chat restricted, he can't send or receive any text/voice chat messages.
|
||||
// the user can't see custom avatars. But the user can be online and send/recv game invites.
|
||||
// a chat restricted user can't add friends or join any groups.
|
||||
virtual uint32 GetUserRestrictions() = 0;
|
||||
|
||||
// Rich Presence data is automatically shared between friends who are in the same game
|
||||
// Each user has a set of Key/Value pairs
|
||||
|
@ -475,7 +459,7 @@ public:
|
|||
virtual uint32 GetProfileItemPropertyUint( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends017"
|
||||
#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends018"
|
||||
|
||||
#ifndef STEAM_API_EXPORTS
|
||||
// Global interface accessor
|
||||
|
@ -562,10 +546,6 @@ struct GameLobbyJoinRequested_t
|
|||
CSteamID m_steamIDLobby;
|
||||
|
||||
// The friend they did the join via (will be invalid if not directly via a friend)
|
||||
//
|
||||
// On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but
|
||||
// the account type will be console user so you can tell at least that this was from a PSN friend
|
||||
// rather than a Steam friend.
|
||||
CSteamID m_steamIDFriend;
|
||||
};
|
||||
|
||||
|
|
284
sdk/steam/isteamfriends017.h
Normal file
284
sdk/steam/isteamfriends017.h
Normal file
|
@ -0,0 +1,284 @@
|
|||
|
||||
#ifndef ISTEAMFRIENDS017_H
|
||||
#define ISTEAMFRIENDS017_H
|
||||
#ifdef STEAM_WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: interface to accessing information about individual users,
|
||||
// that can be a friend, in a group, on a game server or in a lobby with the local user
|
||||
//-----------------------------------------------------------------------------
|
||||
class ISteamFriends017
|
||||
{
|
||||
public:
|
||||
// returns the local players name - guaranteed to not be NULL.
|
||||
// this is the same name as on the users community profile page
|
||||
// this is stored in UTF-8 format
|
||||
// like all the other interface functions that return a char *, it's important that this pointer is not saved
|
||||
// off; it will eventually be free'd or re-allocated
|
||||
virtual const char *GetPersonaName() = 0;
|
||||
|
||||
// Sets the player name, stores it on the server and publishes the changes to all friends who are online.
|
||||
// Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.
|
||||
//
|
||||
// The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.
|
||||
//
|
||||
// If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted
|
||||
// to change the name back, in addition to the SetPersonaNameResponse_t callback.
|
||||
STEAM_CALL_RESULT( SetPersonaNameResponse_t )
|
||||
virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0;
|
||||
|
||||
// gets the status of the current user
|
||||
virtual EPersonaState GetPersonaState() = 0;
|
||||
|
||||
// friend iteration
|
||||
// takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria
|
||||
// then GetFriendByIndex() can then be used to return the id's of each of those users
|
||||
virtual int GetFriendCount( int iFriendFlags ) = 0;
|
||||
|
||||
// returns the steamID of a user
|
||||
// iFriend is a index of range [0, GetFriendCount())
|
||||
// iFriendsFlags must be the same value as used in GetFriendCount()
|
||||
// the returned CSteamID can then be used by all the functions below to access details about the user
|
||||
virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0;
|
||||
|
||||
// returns a relationship to a user
|
||||
virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// returns the current status of the specified user
|
||||
// this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user
|
||||
virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// returns the name another user - guaranteed to not be NULL.
|
||||
// same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user
|
||||
// note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously
|
||||
//
|
||||
virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details
|
||||
virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, STEAM_OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0;
|
||||
// accesses old friends names - returns an empty string when their are no more items in the history
|
||||
virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0;
|
||||
// friends steam level
|
||||
virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player.
|
||||
// DEPRECATED: GetPersonaName follows the Steam nickname preferences, so apps shouldn't need to care about nicknames explicitly.
|
||||
virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0;
|
||||
|
||||
// friend grouping (tag) apis
|
||||
// returns the number of friends groups
|
||||
virtual int GetFriendsGroupCount() = 0;
|
||||
// returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid)
|
||||
virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0;
|
||||
// returns the name for the given friends group (NULL in the case of invalid friends group IDs)
|
||||
virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0;
|
||||
// returns the number of members in a given friends group
|
||||
virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0;
|
||||
// gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid
|
||||
virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, STEAM_OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0;
|
||||
|
||||
// returns true if the specified user meets any of the criteria specified in iFriendFlags
|
||||
// iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values
|
||||
virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0;
|
||||
|
||||
// clan (group) iteration and access functions
|
||||
virtual int GetClanCount() = 0;
|
||||
virtual CSteamID GetClanByIndex( int iClan ) = 0;
|
||||
virtual const char *GetClanName( CSteamID steamIDClan ) = 0;
|
||||
virtual const char *GetClanTag( CSteamID steamIDClan ) = 0;
|
||||
// returns the most recent information we have about what's happening in a clan
|
||||
virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0;
|
||||
|
||||
// for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest
|
||||
STEAM_CALL_RESULT( DownloadClanActivityCountsResult_t )
|
||||
virtual SteamAPICall_t DownloadClanActivityCounts( STEAM_ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0;
|
||||
|
||||
// iterators for getting users in a chat room, lobby, game server or clan
|
||||
// note that large clans that cannot be iterated by the local user
|
||||
// note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby
|
||||
// steamIDSource can be the steamID of a group, game server, lobby or chat room
|
||||
virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0;
|
||||
virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0;
|
||||
|
||||
// returns true if the local user can see that steamIDUser is a member or in steamIDSource
|
||||
virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0;
|
||||
|
||||
// User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI)
|
||||
virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0;
|
||||
|
||||
// activates the game overlay, with an optional dialog to open
|
||||
// valid options include "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements",
|
||||
// "chatroomgroup/nnnn"
|
||||
virtual void ActivateGameOverlay( const char *pchDialog ) = 0;
|
||||
|
||||
// activates game overlay to a specific place
|
||||
// valid options are
|
||||
// "steamid" - opens the overlay web browser to the specified user or groups profile
|
||||
// "chat" - opens a chat window to the specified user, or joins the group chat
|
||||
// "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API
|
||||
// "stats" - opens the overlay web browser to the specified user's stats
|
||||
// "achievements" - opens the overlay web browser to the specified user's achievements
|
||||
// "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend
|
||||
// "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend
|
||||
// "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite
|
||||
// "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite
|
||||
virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0;
|
||||
|
||||
// activates game overlay web browser directly to the specified URL
|
||||
// full address with protocol type is required, e.g. http://www.steamgames.com/
|
||||
virtual void ActivateGameOverlayToWebPage( const char *pchURL, EActivateGameOverlayToWebPageMode eMode = k_EActivateGameOverlayToWebPageMode_Default ) = 0;
|
||||
|
||||
// activates game overlay to store page for app
|
||||
virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0;
|
||||
|
||||
// Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is
|
||||
// in game
|
||||
virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0;
|
||||
|
||||
// activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby.
|
||||
virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0;
|
||||
|
||||
// gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
|
||||
virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
|
||||
virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
|
||||
// returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again
|
||||
virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// requests information about a user - persona name & avatar
|
||||
// if bRequireNameOnly is set, then the avatar of a user isn't downloaded
|
||||
// - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them
|
||||
// if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved
|
||||
// if returns false, it means that we already have all the details about that user, and functions can be called immediately
|
||||
virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0;
|
||||
|
||||
// requests information about a clan officer list
|
||||
// when complete, data is returned in ClanOfficerListResponse_t call result
|
||||
// this makes available the calls below
|
||||
// you can only ask about clans that a user is a member of
|
||||
// note that this won't download avatars automatically; if you get an officer,
|
||||
// and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar
|
||||
STEAM_CALL_RESULT( ClanOfficerListResponse_t )
|
||||
virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0;
|
||||
|
||||
// iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed
|
||||
|
||||
// returns the steamID of the clan owner
|
||||
virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0;
|
||||
// returns the number of officers in a clan (including the owner)
|
||||
virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0;
|
||||
// returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount)
|
||||
virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0;
|
||||
// if current user is chat restricted, he can't send or receive any text/voice chat messages.
|
||||
// the user can't see custom avatars. But the user can be online and send/recv game invites.
|
||||
// a chat restricted user can't add friends or join any groups.
|
||||
virtual uint32 GetUserRestrictions() = 0;
|
||||
|
||||
// Rich Presence data is automatically shared between friends who are in the same game
|
||||
// Each user has a set of Key/Value pairs
|
||||
// Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength
|
||||
// There are five magic keys:
|
||||
// "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list
|
||||
// "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game
|
||||
// "steam_display" - Names a rich presence localization token that will be displayed in the viewing user's selected language
|
||||
// in the Steam client UI. For more info: https://partner.steamgames.com/doc/api/ISteamFriends#richpresencelocalization
|
||||
// "steam_player_group" - When set, indicates to the Steam client that the player is a member of a particular group. Players in the same group
|
||||
// may be organized together in various places in the Steam UI.
|
||||
// "steam_player_group_size" - When set, indicates the total number of players in the steam_player_group. The Steam client may use this number to
|
||||
// display additional information about a group when all of the members are not part of a user's friends list.
|
||||
// GetFriendRichPresence() returns an empty string "" if no value is set
|
||||
// SetRichPresence() to a NULL or an empty string deletes the key
|
||||
// You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount()
|
||||
// and GetFriendRichPresenceKeyByIndex() (typically only used for debugging)
|
||||
virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0;
|
||||
virtual void ClearRichPresence() = 0;
|
||||
virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0;
|
||||
virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0;
|
||||
virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0;
|
||||
// Requests rich presence for a specific user.
|
||||
virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// Rich invite support.
|
||||
// If the target accepts the invite, a GameRichPresenceJoinRequested_t callback is posted containing the connect string.
|
||||
// (Or you can configure your game so that it is passed on the command line instead. This is a deprecated path; ask us if you really need this.)
|
||||
virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0;
|
||||
|
||||
// recently-played-with friends iteration
|
||||
// this iterates the entire list of users recently played with, across games
|
||||
// GetFriendCoplayTime() returns as a unix time
|
||||
virtual int GetCoplayFriendCount() = 0;
|
||||
virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0;
|
||||
virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0;
|
||||
virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// chat interface for games
|
||||
// this allows in-game access to group (clan) chats from in the game
|
||||
// the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay
|
||||
// use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat
|
||||
STEAM_CALL_RESULT( JoinClanChatRoomCompletionResult_t )
|
||||
virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0;
|
||||
virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0;
|
||||
virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0;
|
||||
virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0;
|
||||
virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0;
|
||||
virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, STEAM_OUT_STRUCT() CSteamID *psteamidChatter ) = 0;
|
||||
virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0;
|
||||
|
||||
// interact with the Steam (game overlay / desktop)
|
||||
virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0;
|
||||
virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0;
|
||||
virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0;
|
||||
|
||||
// peer-to-peer chat interception
|
||||
// this is so you can show P2P chats inline in the game
|
||||
virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0;
|
||||
virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0;
|
||||
virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0;
|
||||
|
||||
// following apis
|
||||
STEAM_CALL_RESULT( FriendsGetFollowerCount_t )
|
||||
virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0;
|
||||
STEAM_CALL_RESULT( FriendsIsFollowing_t )
|
||||
virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0;
|
||||
STEAM_CALL_RESULT( FriendsEnumerateFollowingList_t )
|
||||
virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0;
|
||||
|
||||
virtual bool IsClanPublic( CSteamID steamIDClan ) = 0;
|
||||
virtual bool IsClanOfficialGameGroup( CSteamID steamIDClan ) = 0;
|
||||
|
||||
/// Return the number of chats (friends or chat rooms) with unread messages.
|
||||
/// A "priority" message is one that would generate some sort of toast or
|
||||
/// notification, and depends on user settings.
|
||||
///
|
||||
/// You can register for UnreadChatMessagesChanged_t callbacks to know when this
|
||||
/// has potentially changed.
|
||||
virtual int GetNumChatsWithUnreadPriorityMessages() = 0;
|
||||
|
||||
// activates game overlay to open the remote play together invite dialog. Invitations will be sent for remote play together
|
||||
virtual void ActivateGameOverlayRemotePlayTogetherInviteDialog( CSteamID steamIDLobby ) = 0;
|
||||
|
||||
// Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations
|
||||
// to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation_t callback to your game.
|
||||
// ActivateGameOverlayToWebPage() must have been called with k_EActivateGameOverlayToWebPageMode_Modal
|
||||
virtual bool RegisterProtocolInOverlayBrowser( const char *pchProtocol ) = 0;
|
||||
|
||||
// Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends
|
||||
virtual void ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString ) = 0;
|
||||
|
||||
// Steam Community items equipped by a user on their profile
|
||||
// You can register for EquippedProfileItemsChanged_t to know when a friend has changed their equipped profile items
|
||||
STEAM_CALL_RESULT( EquippedProfileItems_t )
|
||||
virtual SteamAPICall_t RequestEquippedProfileItems( CSteamID steamID ) = 0;
|
||||
virtual bool BHasEquippedProfileItem( CSteamID steamID, ECommunityProfileItemType itemType ) = 0;
|
||||
virtual const char *GetProfileItemPropertyString( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0;
|
||||
virtual uint32 GetProfileItemPropertyUint( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // ISTEAMFRIENDS017_H
|
|
@ -22,51 +22,53 @@ enum EHTMLMouseButton
|
|||
eHTMLMouseButton_Middle = 2,
|
||||
};
|
||||
|
||||
enum EMouseCursor
|
||||
enum EHTMLMouseCursor
|
||||
{
|
||||
dc_user = 0,
|
||||
dc_none,
|
||||
dc_arrow,
|
||||
dc_ibeam,
|
||||
dc_hourglass,
|
||||
dc_waitarrow,
|
||||
dc_crosshair,
|
||||
dc_up,
|
||||
dc_sizenw,
|
||||
dc_sizese,
|
||||
dc_sizene,
|
||||
dc_sizesw,
|
||||
dc_sizew,
|
||||
dc_sizee,
|
||||
dc_sizen,
|
||||
dc_sizes,
|
||||
dc_sizewe,
|
||||
dc_sizens,
|
||||
dc_sizeall,
|
||||
dc_no,
|
||||
dc_hand,
|
||||
dc_blank, // don't show any custom cursor, just use your default
|
||||
dc_middle_pan,
|
||||
dc_north_pan,
|
||||
dc_north_east_pan,
|
||||
dc_east_pan,
|
||||
dc_south_east_pan,
|
||||
dc_south_pan,
|
||||
dc_south_west_pan,
|
||||
dc_west_pan,
|
||||
dc_north_west_pan,
|
||||
dc_alias,
|
||||
dc_cell,
|
||||
dc_colresize,
|
||||
dc_copycur,
|
||||
dc_verticaltext,
|
||||
dc_rowresize,
|
||||
dc_zoomin,
|
||||
dc_zoomout,
|
||||
dc_help,
|
||||
dc_custom,
|
||||
k_EHTMLMouseCursor_User = 0,
|
||||
k_EHTMLMouseCursor_None,
|
||||
k_EHTMLMouseCursor_Arrow,
|
||||
k_EHTMLMouseCursor_IBeam,
|
||||
k_EHTMLMouseCursor_Hourglass,
|
||||
k_EHTMLMouseCursor_WaitArrow,
|
||||
k_EHTMLMouseCursor_Crosshair,
|
||||
k_EHTMLMouseCursor_Up,
|
||||
k_EHTMLMouseCursor_SizeNW,
|
||||
k_EHTMLMouseCursor_SizeSE,
|
||||
k_EHTMLMouseCursor_SizeNE,
|
||||
k_EHTMLMouseCursor_SizeSW,
|
||||
k_EHTMLMouseCursor_SizeW,
|
||||
k_EHTMLMouseCursor_SizeE,
|
||||
k_EHTMLMouseCursor_SizeN,
|
||||
k_EHTMLMouseCursor_SizeS,
|
||||
k_EHTMLMouseCursor_SizeWE,
|
||||
k_EHTMLMouseCursor_SizeNS,
|
||||
k_EHTMLMouseCursor_SizeAll,
|
||||
k_EHTMLMouseCursor_No,
|
||||
k_EHTMLMouseCursor_Hand,
|
||||
k_EHTMLMouseCursor_Blank, // don't show any custom cursor, just use your default
|
||||
k_EHTMLMouseCursor_MiddlePan,
|
||||
k_EHTMLMouseCursor_NorthPan,
|
||||
k_EHTMLMouseCursor_NorthEastPan,
|
||||
k_EHTMLMouseCursor_EastPan,
|
||||
k_EHTMLMouseCursor_SouthEastPan,
|
||||
k_EHTMLMouseCursor_SouthPan,
|
||||
k_EHTMLMouseCursor_SouthWestPan,
|
||||
k_EHTMLMouseCursor_WestPan,
|
||||
k_EHTMLMouseCursor_NorthWestPan,
|
||||
k_EHTMLMouseCursor_Alias,
|
||||
k_EHTMLMouseCursor_Cell,
|
||||
k_EHTMLMouseCursor_ColResize,
|
||||
k_EHTMLMouseCursor_CopyCur,
|
||||
k_EHTMLMouseCursor_VerticalText,
|
||||
k_EHTMLMouseCursor_RowResize,
|
||||
k_EHTMLMouseCursor_ZoomIn,
|
||||
k_EHTMLMouseCursor_ZoomOut,
|
||||
k_EHTMLMouseCursor_Help,
|
||||
k_EHTMLMouseCursor_Custom,
|
||||
k_EHTMLMouseCursor_SizeNWSE,
|
||||
k_EHTMLMouseCursor_SizeNESW,
|
||||
|
||||
dc_last, // custom cursors start from this value and up
|
||||
k_EHTMLMouseCursor_last, // custom cursors start from this value and up
|
||||
};
|
||||
|
||||
enum EHTMLKeyModifiers
|
||||
|
@ -427,7 +429,7 @@ STEAM_CALLBACK_END(7)
|
|||
//-----------------------------------------------------------------------------
|
||||
STEAM_CALLBACK_BEGIN( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 )
|
||||
STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface
|
||||
STEAM_CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display
|
||||
STEAM_CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EHTMLMouseCursor to display
|
||||
STEAM_CALLBACK_END(2)
|
||||
|
||||
|
||||
|
@ -436,7 +438,7 @@ STEAM_CALLBACK_END(2)
|
|||
//-----------------------------------------------------------------------------
|
||||
STEAM_CALLBACK_BEGIN( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 )
|
||||
STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the message text
|
||||
STEAM_CALLBACK_END(2)
|
||||
|
||||
|
||||
|
@ -445,7 +447,7 @@ STEAM_CALLBACK_END(2)
|
|||
//-----------------------------------------------------------------------------
|
||||
STEAM_CALLBACK_BEGIN( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 )
|
||||
STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the tooltip text
|
||||
STEAM_CALLBACK_END(2)
|
||||
|
||||
|
||||
|
@ -454,7 +456,7 @@ STEAM_CALLBACK_END(2)
|
|||
//-----------------------------------------------------------------------------
|
||||
STEAM_CALLBACK_BEGIN( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 )
|
||||
STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display
|
||||
STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the new tooltip text
|
||||
STEAM_CALLBACK_END(2)
|
||||
|
||||
|
||||
|
|
|
@ -249,13 +249,6 @@ public:
|
|||
// link two lobbies for the purposes of checking player compatibility
|
||||
// you must be the lobby owner of both lobbies
|
||||
virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0;
|
||||
|
||||
#ifdef _PS3
|
||||
// changes who the lobby owner is
|
||||
// you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby
|
||||
// after completion, the local user will no longer be the owner
|
||||
virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0;
|
||||
#endif
|
||||
};
|
||||
#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009"
|
||||
|
||||
|
@ -907,20 +900,8 @@ struct RequestFriendsLobbiesResponse_t
|
|||
int m_cResultsTotal; // total number of results; 0 if no friends in lobbies are found
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Result of CheckForPSNGameBootInvite
|
||||
// m_eResult == k_EResultOK on success
|
||||
// at this point, the local user may not have finishing joining this lobby;
|
||||
// game code should wait until the subsequent LobbyEnter_t callback is received
|
||||
//-----------------------------------------------------------------------------
|
||||
struct PSNGameBootInviteResult_t
|
||||
{
|
||||
enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 };
|
||||
|
||||
bool m_bGameBootInviteExists;
|
||||
CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true
|
||||
};
|
||||
|
||||
// used by now obsolete PSNGameBootInviteResult_t
|
||||
// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 };
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Result of our request to create a Lobby
|
||||
|
|
|
@ -22,10 +22,237 @@ enum ESteamDeviceFormFactor
|
|||
k_ESteamDeviceFormFactorVRHeadset = 5,
|
||||
};
|
||||
|
||||
|
||||
// Steam Remote Play session ID
|
||||
typedef uint32 RemotePlaySessionID_t;
|
||||
|
||||
|
||||
// Steam Remote Play mouse cursor ID
|
||||
typedef uint32 RemotePlayCursorID_t;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The type of input in ERemotePlayInput_t
|
||||
//-----------------------------------------------------------------------------
|
||||
enum ERemotePlayInputType
|
||||
{
|
||||
k_ERemotePlayInputUnknown,
|
||||
k_ERemotePlayInputMouseMotion,
|
||||
k_ERemotePlayInputMouseButtonDown,
|
||||
k_ERemotePlayInputMouseButtonUp,
|
||||
k_ERemotePlayInputMouseWheel,
|
||||
k_ERemotePlayInputKeyDown,
|
||||
k_ERemotePlayInputKeyUp
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Mouse buttons in ERemotePlayInput_t
|
||||
//-----------------------------------------------------------------------------
|
||||
enum ERemotePlayMouseButton
|
||||
{
|
||||
k_ERemotePlayMouseButtonLeft = 0x0001,
|
||||
k_ERemotePlayMouseButtonRight = 0x0002,
|
||||
k_ERemotePlayMouseButtonMiddle = 0x0010,
|
||||
k_ERemotePlayMouseButtonX1 = 0x0020,
|
||||
k_ERemotePlayMouseButtonX2 = 0x0040,
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Mouse wheel direction in ERemotePlayInput_t
|
||||
//-----------------------------------------------------------------------------
|
||||
enum ERemotePlayMouseWheelDirection
|
||||
{
|
||||
k_ERemotePlayMouseWheelUp = 1,
|
||||
k_ERemotePlayMouseWheelDown = 2,
|
||||
k_ERemotePlayMouseWheelLeft = 3,
|
||||
k_ERemotePlayMouseWheelRight = 4,
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Key scancode in ERemotePlayInput_t
|
||||
//
|
||||
// This is a USB scancode value as defined for the Keyboard/Keypad Page (0x07)
|
||||
// This enumeration isn't a complete list, just the most commonly used keys.
|
||||
//-----------------------------------------------------------------------------
|
||||
enum ERemotePlayScancode
|
||||
{
|
||||
k_ERemotePlayScancodeUnknown = 0,
|
||||
|
||||
k_ERemotePlayScancodeA = 4,
|
||||
k_ERemotePlayScancodeB = 5,
|
||||
k_ERemotePlayScancodeC = 6,
|
||||
k_ERemotePlayScancodeD = 7,
|
||||
k_ERemotePlayScancodeE = 8,
|
||||
k_ERemotePlayScancodeF = 9,
|
||||
k_ERemotePlayScancodeG = 10,
|
||||
k_ERemotePlayScancodeH = 11,
|
||||
k_ERemotePlayScancodeI = 12,
|
||||
k_ERemotePlayScancodeJ = 13,
|
||||
k_ERemotePlayScancodeK = 14,
|
||||
k_ERemotePlayScancodeL = 15,
|
||||
k_ERemotePlayScancodeM = 16,
|
||||
k_ERemotePlayScancodeN = 17,
|
||||
k_ERemotePlayScancodeO = 18,
|
||||
k_ERemotePlayScancodeP = 19,
|
||||
k_ERemotePlayScancodeQ = 20,
|
||||
k_ERemotePlayScancodeR = 21,
|
||||
k_ERemotePlayScancodeS = 22,
|
||||
k_ERemotePlayScancodeT = 23,
|
||||
k_ERemotePlayScancodeU = 24,
|
||||
k_ERemotePlayScancodeV = 25,
|
||||
k_ERemotePlayScancodeW = 26,
|
||||
k_ERemotePlayScancodeX = 27,
|
||||
k_ERemotePlayScancodeY = 28,
|
||||
k_ERemotePlayScancodeZ = 29,
|
||||
|
||||
k_ERemotePlayScancode1 = 30,
|
||||
k_ERemotePlayScancode2 = 31,
|
||||
k_ERemotePlayScancode3 = 32,
|
||||
k_ERemotePlayScancode4 = 33,
|
||||
k_ERemotePlayScancode5 = 34,
|
||||
k_ERemotePlayScancode6 = 35,
|
||||
k_ERemotePlayScancode7 = 36,
|
||||
k_ERemotePlayScancode8 = 37,
|
||||
k_ERemotePlayScancode9 = 38,
|
||||
k_ERemotePlayScancode0 = 39,
|
||||
|
||||
k_ERemotePlayScancodeReturn = 40,
|
||||
k_ERemotePlayScancodeEscape = 41,
|
||||
k_ERemotePlayScancodeBackspace = 42,
|
||||
k_ERemotePlayScancodeTab = 43,
|
||||
k_ERemotePlayScancodeSpace = 44,
|
||||
k_ERemotePlayScancodeMinus = 45,
|
||||
k_ERemotePlayScancodeEquals = 46,
|
||||
k_ERemotePlayScancodeLeftBracket = 47,
|
||||
k_ERemotePlayScancodeRightBracket = 48,
|
||||
k_ERemotePlayScancodeBackslash = 49,
|
||||
k_ERemotePlayScancodeSemicolon = 51,
|
||||
k_ERemotePlayScancodeApostrophe = 52,
|
||||
k_ERemotePlayScancodeGrave = 53,
|
||||
k_ERemotePlayScancodeComma = 54,
|
||||
k_ERemotePlayScancodePeriod = 55,
|
||||
k_ERemotePlayScancodeSlash = 56,
|
||||
k_ERemotePlayScancodeCapsLock = 57,
|
||||
|
||||
k_ERemotePlayScancodeF1 = 58,
|
||||
k_ERemotePlayScancodeF2 = 59,
|
||||
k_ERemotePlayScancodeF3 = 60,
|
||||
k_ERemotePlayScancodeF4 = 61,
|
||||
k_ERemotePlayScancodeF5 = 62,
|
||||
k_ERemotePlayScancodeF6 = 63,
|
||||
k_ERemotePlayScancodeF7 = 64,
|
||||
k_ERemotePlayScancodeF8 = 65,
|
||||
k_ERemotePlayScancodeF9 = 66,
|
||||
k_ERemotePlayScancodeF10 = 67,
|
||||
k_ERemotePlayScancodeF11 = 68,
|
||||
k_ERemotePlayScancodeF12 = 69,
|
||||
|
||||
k_ERemotePlayScancodeInsert = 73,
|
||||
k_ERemotePlayScancodeHome = 74,
|
||||
k_ERemotePlayScancodePageUp = 75,
|
||||
k_ERemotePlayScancodeDelete = 76,
|
||||
k_ERemotePlayScancodeEnd = 77,
|
||||
k_ERemotePlayScancodePageDown = 78,
|
||||
k_ERemotePlayScancodeRight = 79,
|
||||
k_ERemotePlayScancodeLeft = 80,
|
||||
k_ERemotePlayScancodeDown = 81,
|
||||
k_ERemotePlayScancodeUp = 82,
|
||||
|
||||
k_ERemotePlayScancodeLeftControl = 224,
|
||||
k_ERemotePlayScancodeLeftShift = 225,
|
||||
k_ERemotePlayScancodeLeftAlt = 226,
|
||||
k_ERemotePlayScancodeLeftGUI = 227, // windows, command (apple), meta
|
||||
k_ERemotePlayScancodeRightControl = 228,
|
||||
k_ERemotePlayScancodeRightShift = 229,
|
||||
k_ERemotePlayScancodeRightALT = 230,
|
||||
k_ERemotePlayScancodeRightGUI = 231, // windows, command (apple), meta
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Key modifier in ERemotePlayInput_t
|
||||
//-----------------------------------------------------------------------------
|
||||
enum ERemotePlayKeyModifier
|
||||
{
|
||||
k_ERemotePlayKeyModifierNone = 0x0000,
|
||||
k_ERemotePlayKeyModifierLeftShift = 0x0001,
|
||||
k_ERemotePlayKeyModifierRightShift = 0x0002,
|
||||
k_ERemotePlayKeyModifierLeftControl = 0x0040,
|
||||
k_ERemotePlayKeyModifierRightControl = 0x0080,
|
||||
k_ERemotePlayKeyModifierLeftAlt = 0x0100,
|
||||
k_ERemotePlayKeyModifierRightAlt = 0x0200,
|
||||
k_ERemotePlayKeyModifierLeftGUI = 0x0400,
|
||||
k_ERemotePlayKeyModifierRightGUI = 0x0800,
|
||||
k_ERemotePlayKeyModifierNumLock = 0x1000,
|
||||
k_ERemotePlayKeyModifierCapsLock = 0x2000,
|
||||
k_ERemotePlayKeyModifierMask = 0xFFFF,
|
||||
};
|
||||
|
||||
|
||||
#if defined( VALVE_CALLBACK_PACK_SMALL )
|
||||
#pragma pack( push, 4 )
|
||||
#elif defined( VALVE_CALLBACK_PACK_LARGE )
|
||||
#pragma pack( push, 8 )
|
||||
#else
|
||||
#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
|
||||
#endif
|
||||
|
||||
// Mouse motion event data, valid when m_eType is k_ERemotePlayInputMouseMotion
|
||||
struct RemotePlayInputMouseMotion_t
|
||||
{
|
||||
bool m_bAbsolute; // True if this is absolute mouse motion and m_flNormalizedX and m_flNormalizedY are valid
|
||||
float m_flNormalizedX; // The absolute X position of the mouse, normalized to the display, if m_bAbsolute is true
|
||||
float m_flNormalizedY; // The absolute Y position of the mouse, normalized to the display, if m_bAbsolute is true
|
||||
int m_nDeltaX; // Relative mouse motion in the X direction
|
||||
int m_nDeltaY; // Relative mouse motion in the Y direction
|
||||
};
|
||||
|
||||
// Mouse wheel event data, valid when m_eType is k_ERemotePlayInputMouseWheel
|
||||
struct RemotePlayInputMouseWheel_t
|
||||
{
|
||||
ERemotePlayMouseWheelDirection m_eDirection;
|
||||
float m_flAmount; // 1.0f is a single click of the wheel, 120 units on Windows
|
||||
};
|
||||
|
||||
// Key event data, valid when m_eType is k_ERemotePlayInputKeyDown or k_ERemotePlayInputKeyUp
|
||||
struct RemotePlayInputKey_t
|
||||
{
|
||||
int m_eScancode; // Keyboard scancode, common values are defined in ERemotePlayScancode
|
||||
uint32 m_unModifiers; // Mask of ERemotePlayKeyModifier active for this key event
|
||||
uint32 m_unKeycode; // UCS-4 character generated by the keypress, or 0 if it wasn't a character key, e.g. Delete or Left Arrow
|
||||
};
|
||||
|
||||
struct RemotePlayInput_t
|
||||
{
|
||||
RemotePlaySessionID_t m_unSessionID;
|
||||
ERemotePlayInputType m_eType;
|
||||
|
||||
union
|
||||
{
|
||||
// Mouse motion event data, valid when m_eType is k_ERemotePlayInputMouseMotion
|
||||
RemotePlayInputMouseMotion_t m_MouseMotion;
|
||||
|
||||
// Mouse button event data, valid when m_eType is k_ERemotePlayInputMouseButtonDown or k_ERemotePlayInputMouseButtonUp
|
||||
ERemotePlayMouseButton m_eMouseButton;
|
||||
|
||||
// Mouse wheel event data, valid when m_eType is k_ERemotePlayInputMouseWheel
|
||||
RemotePlayInputMouseWheel_t m_MouseWheel;
|
||||
|
||||
// Key event data, valid when m_eType is k_ERemotePlayInputKeyDown or k_ERemotePlayInputKeyUp
|
||||
RemotePlayInputKey_t m_Key;
|
||||
|
||||
// Unused space for future use
|
||||
char padding[ 64 - ( sizeof( m_unSessionID ) + sizeof( m_eType ) ) ];
|
||||
};
|
||||
};
|
||||
//COMPILE_TIME_ASSERT( sizeof( RemotePlayInput_t ) == 64 );
|
||||
|
||||
#pragma pack( pop )
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Functions to provide information about Steam Remote Play sessions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -52,17 +279,60 @@ public:
|
|||
// This is set to 0x0 if the resolution is not available
|
||||
virtual bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, int *pnResolutionX, int *pnResolutionY ) = 0;
|
||||
|
||||
// Start Remote Play Together and optionally show the UI in the overlay
|
||||
// This returns false if Remote Play Together can't be started or your game is not configured for Remote Play Together
|
||||
virtual bool BStartRemotePlayTogether( bool bShowOverlay = true ) = 0;
|
||||
// Show the Remote Play Together UI in the game overlay
|
||||
// This returns false if your game is not configured for Remote Play Together
|
||||
virtual bool ShowRemotePlayTogetherUI() = 0;
|
||||
|
||||
// Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty
|
||||
// This will automatically start Remote Play Together if it hasn't already been started
|
||||
// This returns false if the invite can't be sent or your game is not configured for Remote Play Together
|
||||
virtual bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend ) = 0;
|
||||
|
||||
// Make mouse and keyboard input for Remote Play Together sessions available via GetInput() instead of being merged with local input
|
||||
virtual bool BEnableRemotePlayTogetherDirectInput() = 0;
|
||||
|
||||
// Merge Remote Play Together mouse and keyboard input with local input
|
||||
virtual void DisableRemotePlayTogetherDirectInput() = 0;
|
||||
|
||||
// Get input events from Remote Play Together sessions
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// pInput is an array of input events that will be filled in by this function, up to unMaxEvents.
|
||||
// This returns the number of events copied to pInput, or the number of events available if pInput is nullptr.
|
||||
virtual uint32 GetInput( RemotePlayInput_t *pInput, uint32 unMaxEvents ) = 0;
|
||||
|
||||
// Set the mouse cursor visibility for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
virtual void SetMouseVisibility( RemotePlaySessionID_t unSessionID, bool bVisible ) = 0;
|
||||
|
||||
// Set the mouse cursor position for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// This is used to warp the cursor to a specific location and isn't needed during normal event processing.
|
||||
//
|
||||
// The position is normalized relative to the window, where 0,0 is the upper left, and 1,1 is the lower right.
|
||||
virtual void SetMousePosition( RemotePlaySessionID_t unSessionID, float flNormalizedX, float flNormalizedY ) = 0;
|
||||
|
||||
// Create a cursor that can be used with SetMouseCursor()
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// Parameters:
|
||||
// nWidth - The width of the cursor, in pixels
|
||||
// nHeight - The height of the cursor, in pixels
|
||||
// nHotX - The X coordinate of the cursor hot spot in pixels, offset from the left of the cursor
|
||||
// nHotY - The Y coordinate of the cursor hot spot in pixels, offset from the top of the cursor
|
||||
// pBGRA - A pointer to the cursor pixels, with the color channels in red, green, blue, alpha order
|
||||
// nPitch - The distance between pixel rows in bytes, defaults to nWidth * 4
|
||||
virtual RemotePlayCursorID_t CreateMouseCursor( int nWidth, int nHeight, int nHotX, int nHotY, const void *pBGRA, int nPitch = 0 ) = 0;
|
||||
|
||||
// Set the mouse cursor for a remote player
|
||||
// This is available after calling BEnableRemotePlayTogetherDirectInput()
|
||||
//
|
||||
// The cursor ID is a value returned by CreateMouseCursor()
|
||||
virtual void SetMouseCursor( RemotePlaySessionID_t unSessionID, RemotePlayCursorID_t unCursorID ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMREMOTEPLAY_INTERFACE_VERSION "STEAMREMOTEPLAY_INTERFACE_VERSION002"
|
||||
#define STEAMREMOTEPLAY_INTERFACE_VERSION "STEAMREMOTEPLAY_INTERFACE_VERSION003"
|
||||
|
||||
// Global interface accessor
|
||||
inline ISteamRemotePlay *SteamRemotePlay();
|
||||
|
@ -75,7 +345,7 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemotePlay *, SteamRemotePlay, STEAM
|
|||
#pragma pack( push, 8 )
|
||||
#else
|
||||
#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
STEAM_CALLBACK_BEGIN( SteamRemotePlaySessionConnected_t, k_iSteamRemotePlayCallbacks + 1 )
|
||||
|
|
44
sdk/steam/isteamremoteplay002.h
Normal file
44
sdk/steam/isteamremoteplay002.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
|
||||
#ifndef ISTEAMREMOTEPLAY002_H
|
||||
#define ISTEAMREMOTEPLAY002_H
|
||||
#ifdef STEAM_WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Functions to provide information about Steam Remote Play sessions
|
||||
//-----------------------------------------------------------------------------
|
||||
class ISteamRemotePlay002
|
||||
{
|
||||
public:
|
||||
// Get the number of currently connected Steam Remote Play sessions
|
||||
virtual uint32 GetSessionCount() = 0;
|
||||
|
||||
// Get the currently connected Steam Remote Play session ID at the specified index. Returns zero if index is out of bounds.
|
||||
virtual RemotePlaySessionID_t GetSessionID( int iSessionIndex ) = 0;
|
||||
|
||||
// Get the SteamID of the connected user
|
||||
virtual CSteamID GetSessionSteamID( RemotePlaySessionID_t unSessionID ) = 0;
|
||||
|
||||
// Get the name of the session client device
|
||||
// This returns NULL if the sessionID is not valid
|
||||
virtual const char *GetSessionClientName( RemotePlaySessionID_t unSessionID ) = 0;
|
||||
|
||||
// Get the form factor of the session client device
|
||||
virtual ESteamDeviceFormFactor GetSessionClientFormFactor( RemotePlaySessionID_t unSessionID ) = 0;
|
||||
|
||||
// Get the resolution, in pixels, of the session client device
|
||||
// This is set to 0x0 if the resolution is not available
|
||||
virtual bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, int *pnResolutionX, int *pnResolutionY ) = 0;
|
||||
|
||||
// Start Remote Play Together and optionally show the UI in the overlay
|
||||
// This returns false if Remote Play Together can't be started or your game is not configured for Remote Play Together
|
||||
virtual bool BStartRemotePlayTogether( bool bShowOverlay = true ) = 0;
|
||||
|
||||
// Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty
|
||||
// This will automatically start Remote Play Together if it hasn't already been started
|
||||
// This returns false if the invite can't be sent or your game is not configured for Remote Play Together
|
||||
virtual bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend ) = 0;
|
||||
};
|
||||
|
||||
#endif // #define ISTEAMREMOTEPLAY002_H
|
|
@ -202,9 +202,9 @@ struct SteamUGCDetails_t
|
|||
uint32 m_unVotesDown; // number of votes down
|
||||
float m_flScore; // calculated score
|
||||
// collection details
|
||||
uint32 m_unNumChildren;
|
||||
uint32 m_unNumChildren;
|
||||
uint64 m_ulTotalFilesSize; // Total size of all files (non-legacy), excluding the preview file
|
||||
};
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Steam UGC support API
|
||||
|
@ -241,7 +241,7 @@ public:
|
|||
virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0;
|
||||
virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0;
|
||||
virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0;
|
||||
virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchOriginalFileNameSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0;
|
||||
virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, STEAM_OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0;
|
||||
|
||||
|
@ -251,7 +251,6 @@ public:
|
|||
|
||||
// Some items can specify that they have a version that is valid for a range of game versions (Steam branch)
|
||||
virtual uint32 GetNumSupportedGameVersions( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
|
||||
virtual bool GetSupportedGameVersionData( UGCQueryHandle_t handle, uint32 index, uint32 versionIndex, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMin, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMax, uint32 cchGameBranchSize ) = 0;
|
||||
|
||||
virtual uint32 GetQueryUGCContentDescriptors( UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0;
|
||||
|
@ -273,7 +272,6 @@ public:
|
|||
virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0;
|
||||
virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0;
|
||||
virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0;
|
||||
// allow ISteamUGC to be used in a tools like environment for users who have the appropriate privileges for the calling appid
|
||||
virtual bool SetAdminQuery( UGCUpdateHandle_t handle, bool bAdminQuery ) = 0; // admin queries return hidden items
|
||||
|
||||
// Options only for querying user UGC
|
||||
|
@ -335,8 +333,8 @@ public:
|
|||
virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP
|
||||
STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t )
|
||||
virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits
|
||||
virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items
|
||||
virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs
|
||||
virtual uint32 GetNumSubscribedItems( bool bIncludeLocallyDisabled = false ) = 0; // number of subscribed items
|
||||
virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries, bool bIncludeLocallyDisabled = false ) = 0; // all subscribed item PublishFileIDs
|
||||
|
||||
// get EItemState flags about item on this client
|
||||
virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0;
|
||||
|
@ -396,9 +394,15 @@ public:
|
|||
|
||||
// Return the user's community content descriptor preferences
|
||||
virtual uint32 GetUserContentDescriptorPreferences( EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0;
|
||||
|
||||
// Sets whether the item should be disabled locally or not. This means that it will not be returned in GetSubscribedItems() by default.
|
||||
virtual bool SetItemsDisabledLocally( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs, bool bDisabledLocally ) = 0;
|
||||
|
||||
// Set the local load order for these items. If there are any items not in the given list, they will sort by the time subscribed.
|
||||
virtual bool SetSubscriptionsLoadOrder( PublishedFileId_t *pvecPublishedFileIDs, uint32 unNumPublishedFileIDs ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION020"
|
||||
#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION021"
|
||||
|
||||
#ifndef STEAM_API_EXPORTS
|
||||
// Global interface accessor
|
||||
|
|
200
sdk/steam/isteamugc020.h
Normal file
200
sdk/steam/isteamugc020.h
Normal file
|
@ -0,0 +1,200 @@
|
|||
|
||||
#ifndef ISTEAMUGC020_H
|
||||
#define ISTEAMUGC020_H
|
||||
#ifdef STEAM_WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Steam UGC support API
|
||||
//-----------------------------------------------------------------------------
|
||||
class ISteamUGC020
|
||||
{
|
||||
public:
|
||||
|
||||
// Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1.
|
||||
virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0;
|
||||
|
||||
// Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1.
|
||||
STEAM_FLAT_NAME( CreateQueryAllUGCRequestPage )
|
||||
virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0;
|
||||
|
||||
// Query for all matching UGC using the new deep paging interface. Creator app id or consumer app id must be valid and be set to the current running app. pchCursor should be set to NULL or "*" to get the first result set.
|
||||
STEAM_FLAT_NAME( CreateQueryAllUGCRequestCursor )
|
||||
virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char *pchCursor = NULL ) = 0;
|
||||
|
||||
// Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this)
|
||||
virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0;
|
||||
|
||||
// Send the query to Steam
|
||||
STEAM_CALL_RESULT( SteamUGCQueryCompleted_t )
|
||||
virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0;
|
||||
|
||||
// Retrieve an individual result after receiving the callback for querying UGC
|
||||
virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0;
|
||||
virtual uint32 GetQueryUGCNumTags( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
virtual bool GetQueryUGCTag( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0;
|
||||
virtual bool GetQueryUGCTagDisplayName( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0;
|
||||
virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0;
|
||||
virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0;
|
||||
virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0;
|
||||
virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0;
|
||||
virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0;
|
||||
virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, STEAM_OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0;
|
||||
|
||||
// Return the first value matching the pchKey. Note that a key may map to multiple values. Returns false if there was an error or no matching value was found.
|
||||
STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag )
|
||||
virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0;
|
||||
|
||||
// Some items can specify that they have a version that is valid for a range of game versions (Steam branch)
|
||||
virtual uint32 GetNumSupportedGameVersions( UGCQueryHandle_t handle, uint32 index ) = 0;
|
||||
|
||||
virtual bool GetSupportedGameVersionData( UGCQueryHandle_t handle, uint32 index, uint32 versionIndex, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMin, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMax, uint32 cchGameBranchSize ) = 0;
|
||||
|
||||
virtual uint32 GetQueryUGCContentDescriptors( UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0;
|
||||
|
||||
// Release the request to free up memory, after retrieving results
|
||||
virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0;
|
||||
|
||||
// Options to set for querying UGC
|
||||
virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0;
|
||||
virtual bool AddRequiredTagGroup( UGCQueryHandle_t handle, const SteamParamStringArray_t *pTagGroups ) = 0; // match any of the tags in this group
|
||||
virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0;
|
||||
virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0;
|
||||
virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0;
|
||||
virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0;
|
||||
virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0;
|
||||
virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0;
|
||||
virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0;
|
||||
virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0;
|
||||
virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0;
|
||||
virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0;
|
||||
virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0;
|
||||
// allow ISteamUGC to be used in a tools like environment for users who have the appropriate privileges for the calling appid
|
||||
virtual bool SetAdminQuery( UGCUpdateHandle_t handle, bool bAdminQuery ) = 0; // admin queries return hidden items
|
||||
|
||||
// Options only for querying user UGC
|
||||
virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0;
|
||||
|
||||
// Options only for querying all UGC
|
||||
virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0;
|
||||
virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0;
|
||||
virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0;
|
||||
virtual bool SetTimeCreatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0;
|
||||
virtual bool SetTimeUpdatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0;
|
||||
virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0;
|
||||
|
||||
// DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead!
|
||||
STEAM_CALL_RESULT( SteamUGCRequestUGCDetailsResult_t )
|
||||
virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0;
|
||||
|
||||
// Steam Workshop Creator API
|
||||
STEAM_CALL_RESULT( CreateItemResult_t )
|
||||
virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet
|
||||
|
||||
virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate()
|
||||
|
||||
virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item
|
||||
virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item
|
||||
virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set
|
||||
virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax)
|
||||
virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item
|
||||
virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags, bool bAllowAdminTags = false ) = 0; // change the tags of an UGC item
|
||||
virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder
|
||||
virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size
|
||||
virtual bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, bool bAllowLegacyUpload ) = 0; // use legacy upload for a single small file. The parameter to SetItemContent() should either be a directory with one file or the full path to the file. The file must also be less than 10MB in size.
|
||||
virtual bool RemoveAllItemKeyValueTags( UGCUpdateHandle_t handle ) = 0; // remove all existing key-value tags (you can add new ones via the AddItemKeyValueTag function)
|
||||
virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key
|
||||
virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag.
|
||||
virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size
|
||||
virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item
|
||||
virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size
|
||||
virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item
|
||||
virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted)
|
||||
virtual bool AddContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0;
|
||||
virtual bool RemoveContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0;
|
||||
virtual bool SetRequiredGameVersions( UGCUpdateHandle_t handle, const char *pszGameBranchMin, const char *pszGameBranchMax ) = 0; // an empty string for either parameter means that it will match any version on that end of the range. This will only be applied if the actual content has been changed.
|
||||
|
||||
STEAM_CALL_RESULT( SubmitItemUpdateResult_t )
|
||||
virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate()
|
||||
virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0;
|
||||
|
||||
// Steam Workshop Consumer API
|
||||
STEAM_CALL_RESULT( SetUserItemVoteResult_t )
|
||||
virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0;
|
||||
STEAM_CALL_RESULT( GetUserItemVoteResult_t )
|
||||
virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0;
|
||||
STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t )
|
||||
virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0;
|
||||
STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t )
|
||||
virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0;
|
||||
STEAM_CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t )
|
||||
virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP
|
||||
STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t )
|
||||
virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits
|
||||
virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items
|
||||
virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs
|
||||
|
||||
// get EItemState flags about item on this client
|
||||
virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0;
|
||||
|
||||
// get info about currently installed content on disc for items that have k_EItemStateInstalled set
|
||||
// if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder)
|
||||
virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, STEAM_OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0;
|
||||
|
||||
// get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once
|
||||
virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0;
|
||||
|
||||
// download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed,
|
||||
// then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time.
|
||||
// If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP.
|
||||
virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0;
|
||||
|
||||
// game servers can set a specific workshop folder before issuing any UGC commands.
|
||||
// This is helpful if you want to support multiple game servers running out of the same install folder
|
||||
virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0;
|
||||
|
||||
// SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends
|
||||
virtual void SuspendDownloads( bool bSuspend ) = 0;
|
||||
|
||||
// usage tracking
|
||||
STEAM_CALL_RESULT( StartPlaytimeTrackingResult_t )
|
||||
virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0;
|
||||
STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t )
|
||||
virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0;
|
||||
STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t )
|
||||
virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0;
|
||||
|
||||
// parent-child relationship or dependency management
|
||||
STEAM_CALL_RESULT( AddUGCDependencyResult_t )
|
||||
virtual SteamAPICall_t AddDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0;
|
||||
STEAM_CALL_RESULT( RemoveUGCDependencyResult_t )
|
||||
virtual SteamAPICall_t RemoveDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0;
|
||||
|
||||
// add/remove app dependence/requirements (usually DLC)
|
||||
STEAM_CALL_RESULT( AddAppDependencyResult_t )
|
||||
virtual SteamAPICall_t AddAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0;
|
||||
STEAM_CALL_RESULT( RemoveAppDependencyResult_t )
|
||||
virtual SteamAPICall_t RemoveAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0;
|
||||
// request app dependencies. note that whatever callback you register for GetAppDependenciesResult_t may be called multiple times
|
||||
// until all app dependencies have been returned
|
||||
STEAM_CALL_RESULT( GetAppDependenciesResult_t )
|
||||
virtual SteamAPICall_t GetAppDependencies( PublishedFileId_t nPublishedFileID ) = 0;
|
||||
|
||||
// delete the item without prompting the user
|
||||
STEAM_CALL_RESULT( DeleteItemResult_t )
|
||||
virtual SteamAPICall_t DeleteItem( PublishedFileId_t nPublishedFileID ) = 0;
|
||||
|
||||
// Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not
|
||||
virtual bool ShowWorkshopEULA() = 0;
|
||||
// Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA
|
||||
STEAM_CALL_RESULT( WorkshopEULAStatus_t )
|
||||
virtual SteamAPICall_t GetWorkshopEULAStatus() = 0;
|
||||
|
||||
// Return the user's community content descriptor preferences
|
||||
virtual uint32 GetUserContentDescriptorPreferences( EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0;
|
||||
};
|
||||
|
||||
#endif // ISTEAMUGC020_H
|
|
@ -463,19 +463,6 @@ struct LeaderboardUGCSet_t
|
|||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: callback indicating that PS3 trophies have been installed
|
||||
//-----------------------------------------------------------------------------
|
||||
struct PS3TrophiesInstalled_t
|
||||
{
|
||||
enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 };
|
||||
uint64 m_nGameID; // Game these stats are for
|
||||
EResult m_eResult; // The result of the operation
|
||||
uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies
|
||||
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: callback indicating global stats have been received.
|
||||
// Returned as a result of RequestGlobalStats()
|
||||
|
|
|
@ -76,6 +76,7 @@
|
|||
#include "isteamfriends014.h"
|
||||
#include "isteamfriends015.h"
|
||||
#include "isteamfriends016.h"
|
||||
#include "isteamfriends017.h"
|
||||
#include "isteamutils.h"
|
||||
#include "isteamutils001.h"
|
||||
#include "isteamutils002.h"
|
||||
|
@ -188,6 +189,7 @@
|
|||
#include "isteamugc017.h"
|
||||
#include "isteamugc018.h"
|
||||
#include "isteamugc019.h"
|
||||
#include "isteamugc020.h"
|
||||
#include "isteamapplist.h"
|
||||
#include "isteamhtmlsurface.h"
|
||||
#include "isteamhtmlsurface001.h"
|
||||
|
@ -214,6 +216,7 @@
|
|||
#include "isteaminput005.h"
|
||||
#include "isteamremoteplay.h"
|
||||
#include "isteamremoteplay001.h"
|
||||
#include "isteamremoteplay002.h"
|
||||
#include "isteamnetworkingmessages.h"
|
||||
#include "isteamnetworkingsockets.h"
|
||||
#include "isteamnetworkingutils.h"
|
||||
|
@ -550,8 +553,8 @@ inline ESteamAPIInitResult SteamAPI_InitEx( SteamErrMsg *pOutErrMsg )
|
|||
const char *pszInternalCheckInterfaceVersions =
|
||||
STEAMUTILS_INTERFACE_VERSION "\0"
|
||||
STEAMNETWORKINGUTILS_INTERFACE_VERSION "\0"
|
||||
|
||||
STEAMAPPLIST_INTERFACE_VERSION "\0"
|
||||
|
||||
STEAMAPPLIST_INTERFACE_VERSION "\0"
|
||||
STEAMAPPS_INTERFACE_VERSION "\0"
|
||||
STEAMCONTROLLER_INTERFACE_VERSION "\0"
|
||||
STEAMFRIENDS_INTERFACE_VERSION "\0"
|
||||
|
|
|
@ -97,9 +97,10 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUser_GetDurationControl( ISteamUser*
|
|||
STEAMAPI_API steam_bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISteamUser* self, EDurationControlOnlineState eNewState );
|
||||
|
||||
// ISteamFriends
|
||||
STEAMAPI_API ISteamFriends *SteamAPI_SteamFriends_v018();
|
||||
STEAMAPI_API ISteamFriends *SteamAPI_SteamFriends_v017();
|
||||
STEAMAPI_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self );
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName );
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName ); // removed in sdk 1.62
|
||||
STEAMAPI_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState( ISteamFriends* self );
|
||||
STEAMAPI_API int SteamAPI_ISteamFriends_GetFriendCount( ISteamFriends* self, int iFriendFlags );
|
||||
STEAMAPI_API uint64_steamid SteamAPI_ISteamFriends_GetFriendByIndex( ISteamFriends* self, int iFriend, int iFriendFlags );
|
||||
|
@ -140,7 +141,7 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList( IStea
|
|||
STEAMAPI_API uint64_steamid SteamAPI_ISteamFriends_GetClanOwner( ISteamFriends* self, uint64_steamid steamIDClan );
|
||||
STEAMAPI_API int SteamAPI_ISteamFriends_GetClanOfficerCount( ISteamFriends* self, uint64_steamid steamIDClan );
|
||||
STEAMAPI_API uint64_steamid SteamAPI_ISteamFriends_GetClanOfficerByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iOfficer );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self ); // removed in sdk 1.62
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamFriends_SetRichPresence( ISteamFriends* self, const char * pchKey, const char * pchValue );
|
||||
STEAMAPI_API void SteamAPI_ISteamFriends_ClearRichPresence( ISteamFriends* self );
|
||||
STEAMAPI_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchKey );
|
||||
|
@ -705,12 +706,14 @@ STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v016();
|
|||
STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v017();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v018();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v020();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamUGC_v021();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v014();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v015();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v016();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v017();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v018();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v020();
|
||||
STEAMAPI_API ISteamUGC *SteamAPI_SteamGameServerUGC_v021();
|
||||
STEAMAPI_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage );
|
||||
STEAMAPI_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage );
|
||||
STEAMAPI_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor );
|
||||
|
@ -785,8 +788,8 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* se
|
|||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID );
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID );
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self, bool bIncludeLocallyDisabled );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries, bool bIncludeLocallyDisabled );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, PublishedFileId_t nPublishedFileID );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal );
|
||||
|
@ -805,6 +808,8 @@ STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, Publ
|
|||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self );
|
||||
STEAMAPI_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences( ISteamUGC* self, EUGCContentDescriptorID * pvecDescriptors, uint32 cMaxEntries );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_SetItemsDisabledLocally( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileIDs, uint32 unNumPublishedFileIDs, bool bDisabledLocally );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamUGC_SetSubscriptionsLoadOrder( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileIDs, uint32 unNumPublishedFileIDs );
|
||||
|
||||
// ISteamAppList
|
||||
STEAMAPI_API ISteamAppList *SteamAPI_SteamAppList_v001();
|
||||
|
@ -955,14 +960,23 @@ STEAMAPI_API steam_bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( I
|
|||
// ISteamRemotePlay
|
||||
STEAMAPI_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001();
|
||||
STEAMAPI_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v002();
|
||||
STEAMAPI_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v003();
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self );
|
||||
STEAMAPI_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex );
|
||||
STEAMAPI_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID );
|
||||
STEAMAPI_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID );
|
||||
STEAMAPI_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether( ISteamRemotePlay* self, bool bShowOverlay );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether( ISteamRemotePlay* self, bool bShowOverlay ); // removed in sdk 1.62
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_ShowRemotePlayTogetherUI( ISteamRemotePlay* self );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend );
|
||||
STEAMAPI_API steam_bool SteamAPI_ISteamRemotePlay_BEnableRemotePlayTogetherDirectInput( ISteamRemotePlay* self );
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_DisableRemotePlayTogetherDirectInput( ISteamRemotePlay* self );
|
||||
STEAMAPI_API uint32 SteamAPI_ISteamRemotePlay_GetInput( ISteamRemotePlay* self, RemotePlayInput_t * pInput, uint32 unMaxEvents );
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMouseVisibility( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, bool bVisible );
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMousePosition( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, float flNormalizedX, float flNormalizedY );
|
||||
STEAMAPI_API RemotePlayCursorID_t SteamAPI_ISteamRemotePlay_CreateMouseCursor( ISteamRemotePlay* self, int nWidth, int nHeight, int nHotX, int nHotY, const void * pBGRA, int nPitch );
|
||||
STEAMAPI_API void SteamAPI_ISteamRemotePlay_SetMouseCursor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, RemotePlayCursorID_t unCursorID );
|
||||
|
||||
// ISteamNetworkingMessages
|
||||
STEAMAPI_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_v002();
|
||||
|
|
|
@ -231,7 +231,6 @@ class ISteamScreenshots;
|
|||
class ISteamMusic;
|
||||
class ISteamMusicRemote;
|
||||
class ISteamGameServerStats;
|
||||
class ISteamPS3OverlayRender;
|
||||
class ISteamHTTP;
|
||||
class ISteamController;
|
||||
class ISteamUGC;
|
||||
|
|
Loading…
Add table
Reference in a new issue