c475dfb15e
(cherry picked from commit 5cec5eedc7
)
179 lines
8.9 KiB
C++
179 lines
8.9 KiB
C++
//====== Copyright Valve Corporation, All rights reserved. ====================
|
|
//
|
|
// Internal low-level access to Steamworks interfaces.
|
|
//
|
|
// Most users of the Steamworks SDK do not need to include this file.
|
|
// You should only include this if you are doing something special.
|
|
//=============================================================================
|
|
|
|
#ifndef ISTEAMCLIENT_H
|
|
#define ISTEAMCLIENT_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "steam_api_common.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Interface to creating a new steam instance, or to
|
|
// connect to an existing steam instance, whether it's in a
|
|
// different process or is local.
|
|
//
|
|
// For most scenarios this is all handled automatically via SteamAPI_Init().
|
|
// You'll only need these APIs if you have a more complex versioning scheme,
|
|
// or if you want to implement a multiplexed gameserver where a single process
|
|
// is handling multiple games at once with independent gameserver SteamIDs.
|
|
//-----------------------------------------------------------------------------
|
|
class ISteamClient
|
|
{
|
|
public:
|
|
// Creates a communication pipe to the Steam client.
|
|
// NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
|
|
virtual HSteamPipe CreateSteamPipe() = 0;
|
|
|
|
// Releases a previously created communications pipe
|
|
// NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
|
|
virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0;
|
|
|
|
// connects to an existing global user, failing if none exists
|
|
// used by the game to coordinate with the steamUI
|
|
// NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
|
|
virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0;
|
|
|
|
// used by game servers, create a steam user that won't be shared with anyone else
|
|
// NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
|
|
virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0;
|
|
|
|
// removes an allocated user
|
|
// NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling
|
|
virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0;
|
|
|
|
// retrieves the ISteamUser interface associated with the handle
|
|
virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// retrieves the ISteamGameServer interface associated with the handle
|
|
virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// set the local IP and Port to bind to
|
|
// this must be set before CreateLocalUser()
|
|
virtual void SetLocalIPBinding( const SteamIPAddress_t *unIP, uint16 usPort ) = 0;
|
|
|
|
// returns the ISteamFriends interface
|
|
virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the ISteamUtils interface
|
|
virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the ISteamMatchmaking interface
|
|
virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the ISteamMatchmakingServers interface
|
|
virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the a generic interface
|
|
virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the ISteamUserStats interface
|
|
virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns the ISteamGameServerStats interface
|
|
virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns apps interface
|
|
virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// networking
|
|
virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// remote storage
|
|
virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// user screenshots
|
|
virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// game search
|
|
virtual ISteamGameSearch *GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead.
|
|
STEAM_PRIVATE_API( virtual void RunFrame() = 0; )
|
|
|
|
// returns the number of IPC calls made since the last time this function was called
|
|
// Used for perf debugging so you can understand how many IPC calls your game makes per frame
|
|
// Every IPC call is at minimum a thread context switch if not a process one so you want to rate
|
|
// control how often you do them.
|
|
virtual uint32 GetIPCCallCount() = 0;
|
|
|
|
// API warning handling
|
|
// 'int' is the severity; 0 for msg, 1 for warning
|
|
// 'const char *' is the text of the message
|
|
// callbacks will occur directly after the API function is called that generated the warning or message.
|
|
virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0;
|
|
|
|
// Trigger global shutdown for the DLL
|
|
virtual bool BShutdownIfAllPipesClosed() = 0;
|
|
|
|
// Expose HTTP interface
|
|
virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption.
|
|
STEAM_PRIVATE_API( virtual void *DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0 ; )
|
|
|
|
// Exposes the ISteamController interface - deprecated in favor of Steam Input
|
|
virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Exposes the ISteamUGC interface
|
|
virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// returns app list interface, only available on specially registered apps
|
|
virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Music Player
|
|
virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Music Player Remote
|
|
virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0;
|
|
|
|
// html page display
|
|
virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0;
|
|
|
|
// Helper functions for internal Steam usage
|
|
STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; )
|
|
STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; )
|
|
STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; )
|
|
|
|
// inventory
|
|
virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Video
|
|
virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Parental controls
|
|
virtual ISteamParentalSettings *GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Exposes the Steam Input interface for controller support
|
|
virtual ISteamInput *GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Steam Parties interface
|
|
virtual ISteamParties *GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
// Steam Remote Play interface
|
|
virtual ISteamRemotePlay *GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0;
|
|
|
|
STEAM_PRIVATE_API( virtual void DestroyAllInterfaces() = 0; )
|
|
|
|
};
|
|
#define STEAMCLIENT_INTERFACE_VERSION "SteamClient020"
|
|
|
|
#ifndef STEAM_API_EXPORTS
|
|
|
|
// Global ISteamClient interface accessor
|
|
inline ISteamClient *SteamClient();
|
|
STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamClient *, SteamClient, SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ), "global", STEAMCLIENT_INTERFACE_VERSION );
|
|
|
|
// The internal ISteamClient used for the gameserver interface.
|
|
// (This is actually the same thing. You really shouldn't need to access any of this stuff directly.)
|
|
inline ISteamClient *SteamGameServerClient() { return SteamClient(); }
|
|
|
|
#endif
|
|
|
|
#endif // ISTEAMCLIENT_H
|