mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
112 lines
2.8 KiB
C++
112 lines
2.8 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
//
|
|
//
|
|
//=============================================================================
|
|
#ifndef GC_CLIENTSYSTEM_H
|
|
#define GC_CLIENTSYSTEM_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifdef CLIENT_DLL
|
|
#include "clientsteamcontext.h"
|
|
#endif
|
|
|
|
//=============================================================================
|
|
//
|
|
// Client GC System.
|
|
//
|
|
//=============================================================================
|
|
class CGCClientSystem : public CAutoGameSystemPerFrame
|
|
{
|
|
DECLARE_CLASS_GAMEROOT( CGCClientSystem, CAutoGameSystem );
|
|
|
|
public:
|
|
|
|
// Constructor/Destructor.
|
|
CGCClientSystem();
|
|
~CGCClientSystem();
|
|
|
|
// Init/Shutdown.
|
|
virtual void PostInit() OVERRIDE;
|
|
virtual void LevelInitPreEntity() OVERRIDE;
|
|
virtual void LevelShutdownPostEntity() OVERRIDE;
|
|
virtual void Shutdown() OVERRIDE;
|
|
|
|
// Updates. Gameservers do this at a slightly different place than clients
|
|
#ifdef CLIENT_DLL
|
|
virtual void Update( float frametime ) OVERRIDE;
|
|
#else
|
|
virtual void PreClientUpdate() OVERRIDE;
|
|
#endif
|
|
|
|
// Connection status
|
|
bool BConnectedtoGC() const { return m_bConnectedToGC; }
|
|
|
|
// GC Messages
|
|
bool BSendMessage( uint32 unMsgType, const uint8 *pubData, uint32 cubData );
|
|
bool BSendMessage( const GCSDK::CGCMsgBase& msg );
|
|
bool BSendMessage( const GCSDK::CProtoBufMsgBase& msg );
|
|
|
|
// GC SOCache
|
|
GCSDK::CGCClientSharedObjectCache *GetSOCache( const CSteamID &steamID );
|
|
GCSDK::CGCClientSharedObjectCache *FindOrAddSOCache( const CSteamID &steamID );
|
|
|
|
// GC Client
|
|
GCSDK::CGCClient *GetGCClient();
|
|
|
|
// Steam
|
|
#ifndef CLIENT_DLL
|
|
void GameServerActivate();
|
|
#endif
|
|
|
|
protected:
|
|
|
|
void SetupGC();
|
|
virtual void InitGC();
|
|
virtual void PreInitGC() {}
|
|
virtual void PostInitGC() {}
|
|
|
|
#ifdef CLIENT_DLL
|
|
friend class CGCClientJobClientWelcome;
|
|
virtual void ReceivedClientWelcome( const CMsgClientWelcome &msg );
|
|
|
|
friend class CGCClientJobClientGoodbye;
|
|
virtual void ReceivedClientGoodbye( const CMsgClientGoodbye &msg );
|
|
#else
|
|
friend class CGCClientJobServerWelcome;
|
|
virtual void ReceivedServerWelcome( const CMsgServerWelcome &msg );
|
|
|
|
friend class CGCClientJobServerGoodbye;
|
|
virtual void ReceivedServerGoodbye( const CMsgServerGoodbye &msg );
|
|
#endif
|
|
|
|
void SetConnectedToGC( bool bConnected ) { m_bConnectedToGC = bConnected; }
|
|
|
|
private:
|
|
|
|
#ifdef CLIENT_DLL
|
|
void SteamLoggedOnCallback( const SteamLoggedOnChange_t &loggedOnState );
|
|
#else
|
|
STEAM_GAMESERVER_CALLBACK( CGCClientSystem, OnLogonSuccess, SteamServersConnected_t, m_CallbackLogonSuccess );
|
|
#endif
|
|
|
|
bool m_bInittedGC;
|
|
bool m_bConnectedToGC;
|
|
bool m_bLoggedOn;
|
|
GCSDK::CGCClient m_GCClient;
|
|
double m_timeLastSendHello;
|
|
|
|
void ThinkConnection();
|
|
|
|
friend class CGCClientSystemJob;
|
|
};
|
|
|
|
|
|
void SetGCClientSystem( CGCClientSystem* pGCClientSystem );
|
|
CGCClientSystem *GCClientSystem();
|
|
|
|
#endif // GC_CLIENTSYSTEM_H
|
|
|