#ifndef ISTEAMCLIENT006_H #define ISTEAMCLIENT006_H #ifdef STEAM_WIN32 #pragma once #endif // this interface version is not found in public SDK archives, it is based on proton src: https://github.com/ValveSoftware/Proton/tree/proton_9.0/lsteamclient #include "isteammasterserverupdater.h" class ISteamClient006 { public: // Creates a communication pipe to the Steam client virtual HSteamPipe CreateSteamPipe() = 0; // Releases a previously created communications pipe virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; // creates a global instance of a steam user, so that other processes can share it // used by the steam UI, to share it's account info/connection with any games it launches // fails (returns NULL) if an existing instance already exists virtual HSteamUser CreateGlobalUser( HSteamPipe *phSteamPipe ) = 0; // connects to an existing global user, failing if none exists // used by the game to coordinate with the steamUI virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; // used by game servers, create a steam user that won't be shared with anyone else virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe ) = 0; // removes an allocated user 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 IVac interface associated with the handle // there is normally only one instance of VAC running, but using this connects it to the right user/account virtual void *GetIVAC( HSteamUser hSteamUser ) = 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( uint32 unIP, uint16 usPort ) = 0; // returns the name of a universe virtual const char *GetUniverseName( EUniverse eUniverse ) = 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; virtual void *GetISteamBilling_old( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // returns the ISteamMatchmaking interface virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // returns the ISteamContentServer interface virtual ISteamContentServer *GetISteamContentServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // returns the ISteamMasterServerUpdater interface virtual ISteamMasterServerUpdater *GetISteamMasterServerUpdater( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // returns the ISteamMatchmakingServers interface virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // this needs to be called every frame to process matchmaking results // redundant if you're already calling SteamAPI_RunCallbacks() 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; }; #endif // ISTEAMCLIENT006_H