mirror of
https://github.com/rlabrecque/SteamworksSDK.git
synced 2026-10-10 09:33:04 +08:00
v1.22
This commit is contained in:
+18
@@ -12,6 +12,24 @@ website at: http://partner.steamgames.com
|
||||
Revision History:
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
v1.22 12th December 2012
|
||||
----------------------------------------------------------------
|
||||
|
||||
Apps
|
||||
* Added new API call ISteamApps::MarkContentCorrupt() so a game can hint Steam that some of it's local content seems corrupt. Steam will verify the content next time the game is started.
|
||||
* Added new API call ISteamApps::GetCurrentBetaName() so a game can get the current content beta branch name if the user chose to opt-in to a content beta.
|
||||
|
||||
Cloud
|
||||
* Added an offset parameter to ISteamRemoteStorage::UGCRead() to allow reading files in chunks, and increased the limit from 100MB to 200MB when downloading files this way.
|
||||
|
||||
HTTP
|
||||
* Added support for streaming HTTP requests with ISteamHTTP::SendHTTPRequestAndStreamResponse() and ISteamHTTP::GetHTTPStreamingResponseBodyData()
|
||||
|
||||
Linux
|
||||
* Updated libsteam_api.so to find Steam in its new install location
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
v1.21 25th October 2012
|
||||
----------------------------------------------------------------
|
||||
|
||||
@@ -125,6 +125,8 @@ public:
|
||||
g_ulLastKeyDownTick = ulCurrentTickCount;
|
||||
if ( m_uSelectedItem < m_VecMenuItems.size() - 1 )
|
||||
m_uSelectedItem++;
|
||||
else
|
||||
m_uSelectedItem = 0;
|
||||
}
|
||||
}
|
||||
else if ( m_pGameEngine->BIsKeyDown( VK_UP ) )
|
||||
@@ -135,6 +137,8 @@ public:
|
||||
g_ulLastKeyUpTick = ulCurrentTickCount;
|
||||
if ( m_uSelectedItem > 0 )
|
||||
m_uSelectedItem--;
|
||||
else
|
||||
m_uSelectedItem = (uint32)m_VecMenuItems.size() - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,5 +26,6 @@ CMainMenu::CMainMenu( IGameEngine *pGameEngine ) : CBaseMenu<EClientGameState>(
|
||||
AddMenuItem( MenuItem_t( "Group chat room", k_EClientClanChatRoom ) );
|
||||
AddMenuItem( MenuItem_t( "Remote Storage", k_EClientRemoteStorage ) );
|
||||
AddMenuItem( MenuItem_t( "Write Minidump", k_EClientMinidump ) );
|
||||
AddMenuItem( MenuItem_t( "Web Callback", k_EClientWebCallback ) );
|
||||
AddMenuItem( MenuItem_t( "Exit Game", k_EClientGameExiting ) );
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: Class for tracking stats and achievements
|
||||
// Purpose: Class for manipulating Steam Cloud
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================
|
||||
@@ -64,7 +64,7 @@ private:
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Screen where user can enter their custom messasge
|
||||
// Purpose: Screen where user can enter their custom message
|
||||
//-----------------------------------------------------------------------------
|
||||
class CRemoteStorageScreen
|
||||
{
|
||||
|
||||
@@ -183,6 +183,7 @@ enum EClientGameState
|
||||
k_EClientAutoCreateAccount,
|
||||
k_EClientRetrySteamConnection,
|
||||
k_EClientClanChatRoom,
|
||||
k_EClientWebCallback,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,13 @@
|
||||
#include "p2pauth.h"
|
||||
#include "voicechat.h"
|
||||
#include "steam/steamencryptedappticket.h"
|
||||
#ifdef WIN32
|
||||
#include <direct.h>
|
||||
#else
|
||||
#define MAX_PATH PATH_MAX
|
||||
#define _getcwd getcwd
|
||||
#endif
|
||||
|
||||
|
||||
CSpaceWarClient *g_pSpaceWarClient = NULL;
|
||||
CSpaceWarClient* SpaceWarClient() { return g_pSpaceWarClient; }
|
||||
@@ -42,7 +49,8 @@ CSpaceWarClient::CSpaceWarClient( IGameEngine *pGameEngine ) :
|
||||
m_SteamServersDisconnected( this, &CSpaceWarClient::OnSteamServersDisconnected ),
|
||||
m_SteamServerConnectFailure( this, &CSpaceWarClient::OnSteamServerConnectFailure ),
|
||||
m_GameJoinRequested( this, &CSpaceWarClient::OnGameJoinRequested ),
|
||||
m_CallbackGameOverlayActivated( this, &CSpaceWarClient::OnGameOverlayActivated )
|
||||
m_CallbackGameOverlayActivated( this, &CSpaceWarClient::OnGameOverlayActivated ),
|
||||
m_CallbackGameWebCallback( this, &CSpaceWarClient::OnGameWebCallback )
|
||||
{
|
||||
Init( pGameEngine );
|
||||
}
|
||||
@@ -84,6 +92,7 @@ void CSpaceWarClient::Init( IGameEngine *pGameEngine )
|
||||
m_unServerIP = 0;
|
||||
m_usServerPort = 0;
|
||||
m_ulPingSentTime = 0;
|
||||
m_bSentWebOpen = false;
|
||||
|
||||
for( uint32 i = 0; i < MAX_PLAYERS_PER_SERVER; ++i )
|
||||
{
|
||||
@@ -682,6 +691,7 @@ void CSpaceWarClient::ReceiveNetworkData()
|
||||
uint64 ulTimePassedMS = m_pGameEngine->GetGameTickCount() - m_ulPingSentTime;
|
||||
char rgchT[256];
|
||||
_snprintf( rgchT, sizeof(rgchT), "Round-trip ping time to server %d ms\n", (int)ulTimePassedMS );
|
||||
rgchT[ sizeof(rgchT) - 1 ] = 0;
|
||||
OutputDebugString( rgchT );
|
||||
m_ulPingSentTime = 0;
|
||||
}
|
||||
@@ -1055,6 +1065,20 @@ void CSpaceWarClient::OnGameOverlayActivated( GameOverlayActivated_t *callback )
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handle the callback from the user clicking a steam://gamewebcallback/ link in the overlay browser
|
||||
// You can use this to add support for external site signups where you want to pop back into the browser
|
||||
// after some web page signup sequence, and optionally get back some detail about that.
|
||||
//-----------------------------------------------------------------------------
|
||||
void CSpaceWarClient::OnGameWebCallback( GameWebCallback_t *callback )
|
||||
{
|
||||
m_bSentWebOpen = false;
|
||||
char rgchString[256];
|
||||
_snprintf( rgchString, sizeof(rgchString), "User submitted following url: %s\n", callback->m_szURL );
|
||||
OutputDebugString( rgchString );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Handles notification that we are failed to connected to Steam
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -1345,6 +1369,22 @@ void CSpaceWarClient::RunFrame()
|
||||
DisconnectFromServer();
|
||||
m_pGameEngine->Shutdown();
|
||||
return;
|
||||
case k_EClientWebCallback:
|
||||
m_pStarField->Render();
|
||||
|
||||
if ( !m_bSentWebOpen )
|
||||
{
|
||||
m_bSentWebOpen = true;
|
||||
char szCurDir[MAX_PATH];
|
||||
_getcwd( szCurDir, sizeof(szCurDir) );
|
||||
char szURL[MAX_PATH];
|
||||
_snprintf( szURL, sizeof(szURL), "file:///%s/test.html", szCurDir );
|
||||
// load the test html page, it just has a steam://gamewebcallback link in it
|
||||
SteamFriends()->ActivateGameOverlayToWebPage( szURL );
|
||||
SetGameState( k_EClientGameMenu );
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
OutputDebugString( "Unhandled game state in CSpaceWar::RunFrame\n" );
|
||||
}
|
||||
|
||||
@@ -267,6 +267,9 @@ private:
|
||||
uint16 m_usServerPort;
|
||||
HAuthTicket m_hAuthTicket;
|
||||
|
||||
// keep track of if we opened the overlay for a gamewebcallback
|
||||
bool m_bSentWebOpen;
|
||||
|
||||
// simple class to marshal callbacks from pinging a game server
|
||||
class CGameServerPing : public ISteamMatchmakingPingResponse
|
||||
{
|
||||
@@ -365,6 +368,9 @@ private:
|
||||
STEAM_CALLBACK( CSpaceWarClient, OnSteamServerConnectFailure, SteamServerConnectFailure_t, m_SteamServerConnectFailure );
|
||||
STEAM_CALLBACK( CSpaceWarClient, OnGameOverlayActivated, GameOverlayActivated_t, m_CallbackGameOverlayActivated );
|
||||
|
||||
// callback when getting the results of a web call
|
||||
STEAM_CALLBACK( CSpaceWarClient, OnGameWebCallback, GameWebCallback_t, m_CallbackGameWebCallback );
|
||||
|
||||
// lobby browser menu
|
||||
CLobbyBrowser *m_pLobbyBrowser;
|
||||
|
||||
|
||||
@@ -621,6 +621,7 @@ void CSpaceWarServer::ReceiveNetworkData()
|
||||
default:
|
||||
char rgch[128];
|
||||
_snprintf( rgch, 128, "Invalid message %x\n", eMsg );
|
||||
rgch[ sizeof(rgch) - 1 ] = 0;
|
||||
OutputDebugString( rgch );
|
||||
}
|
||||
}
|
||||
@@ -887,6 +888,7 @@ void CSpaceWarServer::OnPolicyResponse( GSPolicyResponse_t *pPolicyResponse )
|
||||
}
|
||||
char rgch[128];
|
||||
_snprintf( rgch, 128, "Game server SteamID: %llu\n", SteamGameServer()->GetSteamID().ConvertToUint64() );
|
||||
rgch[ sizeof(rgch) - 1 ] = 0;
|
||||
OutputDebugString( rgch );
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -324,7 +324,8 @@ void CStatsAndAchievements::OnUserStatsReceived( UserStatsReceived_t *pCallback
|
||||
else
|
||||
{
|
||||
char buffer[128];
|
||||
_snprintf( buffer, 128, "RequestStats - failed, %d\n", pCallback->m_eResult );
|
||||
_snprintf( buffer, sizeof(buffer), "RequestStats - failed, %d\n", pCallback->m_eResult );
|
||||
buffer[ sizeof(buffer) - 1 ] = 0;
|
||||
OutputDebugString( buffer );
|
||||
}
|
||||
}
|
||||
@@ -358,7 +359,8 @@ void CStatsAndAchievements::OnUserStatsStored( UserStatsStored_t *pCallback )
|
||||
else
|
||||
{
|
||||
char buffer[128];
|
||||
_snprintf( buffer, 128, "StoreStats - failed, %d\n", pCallback->m_eResult );
|
||||
_snprintf( buffer, sizeof(buffer), "StoreStats - failed, %d\n", pCallback->m_eResult );
|
||||
buffer[ sizeof(buffer) - 1 ] = 0;
|
||||
OutputDebugString( buffer );
|
||||
}
|
||||
}
|
||||
@@ -375,14 +377,16 @@ void CStatsAndAchievements::OnAchievementStored( UserAchievementStored_t *pCallb
|
||||
if ( 0 == pCallback->m_nMaxProgress )
|
||||
{
|
||||
char buffer[128];
|
||||
_snprintf( buffer, 128, "Achievement '%s' unlocked!", pCallback->m_rgchAchievementName );
|
||||
_snprintf( buffer, sizeof(buffer), "Achievement '%s' unlocked!", pCallback->m_rgchAchievementName );
|
||||
buffer[ sizeof(buffer) - 1 ] = 0;
|
||||
OutputDebugString( buffer );
|
||||
}
|
||||
else
|
||||
{
|
||||
char buffer[128];
|
||||
_snprintf( buffer, 128, "Achievement '%s' progress callback, (%d,%d)\n",
|
||||
_snprintf( buffer, sizeof(buffer), "Achievement '%s' progress callback, (%d,%d)\n",
|
||||
pCallback->m_rgchAchievementName, pCallback->m_nCurProgress, pCallback->m_nMaxProgress );
|
||||
buffer[ sizeof(buffer) - 1 ] = 0;
|
||||
OutputDebugString( buffer );
|
||||
}
|
||||
}
|
||||
@@ -407,6 +411,7 @@ void CStatsAndAchievements::OnPS3TrophiesInstalled( PS3TrophiesInstalled_t *pCal
|
||||
else
|
||||
_snprintf( buffer, 256, "Failed to install PS3 trophies (%d)", pCallback->m_eResult );
|
||||
|
||||
buffer[ sizeof(buffer) - 1 ] = 0;
|
||||
OutputDebugString( buffer );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -57,6 +57,9 @@ public:
|
||||
// the key is available (which may be immediately).
|
||||
virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0;
|
||||
|
||||
virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch
|
||||
virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing
|
||||
|
||||
#ifdef _PS3
|
||||
// Result returned in a RegisterActivationCodeResponse_t callresult
|
||||
virtual SteamAPICall_t RegisterActivationCode( const char *pchActivationCode ) = 0;
|
||||
|
||||
@@ -55,6 +55,11 @@ public:
|
||||
// header and only do a local cache lookup rather than sending any actual remote request.
|
||||
virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0;
|
||||
|
||||
// Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on
|
||||
// asyncronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and
|
||||
// HTTPRequestDataReceived_t callbacks while streaming.
|
||||
virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0;
|
||||
|
||||
// Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move
|
||||
// the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent.
|
||||
virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0;
|
||||
@@ -78,10 +83,15 @@ public:
|
||||
virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0;
|
||||
|
||||
// Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the
|
||||
// handle is invalid or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out
|
||||
// handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out
|
||||
// the correct buffer size to use.
|
||||
virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0;
|
||||
|
||||
// Gets the body data from a streaming HTTP response given a handle from HTTPRequestCompleted_t. Will return false if the
|
||||
// handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset
|
||||
// do not match the size and offset sent in HTTPRequestDataReceived_t.
|
||||
virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0;
|
||||
|
||||
// Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t
|
||||
// callback and finishing using the response.
|
||||
virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0;
|
||||
@@ -97,7 +107,7 @@ public:
|
||||
virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION001"
|
||||
#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION002"
|
||||
|
||||
// callbacks
|
||||
#pragma pack( push, 8 )
|
||||
@@ -122,6 +132,39 @@ struct HTTPRequestCompleted_t
|
||||
EHTTPStatusCode m_eStatusCode;
|
||||
};
|
||||
|
||||
|
||||
struct HTTPRequestHeadersReceived_t
|
||||
{
|
||||
enum { k_iCallback = k_iClientHTTPCallbacks + 2 };
|
||||
|
||||
// Handle value for the request that has received headers.
|
||||
HTTPRequestHandle m_hRequest;
|
||||
|
||||
// Context value that the user defined on the request that this callback is associated with, 0 if
|
||||
// no context value was set.
|
||||
uint64 m_ulContextValue;
|
||||
};
|
||||
|
||||
struct HTTPRequestDataReceived_t
|
||||
{
|
||||
enum { k_iCallback = k_iClientHTTPCallbacks + 3 };
|
||||
|
||||
// Handle value for the request that has received data.
|
||||
HTTPRequestHandle m_hRequest;
|
||||
|
||||
// Context value that the user defined on the request that this callback is associated with, 0 if
|
||||
// no context value was set.
|
||||
uint64 m_ulContextValue;
|
||||
|
||||
|
||||
// Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data
|
||||
uint32 m_cOffset;
|
||||
|
||||
// Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data
|
||||
uint32 m_cBytesReceived;
|
||||
};
|
||||
|
||||
|
||||
#pragma pack( pop )
|
||||
|
||||
#endif // ISTEAMHTTP_H
|
||||
@@ -398,16 +398,74 @@ public:
|
||||
// RefreshComplete callback is not posted when request is released.
|
||||
virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0;
|
||||
|
||||
/* the filters that are available in the ppchFilters params are:
|
||||
/* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these:
|
||||
|
||||
"map" - map the server is running, as set in the dedicated server api
|
||||
"dedicated" - reports bDedicated from the API
|
||||
"secure" - VAC-enabled
|
||||
"full" - not full
|
||||
"empty" - not empty
|
||||
"noplayers" - is empty
|
||||
"proxy" - a relay server
|
||||
"map"
|
||||
- Server passes the filter if the server is playing the specified map.
|
||||
"gamedataand"
|
||||
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the
|
||||
specified strings. The value field is a comma-delimited list of strings to match.
|
||||
"gamedataor"
|
||||
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the
|
||||
specified strings. The value field is a comma-delimited list of strings to match.
|
||||
"gamedatanor"
|
||||
- Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any
|
||||
of the specified strings. The value field is a comma-delimited list of strings to check.
|
||||
"gametagsand"
|
||||
- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all
|
||||
of the specified strings. The value field is a comma-delimited list of strings to check.
|
||||
"gametagsnor"
|
||||
- Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any
|
||||
of the specified strings. The value field is a comma-delimited list of strings to check.
|
||||
"and" (x1 && x2 && ... && xn)
|
||||
"or" (x1 || x2 || ... || xn)
|
||||
"nand" !(x1 && x2 && ... && xn)
|
||||
"nor" !(x1 || x2 || ... || xn)
|
||||
- Performs Boolean operation on the following filters. The operand to this filter specifies
|
||||
the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue
|
||||
pairs must immediately follow, i.e. this is a prefix logical operator notation.)
|
||||
In the simplest case where Boolean expressions are not nested, this is simply
|
||||
the number of operands.
|
||||
|
||||
For example, to match servers on a particular map or with a particular tag, would would
|
||||
use these filters.
|
||||
|
||||
( server.map == "cp_dustbowl" || server.gametags.contains("payload") )
|
||||
"or", "2"
|
||||
"map", "cp_dustbowl"
|
||||
"gametagsand", "payload"
|
||||
|
||||
If logical inputs are nested, then the operand specifies the size of the entire
|
||||
"length" of its operands, not the number of immediate children.
|
||||
|
||||
( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) )
|
||||
"or", "4"
|
||||
"map", "cp_dustbowl"
|
||||
"and", "2"
|
||||
"gametagsand", "payload"
|
||||
"gametagsnor", "payloadrace"
|
||||
|
||||
Unary NOT can be achieved using either "nand" or "nor" with a single operand.
|
||||
|
||||
"addr"
|
||||
- Server passes the filter if the server's query address matches the specified IP or IP:port.
|
||||
"gameaddr"
|
||||
- Server passes the filter if the server's game address matches the specified IP or IP:port.
|
||||
|
||||
The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t
|
||||
|
||||
"dedicated"
|
||||
- Server passes the filter if it passed true to SetDedicatedServer.
|
||||
"secure"
|
||||
- Server passes the filter if the server is VAC-enabled.
|
||||
"notfull"
|
||||
- Server passes the filter if the player count is less than the reported max player count.
|
||||
"hasplayers"
|
||||
- Server passes the filter if the player count is greater than zero.
|
||||
"noplayers"
|
||||
- Server passes the filter if it doesn't have any players.
|
||||
"linux"
|
||||
- Server passes the filter if it's a linux server
|
||||
*/
|
||||
|
||||
// Get details on a given server in the list, you can get the valid range of index
|
||||
|
||||
@@ -79,12 +79,21 @@ enum ERemoteStoragePublishedFileVisibility
|
||||
|
||||
enum EWorkshopFileType
|
||||
{
|
||||
k_EWorkshopFileTypeFirst = 0,
|
||||
|
||||
k_EWorkshopFileTypeCommunity = 0,
|
||||
k_EWorkshopFileTypeMicrotransaction = 1,
|
||||
k_EWorkshopFileTypeCollection = 2,
|
||||
k_EWorkshopFileTypeArt = 3,
|
||||
k_EWorkshopFileTypeVideo = 4,
|
||||
k_EWorkshopFileTypeScreenshot = 5,
|
||||
k_EWorkshopFileTypeGame = 6,
|
||||
k_EWorkshopFileTypeSoftware = 7,
|
||||
k_EWorkshopFileTypeConcept = 8,
|
||||
|
||||
// Update k_EWorkshopFileTypeMax if you add values
|
||||
k_EWorkshopFileTypeMax = 9
|
||||
|
||||
};
|
||||
|
||||
enum EWorkshopVote
|
||||
@@ -111,13 +120,6 @@ enum EWorkshopEnumerationType
|
||||
k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6,
|
||||
};
|
||||
|
||||
enum EWorkshopActionOnDuplicateTitle
|
||||
{
|
||||
k_EWorkshopActionOnDuplicateTitleReject = 0,
|
||||
k_EWorkshopActionOnDuplicateTitleUpdate = 1,
|
||||
k_EWorkshopActionOnDuplicateTitleNew = 2,
|
||||
};
|
||||
|
||||
enum EWorkshopVideoProvider
|
||||
{
|
||||
k_EWorkshopVideoProviderNone = 0,
|
||||
@@ -171,8 +173,10 @@ class ISteamRemoteStorage
|
||||
|
||||
// user generated content
|
||||
|
||||
// Downloads a UGC file
|
||||
virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent ) = 0;
|
||||
// Downloads a UGC file. A priority value of 0 will download the file immediately,
|
||||
// otherwise it will wait to download the file until all downloads with a lower priority
|
||||
// value are completed. Downloads with equal priority will occur simultaneously.
|
||||
virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0;
|
||||
|
||||
// Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false
|
||||
// or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage
|
||||
@@ -182,7 +186,7 @@ class ISteamRemoteStorage
|
||||
virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, char **ppchName, int32 *pnFileSizeInBytes, CSteamID *pSteamIDOwner ) = 0;
|
||||
|
||||
// After download, gets the content of the file
|
||||
virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead ) = 0;
|
||||
virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset ) = 0;
|
||||
|
||||
// Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead()
|
||||
virtual int32 GetCachedUGCCount() = 0;
|
||||
@@ -235,7 +239,7 @@ class ISteamRemoteStorage
|
||||
virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION008"
|
||||
#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION010"
|
||||
|
||||
|
||||
// callbacks
|
||||
|
||||
@@ -311,6 +311,17 @@ struct GetAuthSessionTicketResponse_t
|
||||
EResult m_eResult;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: sent to your game in response to a steam://gamewebcallback/ command
|
||||
//-----------------------------------------------------------------------------
|
||||
struct GameWebCallback_t
|
||||
{
|
||||
enum { k_iCallback = k_iSteamUserCallbacks + 64 };
|
||||
char m_szURL[256];
|
||||
};
|
||||
|
||||
|
||||
#pragma pack( pop )
|
||||
|
||||
#endif // ISTEAMUSER_H
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -32,6 +32,11 @@ const int k_cbMaxGameServerName = 64;
|
||||
const int k_cbMaxGameServerTags = 128;
|
||||
const int k_cbMaxGameServerGameData = 2048;
|
||||
|
||||
/// Store key/value pair used in matchmaking queries.
|
||||
///
|
||||
/// Actually, the name Key/Value is a bit misleading. The "key" is better
|
||||
/// understood as "filter operation code" and the "value" is the operand to this
|
||||
/// filter operation. The meaning of the operand depends upon the filter.
|
||||
struct MatchMakingKeyValuePair_t
|
||||
{
|
||||
MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; }
|
||||
|
||||
@@ -100,6 +100,8 @@ enum EResult
|
||||
k_EResultAccountLockedDown = 73,
|
||||
k_EResultAccountLogonDeniedVerifiedEmailRequired = 74,
|
||||
k_EResultNoMatchingURL = 75,
|
||||
k_EResultBadResponse = 76, // parse failure, missing field, etc.
|
||||
k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password
|
||||
};
|
||||
|
||||
// Error codes for use with the voice functions
|
||||
@@ -231,6 +233,26 @@ enum EAppOwernshipFlags
|
||||
k_EAppOwernshipFlags_FreeLicense = 2, // not paid for game
|
||||
k_EAppOwernshipFlags_RegionRestricted = 4, // owns app, but not allowed to play in current region
|
||||
k_EAppOwernshipFlags_LowViolence = 8, // only low violence version
|
||||
k_EAppOwernshipFlags_InvalidPlatform = 16, // app not supported on current platform
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: designed as flags to allow filters masks
|
||||
//-----------------------------------------------------------------------------
|
||||
enum EAppType
|
||||
{
|
||||
k_EAppType_Invalid = 0x000, // unknown / invalid
|
||||
k_EAppType_Game = 0x001, // playable game, default type
|
||||
k_EAppType_Application = 0x002, // software application
|
||||
k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers
|
||||
k_EAppType_Demo = 0x008, // game demo
|
||||
k_EAppType_Media = 0x010, // media trailer
|
||||
k_EAppType_DLC = 0x020, // down loadable content
|
||||
k_EAppType_Guide = 0x040, // game guide, PDF etc
|
||||
|
||||
k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only
|
||||
k_EAppType_DepotOnly = 0x80000000, // placeholder since depots and apps share the same namespace
|
||||
};
|
||||
|
||||
|
||||
@@ -266,6 +288,11 @@ enum EChatEntryType
|
||||
//k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead)
|
||||
k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window )
|
||||
// Above are previous FriendMsgType entries, now merged into more generic chat entry types
|
||||
k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat)
|
||||
k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick)
|
||||
k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban)
|
||||
k_EChatEntryTypeDisconnected = 10, // user disconnected
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ enum EHTTPMethod
|
||||
// a compliant general purpose server. We'll likely add more as we find uses for them.
|
||||
|
||||
// k_EHTTPMethodOPTIONS,
|
||||
// k_EHTTPMethodPUT,
|
||||
// k_EHTTPMethodDELETE,
|
||||
k_EHTTPMethodPUT,
|
||||
k_EHTTPMethodDELETE,
|
||||
// k_EHTTPMethodTRACE,
|
||||
// k_EHTTPMethodCONNECT
|
||||
};
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user