aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/client/clientsteamcontext.h
blob: 07a4bcd8f22d4f27ab0359c3f2f72d6cd2f10359 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//========= 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 );
#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