networking
This commit is contained in:
94
external/steamworks/steamworksexample/ServerBrowser.h
vendored
Normal file
94
external/steamworks/steamworksexample/ServerBrowser.h
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============
|
||||
//
|
||||
// Purpose: Class for handling finding servers, getting their details, and displaying
|
||||
// them inside the game
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================
|
||||
|
||||
#ifndef SERVERBROWSER_H
|
||||
#define SERVERBROWSER_H
|
||||
|
||||
#include "SpaceWar.h"
|
||||
#include "GameEngine.h"
|
||||
#include "BaseMenu.h"
|
||||
#include <list>
|
||||
|
||||
class CSpaceWarClient;
|
||||
class CServerBrowserMenu;
|
||||
|
||||
|
||||
// Class to encapsulate game server data
|
||||
class CGameServer
|
||||
{
|
||||
public:
|
||||
CGameServer( gameserveritem_t *pGameServerItem );
|
||||
|
||||
const char* GetName() { return m_szServerName; }
|
||||
|
||||
const char* GetDisplayString() { return m_szServerString; }
|
||||
|
||||
uint32 GetIP() { return m_unIPAddress; }
|
||||
|
||||
int32 GetPort() { return m_nConnectionPort; }
|
||||
CSteamID GetSteamID() { return m_steamID; }
|
||||
|
||||
private:
|
||||
uint32 m_unIPAddress; // IP address for the server
|
||||
int32 m_nConnectionPort; // Port for game clients to connect to for this server
|
||||
int m_nPing; // current ping time in milliseconds
|
||||
char m_szMap[32]; // current map
|
||||
char m_szGameDescription[64]; // game description
|
||||
int m_nPlayers; // current number of players on the server
|
||||
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
|
||||
bool m_bSecure; // Is this server protected by VAC
|
||||
int m_nServerVersion; // server version as reported to Steam
|
||||
char m_szServerName[64]; // Game server name
|
||||
char m_szServerString[128]; // String to show in server browser
|
||||
CSteamID m_steamID;
|
||||
};
|
||||
|
||||
class CServerBrowser : public ISteamMatchmakingServerListResponse
|
||||
{
|
||||
public:
|
||||
CServerBrowser( IGameEngine *pGameEngine );
|
||||
~CServerBrowser();
|
||||
|
||||
// Initiate a refresh of internet servers
|
||||
void RefreshInternetServers();
|
||||
|
||||
// Initiate a refresh of LAN servers
|
||||
void RefreshLANServers();
|
||||
|
||||
// Run a frame (to handle kb input and such as well as render)
|
||||
void RunFrame();
|
||||
|
||||
// ISteamMatchmakingServerListResponse
|
||||
void ServerResponded( HServerListRequest hReq, int iServer );
|
||||
void ServerFailedToRespond( HServerListRequest hReq, int iServer );
|
||||
void RefreshComplete( HServerListRequest hReq, EMatchMakingServerResponse response );
|
||||
|
||||
private:
|
||||
|
||||
// Pointer to engine instance (so we can draw stuff)
|
||||
IGameEngine *m_pGameEngine;
|
||||
|
||||
// Track the number of servers we know about
|
||||
int m_nServers;
|
||||
|
||||
// Track whether we are in the middle of a refresh or not
|
||||
bool m_bRequestingServers;
|
||||
|
||||
// Track what server list request is currently running
|
||||
HServerListRequest m_hServerListRequest;
|
||||
|
||||
// Menu object
|
||||
CServerBrowserMenu *m_pMenu;
|
||||
|
||||
// List of game servers
|
||||
std::list< CGameServer > m_ListGameServers;
|
||||
};
|
||||
|
||||
#endif //SERVERBROWSER_H
|
||||
Reference in New Issue
Block a user