csgo-2018-source/matchmaking/mm_session_offline_custom.h

87 lines
1.9 KiB
C
Raw Normal View History

2021-07-25 12:11:47 +08:00
//===== Copyright <20> 1996-2009, Valve Corporation, All rights reserved. ======//
//
// Purpose:
//
//===========================================================================//
#ifndef MM_SESSION_OFFLINE_CUSTOM_H
#define MM_SESSION_OFFLINE_CUSTOM_H
#ifdef _WIN32
#pragma once
#endif
//
// CMatchSessionOfflineCustom
//
// Implementation of an offline session
// that allows customization before the actual
// game commences (like playing commentary mode
// or playing single-player)
//
class CMatchSessionOfflineCustom : public IMatchSessionInternal
{
// Methods of IMatchSession
public:
// Get an internal pointer to session system-specific data
virtual KeyValues * GetSessionSystemData() { return NULL; }
// Get an internal pointer to session settings
virtual KeyValues * GetSessionSettings();
// Update session settings, only changing keys and values need
// to be passed and they will be updated
virtual void UpdateSessionSettings( KeyValues *pSettings );
virtual void UpdateTeamProperties( KeyValues *pTeamProperties );
virtual uint64 GetSessionID();
// Issue a session command
virtual void Command( KeyValues *pCommand );
// Run a frame update
virtual void Update();
// Destroy the session object
virtual void Destroy();
// Debug print a session object
virtual void DebugPrint();
// Check if another session is joinable
virtual bool IsAnotherSessionJoinable( char const *pszAnotherSessionInfo ) { return true; }
// Process event
virtual void OnEvent( KeyValues *pEvent );
public:
explicit CMatchSessionOfflineCustom( KeyValues *pSettings );
~CMatchSessionOfflineCustom();
protected:
void InitializeGameSettings();
//
// Overrides
//
protected:
void OnGamePrepareLobbyForGame();
protected:
KeyValues *m_pSettings;
KeyValues::AutoDelete m_autodelete_pSettings;
enum State_t
{
STATE_INIT,
STATE_CONFIG,
STATE_RUNNING
};
State_t m_eState;
bool m_bExpectingServerReload;
};
#endif