You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.5 KiB
102 lines
3.5 KiB
//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= |
|
// |
|
// Purpose: interface to steam managing game server/client match making |
|
// |
|
//============================================================================= |
|
|
|
#ifndef ISERVERSINFO_H |
|
#define ISERVERSINFO_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#define MAX_GAME_DESCRIPTION 8192 |
|
#define MAX_SERVER_NAME 2048 |
|
|
|
enum NServerResponse |
|
{ |
|
nServerResponded = 0, |
|
nServerFailedToRespond, |
|
nNoServersListedOnMasterServer, |
|
}; |
|
|
|
class newgameserver_t |
|
{ |
|
public: |
|
newgameserver_t() = default; |
|
|
|
netadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server |
|
int m_nPing; ///< current ping time in milliseconds |
|
int m_nProtocolVersion; |
|
bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past |
|
bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed |
|
char m_szGameDir[MAX_PATH]; ///< current game directory |
|
char m_szMap[MAX_PATH]; ///< current map |
|
char m_szGameTags[MAX_PATH]; |
|
char m_szGameDescription[MAX_GAME_DESCRIPTION]; ///< game description |
|
|
|
int m_nPlayers; |
|
int m_nMaxPlayers; ///< Maximum players that can join this server |
|
int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server |
|
bool m_bPassword; ///< true if this server needs a password to join |
|
|
|
int m_iFlags; |
|
|
|
/// Game server name |
|
char m_szServerName[MAX_SERVER_NAME]; |
|
}; |
|
|
|
class IServerListResponse |
|
{ |
|
public: |
|
// Server has responded ok with updated data |
|
virtual void ServerResponded( newgameserver_t &server ) = 0; |
|
virtual void RefreshComplete( NServerResponse response ) = 0; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Callback interface for receiving responses after pinging an individual server |
|
// |
|
class IServerPingResponse |
|
{ |
|
public: |
|
// Server has responded successfully and has updated data |
|
virtual void ServerResponded( newgameserver_t &server ) = 0; |
|
}; |
|
//----------------------------------------------------------------------------- |
|
// Purpose: Callback interface for receiving responses after requesting details on |
|
// who is playing on a particular server. |
|
// |
|
class IServerPlayersResponse |
|
{ |
|
public: |
|
// Got data on a new player on the server -- you'll get this callback once per player |
|
// on the server which you have requested player data on. |
|
virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; |
|
|
|
// The server failed to respond to the request for player details |
|
virtual void PlayersFailedToRespond() = 0; |
|
|
|
// The server has finished responding to the player details request |
|
virtual void PlayersRefreshComplete() = 0; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Functions for match making services for clients to get to game lists and details |
|
//----------------------------------------------------------------------------- |
|
class IServersInfo |
|
{ |
|
public: |
|
virtual void RequestInternetServerList( const char *gamedir, IServerListResponse *response ) = 0; |
|
virtual void RequestLANServerList( const char *gamedir, IServerListResponse *response ) = 0; |
|
virtual void StopRefresh() = 0; |
|
|
|
//virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; |
|
//virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; |
|
|
|
}; |
|
#define SERVERLIST_INTERFACE_VERSION "ServerList001" |
|
|
|
extern IServersInfo *g_pServersInfo; |
|
|
|
#endif // ISERVERSINFO_H
|
|
|