summaryrefslogtreecommitdiff
path: root/serverbrowser/ServerBrowser.h
diff options
context:
space:
mode:
Diffstat (limited to 'serverbrowser/ServerBrowser.h')
-rw-r--r--serverbrowser/ServerBrowser.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/serverbrowser/ServerBrowser.h b/serverbrowser/ServerBrowser.h
new file mode 100644
index 0000000..7decbe7
--- /dev/null
+++ b/serverbrowser/ServerBrowser.h
@@ -0,0 +1,82 @@
+//========= 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<CServerBrowserDialog> m_hInternetDlg;
+
+ bool m_bWorkshopEnabled;
+ CUtlVector< CUtlString > m_vecWorkshopSubscribedMaps;
+};
+
+// singleton accessor
+CServerBrowser &ServerBrowser();
+
+class CSteamAPIContext;
+extern CSteamAPIContext *steamapicontext;
+
+
+#endif // SERVERBROWSER_H