|
|
//========= Copyright � 1996-2002, Valve LLC, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#ifndef SERVERBROWSERDIALOG_H
#define SERVERBROWSERDIALOG_H
#ifdef _WIN32
#pragma once
#endif
extern class IRunGameEngine *g_pRunGameEngine;
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CServerBrowserDialog : public vgui::Frame { DECLARE_CLASS_SIMPLE( CServerBrowserDialog, vgui::Frame );
public: // Construction/destruction
CServerBrowserDialog( vgui::Panel *parent ); ~CServerBrowserDialog( void );
void Initialize( void );
// displays the dialog, moves it into focus, updates if it has to
void Open( void );
// gets server info
gameserveritem_t *GetServer(unsigned int serverID); // called every frame
virtual void OnTick();
// updates status text at bottom of window
void UpdateStatusText(const char *format, ...); // updates status text at bottom of window
void UpdateStatusText(wchar_t *unicode);
// context menu access
CServerContextMenu *GetContextMenu(vgui::Panel *pParent);
// returns a pointer to a static instance of this dialog
// valid for use only in sort functions
static CServerBrowserDialog *GetInstance();
// Adds a server to the list of favorites
void AddServerToFavorites(gameserveritem_t &server); // Adds a server to our list of blacklisted servers
void AddServerToBlacklist(gameserveritem_t &server); bool IsServerBlacklisted(gameserveritem_t &server);
// begins the process of joining a server from a game list
// the game info dialog it opens will also update the game list
// Join type param indicates the server browser tab used.
CDialogGameInfo *JoinGame(IGameList *gameList, unsigned int serverIndex, const char* szJoinType );
// joins a game by a specified IP, not attached to any game list
CDialogGameInfo *JoinGame(int serverIP, int serverPort);
// opens a game info dialog from a game list
CDialogGameInfo *OpenGameInfoDialog(IGameList *gameList, unsigned int serverIndex);
// opens a game info dialog by a specified IP, not attached to any game list
CDialogGameInfo *OpenGameInfoDialog( int serverIP, uint16 connPort, uint16 queryPort );
// closes all the game info dialogs
void CloseAllGameInfoDialogs(); CDialogGameInfo *GetDialogGameInfoForFriend( uint64 ulSteamIDFriend );
// accessor to the filter save data
KeyValues *GetFilterSaveData(const char *filterSet);
// gets the name of the mod directory we're restricted to accessing, NULL if none
const char *GetActiveModName(); CGameID &GetActiveAppID(); const char *GetActiveGameName();
// load/saves filter & favorites settings from disk
void LoadUserData(); void SaveUserData();
// forces the currently active page to refresh
void RefreshCurrentPage();
virtual gameserveritem_t *GetCurrentConnectedServer() { return &m_CurrentConnection; }
void BlacklistsChanged(); CBlacklistedServers *GetBlacklistPage( void ) { return m_pBlacklist; }
virtual void OnKeyCodePressed( vgui::KeyCode code ); virtual void OnKeyCodeTyped( vgui::KeyCode code ); virtual void OnClose();
private:
// current game list change
MESSAGE_FUNC( OnGameListChanged, "PageChanged" ); void ReloadFilterSettings();
// receives a specified game is active, so no other game types can be displayed in server list
MESSAGE_FUNC_PARAMS( OnActiveGameName, "ActiveGameName", name );
// notification that we connected / disconnected
MESSAGE_FUNC_PARAMS( OnConnectToGame, "ConnectedToGame", kv ); MESSAGE_FUNC( OnDisconnectFromGame, "DisconnectedFromGame" );
MESSAGE_FUNC_PARAMS( ShowServerBrowserPage, "ShowServerBrowserPage", kv ); MESSAGE_FUNC_PARAMS( SetCustomScheme, "SetCustomScheme", kv );
MESSAGE_FUNC_CHARPTR( RunModuleCommand, "RunModuleCommand", command );
virtual bool GetDefaultScreenPosition(int &x, int &y, int &wide, int &tall); virtual void ActivateBuildMode();
private: // list of all open game info dialogs
CUtlVector<vgui::DHANDLE<CDialogGameInfo> > m_GameInfoDialogs;
// pointer to current game list
IGameList *m_pGameList;
// Status text
vgui::Label *m_pStatusLabel;
// property sheet
vgui::PropertySheet *m_pTabPanel; CFavoriteGames *m_pFavorites; CBlacklistedServers *m_pBlacklist; CHistoryGames *m_pHistory; CInternetGames *m_pInternetGames; CSpectateGames *m_pSpectateGames; CLanGames *m_pLanGames; CFriendsGames *m_pFriendsGames;
KeyValues *m_pSavedData; KeyValues *m_pFilterData;
// context menu
CServerContextMenu *m_pContextMenu;
// active game
char m_szGameName[128]; char m_szModDir[128]; CGameID m_iLimitAppID;
// currently connected game
bool m_bCurrentlyConnected; gameserveritem_t m_CurrentConnection;
bool m_bActive; };
// singleton accessor
extern CServerBrowserDialog &ServerBrowserDialog();
// Used by the LAN tab and the add server dialog when trying to find servers without having
// been given any ports to look for servers on.
void GetMostCommonQueryPorts( CUtlVector<uint16> &ports );
#endif // SERVERBROWSERDIALOG_H
|