//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //============================================================================= #ifndef SERVERBROWSER_H #define SERVERBROWSER_H #ifdef _WIN32 #pragma once #endif class CServerBrowserDialog; //----------------------------------------------------------------------------- // Purpose: Handles the UI and pinging of a half-life game server list //----------------------------------------------------------------------------- class CServerBrowser : public IServerBrowser, public IVGuiModule { public: CServerBrowser(); ~CServerBrowser(); // IVGui module implementation virtual bool Initialize(CreateInterfaceFn *factorylist, int numFactories); virtual bool PostInitialize(CreateInterfaceFn *modules, int factoryCount); virtual vgui::VPANEL GetPanel(); virtual bool Activate(); virtual bool IsValid(); virtual void Shutdown(); virtual void Deactivate(); virtual void Reactivate(); virtual void SetParent(vgui::VPANEL parent); // IServerBrowser implementation // joins a specified game - game info dialog will only be opened if the server is fully or passworded virtual bool JoinGame( uint32 unGameIP, uint16 usGamePort, const char *pszConnectCode ); virtual bool JoinGame( uint64 ulSteamIDFriend, const char *pszConnectCode ); // opens a game info dialog to watch the specified server; associated with the friend 'userName' virtual bool OpenGameInfoDialog( uint64 ulSteamIDFriend, const char *pszConnectCode ); // forces the game info dialog closed virtual void CloseGameInfoDialog( uint64 ulSteamIDFriend ); // closes all the game info dialogs virtual void CloseAllGameInfoDialogs(); virtual const char *GetMapFriendlyNameAndGameType( const char *pszMapName, char *szFriendlyMapName, int cchFriendlyName ) OVERRIDE; // methods virtual void CreateDialog(); virtual void Open(); // true if the user can't play a game bool IsVACBannedFromGame( int nAppID ); // Enable filtering of workshop maps, requires the game/tool loading us to feed subscription data. This is a // slightly ugly workaround to TF2 not yet having native workshop UI in quickplay, once that is in place this should // either be stripped back out or expanded to be directly aware of the steam workshop without being managed. virtual void SetWorkshopEnabled( bool bManaged ) OVERRIDE; virtual void AddWorkshopSubscribedMap( const char *pszMapName ) OVERRIDE; virtual void RemoveWorkshopSubscribedMap( const char *pszMapName ) OVERRIDE; bool IsWorkshopEnabled(); bool IsWorkshopSubscribedMap( const char *pszMapName ); private: vgui::DHANDLE m_hInternetDlg; bool m_bWorkshopEnabled; CUtlVector< CUtlString > m_vecWorkshopSubscribedMaps; }; // singleton accessor CServerBrowser &ServerBrowser(); class CSteamAPIContext; extern CSteamAPIContext *steamapicontext; #endif // SERVERBROWSER_H