mirror of
https://github.com/rlabrecque/SteamworksSDK.git
synced 2026-10-10 09:33:04 +08:00
v1.06
This commit is contained in:
+26
@@ -11,6 +11,32 @@ website at: http://partner.steamgames.com
|
||||
|
||||
Revision History:
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
v1.06 30th September 2009
|
||||
----------------------------------------------------------------
|
||||
|
||||
Voice
|
||||
* ISteamUser::GetCompressedVoice() has been replaced with ISteamUser::GetVoice which can be used to retrieve compressed and uncompressed voice data
|
||||
* Added ISteamUser::GetAvailableVoice() to retrieve the amount of captured audio data that is available
|
||||
|
||||
Matchmaking
|
||||
* Added a new callback LobbyKicked_t that is sent when a user has been disconnected from a lobby
|
||||
* Through ISteamMatchmakingServers, multiple server list requests of the same type can now be outstanding at the same time
|
||||
|
||||
Steamworks Setup Application:
|
||||
* Streamlined configuration process
|
||||
* Now supports EULAs greater than 32k bytes
|
||||
|
||||
Content Tool
|
||||
* Added DLC checkbox to depot creation wizard
|
||||
|
||||
Other
|
||||
* Added SteamAPI_IsSteamRunning()
|
||||
* Added SteamAPI_RestartApp() so CEG users can restart their game through Steam if launched through Windows Games Explorer
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
v1.05 11th June 2009
|
||||
----------------------------------------------------------------
|
||||
|
||||
@@ -54,12 +54,22 @@ int APIENTRY RealMain(HINSTANCE hInstance,
|
||||
LPSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
/*
|
||||
if ( !SteamAPI_IsSteamRunning() )
|
||||
{
|
||||
// if Steam is not running, SteamAPI_RestartApp starts the local Steam client and also launches this game again
|
||||
// Once you get a public Steam AppID assigned for this game, you need to replace k_uAppIdInvalid with it.
|
||||
SteamAPI_RestartApp( k_uAppIdInvalid );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
*/
|
||||
|
||||
// Init Steam CEG
|
||||
if ( !Steamworks_InitCEGLibrary() )
|
||||
{
|
||||
OutputDebugString( "Steamworks_InitCEGLibrary() failed\n" );
|
||||
::MessageBox( NULL, "Steam must be running to play this game (InitDrmLibrary() failed).\n", "Fatal Error", MB_OK );
|
||||
return -1;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Initialize SteamAPI, if this fails we bail out since we depend on Steam for lots of stuff.
|
||||
@@ -73,7 +83,7 @@ int APIENTRY RealMain(HINSTANCE hInstance,
|
||||
{
|
||||
OutputDebugString( "SteamAPI_Init() failed\n" );
|
||||
::MessageBox( NULL, "Steam must be running to play this game (SteamAPI_Init() failed).\n", "Fatal Error", MB_OK );
|
||||
return -1;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// set our debug handler
|
||||
@@ -231,7 +241,7 @@ int APIENTRY RealMain(HINSTANCE hInstance,
|
||||
Steamworks_TermCEGLibrary();
|
||||
|
||||
// exit
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -42,10 +42,9 @@ CServerBrowser::CServerBrowser( CGameEngine *pGameEngine )
|
||||
m_pGameEngine = pGameEngine;
|
||||
m_nServers = 0;
|
||||
m_bRequestingServers = false;
|
||||
m_ServerType = eInternetServer;
|
||||
m_hServerListRequest = NULL;
|
||||
m_pMenu->Rebuild( m_ListGameServers, m_bRequestingServers );
|
||||
m_pMenu->SetHeading( "Internet Server browser" );
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +53,12 @@ CServerBrowser::CServerBrowser( CGameEngine *pGameEngine )
|
||||
//-----------------------------------------------------------------------------
|
||||
CServerBrowser::~CServerBrowser()
|
||||
{
|
||||
if ( m_hServerListRequest )
|
||||
{
|
||||
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
|
||||
m_hServerListRequest = NULL;
|
||||
}
|
||||
|
||||
if ( m_pMenu )
|
||||
delete m_pMenu;
|
||||
// ...
|
||||
@@ -69,10 +74,16 @@ void CServerBrowser::RefreshInternetServers()
|
||||
if ( m_bRequestingServers )
|
||||
return;
|
||||
|
||||
// If another request is outstanding, make sure we release it properly
|
||||
if ( m_hServerListRequest )
|
||||
{
|
||||
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
|
||||
m_hServerListRequest = NULL;
|
||||
}
|
||||
|
||||
OutputDebugString( "Refreshing internet servers\n" );
|
||||
// Track that we are now in a refresh, what type of refresh, and reset our server count
|
||||
m_bRequestingServers = true;
|
||||
m_ServerType = eInternetServer;
|
||||
m_nServers = 0;
|
||||
m_ListGameServers.clear();
|
||||
m_pMenu->SetHeading( "Internet Server browser" );
|
||||
@@ -101,7 +112,7 @@ void CServerBrowser::RefreshInternetServers()
|
||||
|
||||
// bugbug jmccaskey - passing just the appid without filters results in getting all servers rather than
|
||||
// servers filtered by appid alone. So, we'll use the filters to filter the results better.
|
||||
SteamMatchmakingServers()->RequestInternetServerList( SteamUtils()->GetAppID(), &pFilter, ARRAYSIZE(pFilters), this );
|
||||
m_hServerListRequest = SteamMatchmakingServers()->RequestInternetServerList( SteamUtils()->GetAppID(), &pFilter, ARRAYSIZE(pFilters), this );
|
||||
}
|
||||
|
||||
|
||||
@@ -114,10 +125,16 @@ void CServerBrowser::RefreshLANServers()
|
||||
if ( m_bRequestingServers )
|
||||
return;
|
||||
|
||||
OutputDebugString( "Refreshing internet servers\n" );
|
||||
// If another request is outstanding, make sure we release it properly
|
||||
if ( m_hServerListRequest )
|
||||
{
|
||||
SteamMatchmakingServers()->ReleaseRequest( m_hServerListRequest );
|
||||
m_hServerListRequest = NULL;
|
||||
}
|
||||
|
||||
OutputDebugString( "Refreshing LAN servers\n" );
|
||||
// Track that we are now in a refresh, what type of refresh, and reset our server count
|
||||
m_bRequestingServers = true;
|
||||
m_ServerType = eLANServer;
|
||||
m_nServers = 0;
|
||||
m_ListGameServers.clear();
|
||||
m_pMenu->SetHeading( "LAN Server browser" );
|
||||
@@ -125,16 +142,18 @@ void CServerBrowser::RefreshLANServers()
|
||||
m_pMenu->Rebuild( m_ListGameServers, m_bRequestingServers );
|
||||
|
||||
// LAN refresh doesn't accept filters like internet above does
|
||||
SteamMatchmakingServers()->RequestLANServerList( SteamUtils()->GetAppID(), this );
|
||||
m_hServerListRequest = SteamMatchmakingServers()->RequestLANServerList( SteamUtils()->GetAppID(), this );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Callback from Steam telling us about a server that has responded
|
||||
//-----------------------------------------------------------------------------
|
||||
void CServerBrowser::ServerResponded( int iServer )
|
||||
void CServerBrowser::ServerResponded( HServerListRequest hReq, int iServer )
|
||||
{
|
||||
gameserveritem_t *pServer = SteamMatchmakingServers()->GetServerDetails( m_ServerType, iServer );
|
||||
// Assert( hReq == m_hServerListRequest );
|
||||
|
||||
gameserveritem_t *pServer = SteamMatchmakingServers()->GetServerDetails( hReq, iServer );
|
||||
if ( pServer )
|
||||
{
|
||||
// Filter out servers that don't match our appid here (might get these in LAN calls since we can't put more filters on it)
|
||||
@@ -153,8 +172,10 @@ void CServerBrowser::ServerResponded( int iServer )
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Callback from Steam telling us about a server that has failed to respond
|
||||
//-----------------------------------------------------------------------------
|
||||
void CServerBrowser::ServerFailedToRespond( int iServer )
|
||||
void CServerBrowser::ServerFailedToRespond( HServerListRequest hReq, int iServer )
|
||||
{
|
||||
// Assert( hReq == m_hServerListRequest );
|
||||
|
||||
// bugbug jmccaskey - why would we ever need this? Remove servers from our list I guess?
|
||||
}
|
||||
|
||||
@@ -162,10 +183,12 @@ void CServerBrowser::ServerFailedToRespond( int iServer )
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Callback from Steam telling us a refresh is complete
|
||||
//-----------------------------------------------------------------------------
|
||||
void CServerBrowser::RefreshComplete( EMatchMakingServerResponse response )
|
||||
void CServerBrowser::RefreshComplete( HServerListRequest hReq, EMatchMakingServerResponse response )
|
||||
{
|
||||
// Assert( hReq == m_hServerListRequest );
|
||||
|
||||
// Doesn't really matter to us whether the response tells us the refresh succeeded or failed,
|
||||
// we just rack whether we are done refreshing or not
|
||||
// we just track whether we are done refreshing or not
|
||||
m_bRequestingServers = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -66,9 +66,9 @@ public:
|
||||
void RunFrame();
|
||||
|
||||
// ISteamMatchmakingServerListResponse
|
||||
void ServerResponded( int iServer );
|
||||
void ServerFailedToRespond( int iServer );
|
||||
void RefreshComplete( EMatchMakingServerResponse response );
|
||||
void ServerResponded( HServerListRequest hReq, int iServer );
|
||||
void ServerFailedToRespond( HServerListRequest hReq, int iServer );
|
||||
void RefreshComplete( HServerListRequest hReq, EMatchMakingServerResponse response );
|
||||
|
||||
private:
|
||||
|
||||
@@ -81,8 +81,8 @@ private:
|
||||
// Track whether we are in the middle of a refresh or not
|
||||
bool m_bRequestingServers;
|
||||
|
||||
// Track what type of servers we are currently displaying
|
||||
EMatchMakingType m_ServerType;
|
||||
// Track what server list request is currently running
|
||||
HServerListRequest m_hServerListRequest;
|
||||
|
||||
// Menu object
|
||||
CServerBrowserMenu *m_pMenu;
|
||||
|
||||
Binary file not shown.
@@ -146,6 +146,7 @@ enum { k_iClientRemoteStorageCallbacks = 1300 };
|
||||
enum { k_iSteamUserItemsCallbacks = 1400 };
|
||||
enum { k_iSteamGameServerItemsCallbacks = 1500 };
|
||||
enum { k_iClientUtilsCallbacks = 1600 };
|
||||
enum { k_iSteamGameCoordinatorCallbacks = 1700 };
|
||||
|
||||
|
||||
#endif // ISTEAMCLIENT_H
|
||||
|
||||
@@ -237,6 +237,11 @@ public:
|
||||
// large size of server lists.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Typedef for handle type you will receive when requesting server list.
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef void* HServerListRequest;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Callback interface for receiving responses after a server list refresh
|
||||
// or an individual server update.
|
||||
@@ -251,13 +256,13 @@ class ISteamMatchmakingServerListResponse
|
||||
{
|
||||
public:
|
||||
// Server has responded ok with updated data
|
||||
virtual void ServerResponded( int iServer ) = 0;
|
||||
virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0;
|
||||
|
||||
// Server has failed to respond
|
||||
virtual void ServerFailedToRespond( int iServer ) = 0;
|
||||
virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0;
|
||||
|
||||
// A list refresh you had initiated is now 100% completed
|
||||
virtual void RefreshComplete( EMatchMakingServerResponse response ) = 0;
|
||||
virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -349,12 +354,18 @@ class ISteamMatchmakingServers
|
||||
{
|
||||
public:
|
||||
// Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values.
|
||||
virtual void RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual void RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual void RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual void RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual void RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual void RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
// Each call allocates a new asynchronous request object.
|
||||
// Request object must be released by calling ReleaseRequest( hServerListRequest )
|
||||
virtual HServerListRequest RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0;
|
||||
|
||||
// Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress.
|
||||
// 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:
|
||||
|
||||
@@ -371,25 +382,31 @@ public:
|
||||
// Get details on a given server in the list, you can get the valid range of index
|
||||
// values by calling GetServerCount(). You will also receive index values in
|
||||
// ISteamMatchmakingServerListResponse::ServerResponded() callbacks
|
||||
virtual gameserveritem_t *GetServerDetails( EMatchMakingType eType, int iServer ) = 0;
|
||||
virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0;
|
||||
|
||||
// Cancel an request which is operation on the given list type. You should call this to cancel
|
||||
// any in-progress requests before destructing a callback object that may have been passed
|
||||
// to one of the above list request calls. Not doing so may result in a crash when a callback
|
||||
// occurs on the destructed object.
|
||||
virtual void CancelQuery( EMatchMakingType eType ) = 0;
|
||||
// Canceling a query does not release the allocated request handle.
|
||||
// The request handle must be released using ReleaseRequest( hRequest )
|
||||
virtual void CancelQuery( HServerListRequest hRequest ) = 0;
|
||||
|
||||
// Ping every server in your list again but don't update the list of servers
|
||||
virtual void RefreshQuery( EMatchMakingType eType ) = 0;
|
||||
// Query callback installed when the server list was requested will be used
|
||||
// again to post notifications and RefreshComplete, so the callback must remain
|
||||
// valid until another RefreshComplete is called on it or the request
|
||||
// is released with ReleaseRequest( hRequest )
|
||||
virtual void RefreshQuery( HServerListRequest hRequest ) = 0;
|
||||
|
||||
// Returns true if the list is currently refreshing its server list
|
||||
virtual bool IsRefreshing( EMatchMakingType eType ) = 0;
|
||||
virtual bool IsRefreshing( HServerListRequest hRequest ) = 0;
|
||||
|
||||
// How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1
|
||||
virtual int GetServerCount( EMatchMakingType eType ) = 0;
|
||||
virtual int GetServerCount( HServerListRequest hRequest ) = 0;
|
||||
|
||||
// Refresh a single server inside of a query (rather than all the servers )
|
||||
virtual void RefreshServer( EMatchMakingType eType, int iServer ) = 0;
|
||||
virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -410,7 +427,7 @@ public:
|
||||
// to one of the above calls to avoid crashing when callbacks occur.
|
||||
virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0;
|
||||
};
|
||||
#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers001"
|
||||
#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002"
|
||||
|
||||
// game server flags
|
||||
const uint32 k_unFavoriteFlagNone = 0x00;
|
||||
@@ -560,6 +577,19 @@ struct LobbyMatchList_t
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: posted if a user is forcefully removed from a lobby
|
||||
// can occur if a user loses connection to Steam
|
||||
//-----------------------------------------------------------------------------
|
||||
struct LobbyKicked_t
|
||||
{
|
||||
enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 };
|
||||
uint64 m_ulSteamIDLobby; // Lobby
|
||||
uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself
|
||||
uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true)
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Result of our request to create a Lobby
|
||||
// m_eResult == k_EResultOK on success
|
||||
@@ -580,10 +610,10 @@ struct LobbyCreated_t
|
||||
uint64 m_ulSteamIDLobby; // chat room, zero if failed
|
||||
};
|
||||
|
||||
|
||||
// used by now obsolete RequestFriendsLobbiesResponse_t
|
||||
// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 };
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // ISTEAMMATCHMAKING
|
||||
|
||||
+25
-11
@@ -75,21 +75,37 @@ public:
|
||||
// this will usually be something like "C:\Progam Files\Steam\userdata\<SteamID>\<AppID>\local"
|
||||
virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0;
|
||||
|
||||
// Starts voice recording. Once started, use GetCompressedVoice() to get the data
|
||||
// Starts voice recording. Once started, use GetVoice() to get the data
|
||||
virtual void StartVoiceRecording( ) = 0;
|
||||
|
||||
// Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for
|
||||
// a little bit after this function is called. GetCompressedVoice() should continue to be called until it returns
|
||||
// a little bit after this function is called. GetVoice() should continue to be called until it returns
|
||||
// k_eVoiceResultNotRecording
|
||||
virtual void StopVoiceRecording( ) = 0;
|
||||
|
||||
// Gets the latest voice data. It should be called as often as possible once recording has started.
|
||||
// nBytesWritten is set to the number of bytes written to pDestBuffer.
|
||||
virtual EVoiceResult GetCompressedVoice( void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten ) = 0;
|
||||
// Determine the amount of captured audio data that is available in bytes.
|
||||
// This provides both the compressed and uncompressed data. Please note that the uncompressed
|
||||
// data is not the raw feed from the microphone: data may only be available if audible
|
||||
// levels of speech are detected.
|
||||
virtual EVoiceResult GetAvailableVoice(uint32 *pcbCompressed, uint32 *pcbUncompressed) = 0;
|
||||
|
||||
// Decompresses a chunk of data produced by GetCompressedVoice(). nBytesWritten is set to the
|
||||
// number of bytes written to pDestBuffer. The output format of the data is 16-bit signed at
|
||||
// 11025 samples per second.
|
||||
// Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to
|
||||
// DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format.
|
||||
// Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible
|
||||
// levels of speech are detected, and may have passed through denoising filters, etc.
|
||||
// This function should be called as often as possible once recording has started; once per frame at least.
|
||||
// nBytesWritten is set to the number of bytes written to pDestBuffer.
|
||||
// nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer.
|
||||
// You must grab both compressed and uncompressed here at the same time, if you want both.
|
||||
// Matching data that is not read during this call will be thrown away.
|
||||
// GetAvailableVoice() can be used to determine how much data is actually available.
|
||||
virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten ) = 0;
|
||||
|
||||
// Decompresses a chunk of compressed data produced by GetVoice().
|
||||
// nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall.
|
||||
// In that case, nBytesWritten is set to the size of the buffer required to decompress the given
|
||||
// data. The suggested buffer size for the destination buffer is 22 kilobytes.
|
||||
// The output format of the data is 16-bit signed at 11025 samples per second.
|
||||
virtual EVoiceResult DecompressVoice( void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten ) = 0;
|
||||
|
||||
// Retrieve ticket to be sent to the entity who wishes to authenticate you.
|
||||
@@ -111,7 +127,7 @@ public:
|
||||
virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0;
|
||||
};
|
||||
|
||||
#define STEAMUSER_INTERFACE_VERSION "SteamUser012"
|
||||
#define STEAMUSER_INTERFACE_VERSION "SteamUser013"
|
||||
|
||||
|
||||
// callbacks
|
||||
@@ -198,6 +214,4 @@ struct ValidateAuthTicketResponse_t
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // ISTEAMUSER_H
|
||||
|
||||
@@ -41,18 +41,6 @@ enum EMatchMakingServerResponse
|
||||
eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match
|
||||
};
|
||||
|
||||
enum EMatchMakingType
|
||||
{
|
||||
eInternetServer = 0,
|
||||
eLANServer,
|
||||
eFriendsServer,
|
||||
eFavoritesServer,
|
||||
eHistoryServer,
|
||||
eSpectatorServer,
|
||||
eInvalidServer
|
||||
};
|
||||
|
||||
|
||||
// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server,
|
||||
// namely: its IP, its connection port, and its query port.
|
||||
class servernetadr_t
|
||||
|
||||
@@ -53,6 +53,13 @@
|
||||
// S_API void SteamAPI_Init(); (see below)
|
||||
S_API void SteamAPI_Shutdown();
|
||||
|
||||
// checks if a local Steam client is running
|
||||
S_API bool SteamAPI_IsSteamRunning();
|
||||
|
||||
// restart your app through Steam to enable required Steamworks features
|
||||
S_API bool SteamAPI_RestartApp( uint32 unOwnAppID );
|
||||
|
||||
|
||||
// crash dump recording functions
|
||||
S_API void SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID );
|
||||
S_API void SteamAPI_SetMiniDumpComment( const char *pchMsg );
|
||||
@@ -229,12 +236,16 @@ public:
|
||||
|
||||
~CCallback()
|
||||
{
|
||||
Unregister();
|
||||
if ( m_nCallbackFlags & k_ECallbackFlagsRegistered )
|
||||
Unregister();
|
||||
}
|
||||
|
||||
// manual registration of the callback
|
||||
void Register( T *pObj, func_t func )
|
||||
{
|
||||
if ( !pObj || !func )
|
||||
return;
|
||||
|
||||
if ( m_nCallbackFlags & k_ECallbackFlagsRegistered )
|
||||
Unregister();
|
||||
|
||||
@@ -244,11 +255,13 @@ public:
|
||||
}
|
||||
m_pObj = pObj;
|
||||
m_Func = func;
|
||||
// SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered
|
||||
SteamAPI_RegisterCallback( this, P::k_iCallback );
|
||||
}
|
||||
|
||||
void Unregister()
|
||||
{
|
||||
// SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered
|
||||
SteamAPI_UnregisterCallback( this );
|
||||
}
|
||||
|
||||
|
||||
@@ -73,6 +73,8 @@ enum EResult
|
||||
k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin
|
||||
k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol.
|
||||
k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another.
|
||||
k_EResultPasswordRequiredToKickSession = 49, // You are already logged in elsewhere, this cached credential login has failed.
|
||||
k_EResultAlreadyLoggedInElsewhere = 50 // You are already logged in elsewhere, you must wait
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ const DepotId_t k_uDepotIdInvalid = 0x0;
|
||||
typedef uint32 RTime32;
|
||||
|
||||
typedef uint32 CellID_t;
|
||||
const CellID_t k_uCellIDInvalid = 0xFFFFFFFF;
|
||||
|
||||
// handle to a Steam API call
|
||||
typedef uint64 SteamAPICall_t;
|
||||
|
||||
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.
@@ -0,0 +1,21 @@
|
||||
"sku"
|
||||
{
|
||||
"name" "Spacewar"
|
||||
"subscriptionID" "0"
|
||||
"appID" "480"
|
||||
"disks" "1"
|
||||
"language" "english"
|
||||
"backup" "0"
|
||||
"apps"
|
||||
{
|
||||
"0" "480"
|
||||
}
|
||||
"depots"
|
||||
{
|
||||
"0" "481"
|
||||
}
|
||||
"packages"
|
||||
{
|
||||
"1 0" "179664"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -6,6 +6,7 @@
|
||||
{
|
||||
"process 1" "%INSTALLDIR%\\redist\\vcredist_x86.exe"
|
||||
"command 1" "/q:a"
|
||||
"Description" "Microsoft VC Redist Package"
|
||||
"NoCleanUp" "1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ root\autorun.inf :
|
||||
root\splash.tga :
|
||||
Image displayed by Steam while installing files from disk (392x165 pixel)
|
||||
|
||||
root\resources\setup_default.ini :
|
||||
root\setup.ini :
|
||||
This is the first config file loaded by Setup regardless the chosen
|
||||
language. This file configures any language independent settings for this
|
||||
game like AppID or menu appearance. The syntax is "parameter" "value", a full
|
||||
@@ -38,21 +38,18 @@ root\resources\SteamInstall_<language>.msi :
|
||||
Steam MSIs that install Steam on the users machine. Can be removed if no
|
||||
matching setup_<language>.ini is provided.
|
||||
|
||||
root\resources\steam.inf :
|
||||
This file configures the Steam installer MSIs. Update the files GameName,
|
||||
RequiredSize and RequiredString according to your game.
|
||||
|
||||
root\resources\installscript.vdf :
|
||||
This is a script file in KeyValues format to run 3rd party installers before
|
||||
Steam and the game are installed. If you don't need to run any other installers,
|
||||
set "ScriptFile" to "" and remove this file and SteamService.exe.
|
||||
Steam and the game are installed. This file is optional and can be removed.
|
||||
|
||||
root\resources\eula.rtf :
|
||||
The end user license agreement shown before the user installs the game. If no
|
||||
EULA is required, set "EulaFile" to "" and remove this file.
|
||||
The end user license agreement shown before the user installs the game.
|
||||
This file is optional. If you have localized versions of this file,
|
||||
name them eula_<language>.rtf
|
||||
|
||||
root\resources\setup.bmp :
|
||||
The Setup background image as 640x480 pixel BMP file.
|
||||
The Setup background image as 640x480 pixel BMP file. If you have
|
||||
localized versions of this file, name them setup_<language>.bmp
|
||||
|
||||
root\resources\click.wav :
|
||||
Played when a button is click. Delete file to play no sound.
|
||||
@@ -70,14 +67,7 @@ Setup_*.ini configuration values:
|
||||
"Game" : game name as it appears in the Setup menu
|
||||
"AppID" : Steam AppID for this game
|
||||
"Language" : overrides current language, usually not needed
|
||||
"ImageFile" : menu background image BMP 640x480. If not set at all,
|
||||
"resources\setup_<language>.bmp" will be used.
|
||||
"EulaFile" : end user license as RTF file, set to "" for none. If not set at
|
||||
all, "resources\eula_<language>.rtf" will be used.
|
||||
"ScriptFile" : script file for 3rd party installers, set to "" for none. If not
|
||||
set at all, "resources\script_<language>.vdf" will be used.
|
||||
"MSIFile" : specifies the SteamInstaller to be used, usually not needed to
|
||||
be set and defaults to "resources\steaminstall_<language>.msi"
|
||||
"RequiredSize" : Required free disc space in KB
|
||||
"URL" : target web URL for technical support button
|
||||
"FontName" : menu Windows font like "Impact" or "Arial"
|
||||
"FontHeight" : menu font height, eg "24"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 900 KiB After Width: | Height: | Size: 900 KiB |
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.
@@ -1,8 +0,0 @@
|
||||
[Ident]
|
||||
Version=1.0.0.0
|
||||
PatchVersion=1.0.0.0
|
||||
Title=The Example Game
|
||||
GameName=Example Game
|
||||
RequiredSize=4500000
|
||||
RequiredString=4.5
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
Reference in New Issue
Block a user