summaryrefslogtreecommitdiff
path: root/game/client/clientsteamcontext.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/clientsteamcontext.h')
-rw-r--r--game/client/clientsteamcontext.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/game/client/clientsteamcontext.h b/game/client/clientsteamcontext.h
new file mode 100644
index 0000000..2bd0c9a
--- /dev/null
+++ b/game/client/clientsteamcontext.h
@@ -0,0 +1,59 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+#if !defined( CLIENTSTEAMCONTEXT_H )
+#define CLIENTSTEAMCONTEXT_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "steam/steam_api.h"
+#include "utldelegate.h"
+
+struct SteamLoggedOnChange_t
+{
+ bool bPreviousLoggedOn;
+ bool bLoggedOn;
+};
+
+class CClientSteamContext : public CSteamAPIContext
+{
+public:
+ CClientSteamContext();
+ ~CClientSteamContext();
+
+ void Activate();
+ void Shutdown();
+
+#if !defined(NO_STEAM)
+ STEAM_CALLBACK( CClientSteamContext, OnSteamServersDisconnected, SteamServersDisconnected_t, m_CallbackSteamServersDisconnected );
+ STEAM_CALLBACK( CClientSteamContext, OnSteamServerConnectFailure, SteamServerConnectFailure_t, m_CallbackSteamServerConnectFailure );
+ STEAM_CALLBACK( CClientSteamContext, OnSteamServersConnected, SteamServersConnected_t, m_CallbackSteamServersConnected );
+#ifdef TF_CLIENT_DLL
+ STEAM_CALLBACK( CClientSteamContext, OnGameJoinRequested, GameRichPresenceJoinRequested_t, m_GameJoinRequested );
+#endif // TF_CLIENT_DLL
+#endif
+
+ bool BLoggedOn() { return m_bLoggedOn; }
+ EUniverse GetConnectedUniverse() { return m_nUniverse; }
+ uint32 GetAppID() { return m_nAppID; }
+ const CSteamID & GetLocalPlayerSteamID() { return m_SteamIDLocalPlayer; }
+
+ // Allow others to register for a callback when the Steam logged on status changes
+ void InstallCallback( CUtlDelegate< void ( const SteamLoggedOnChange_t & ) > delegate );
+ void RemoveCallback( CUtlDelegate< void ( const SteamLoggedOnChange_t & ) > delegate );
+
+private:
+ void UpdateLoggedOnState();
+ void InvokeCallbacks( const SteamLoggedOnChange_t &loggedOnStatus );
+
+ bool m_bActive;
+ bool m_bLoggedOn;
+ CSteamID m_SteamIDLocalPlayer;
+ EUniverse m_nUniverse;
+ uint32 m_nAppID;
+
+ CUtlVector< CUtlDelegate< void ( const SteamLoggedOnChange_t & ) > > m_LoggedOnCallbacks;
+};
+
+CClientSteamContext &ClientSteamContext(); // singleton accessor
+
+#endif // CLIENTSTEAMCONTEXT_H \ No newline at end of file