Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
//=======================================================================================//
#ifndef CL_RECORDINGSESSIONMANAGER_H
#define CL_RECORDINGSESSIONMANAGER_H
#ifdef _WIN32
#pragma once
#endif
//----------------------------------------------------------------------------------------
#include "baserecordingsessionmanager.h"
#include "igameevents.h"
#include "replaysystem.h"
#include "replay/shared_defs.h"
//----------------------------------------------------------------------------------------
//
// Manages and serializes all replay recording session data on the client
//
class CClientRecordingSessionManager : public CBaseRecordingSessionManager, public IGameEventListener2 { typedef CBaseRecordingSessionManager BaseClass;
public: CClientRecordingSessionManager( IReplayContext *pContext ); ~CClientRecordingSessionManager();
virtual bool Init();
void CleanupUnneededBlocks();
virtual CBaseRecordingSession *OnSessionStart( int nCurrentRecordingStartTick, const char *pSessionName ); virtual void OnSessionEnd();
void ClearServerRecordingState() { m_ServerRecordingState.Clear(); } void OnReplayDeleted( CReplay *pReplay ); void OnReplaysLoaded();
//
// CGenericPersistentManager
//
virtual CBaseRecordingSession *Create();
struct ServerRecordingState_t { ServerRecordingState_t() { Clear(); } void Clear() { m_strSessionName = ""; m_nDumpInterval = m_nCurrentBlock = m_nStartTick = 0; }
CUtlString m_strSessionName; // Name of current recording session
int m_nDumpInterval; // The interval at which the server is dumping partial replays
int m_nCurrentBlock; // Current session block being written to on the server (approximation - may be ahead but never behind)
int m_nStartTick; // The tick on the server when the session began - used to calculate an adjusted spawn tick on the client
bool IsValid() { return !m_strSessionName.IsEmpty() && m_nDumpInterval >= MIN_SERVER_DUMP_INTERVAL && m_nDumpInterval <= MAX_SERVER_DUMP_INTERVAL; } } m_ServerRecordingState;
private: //
// CGenericPersistentManager
//
virtual int GetVersion() const; virtual void Think(); virtual IReplayContext *GetReplayContext() const; virtual void OnObjLoaded( CBaseRecordingSession *pSession );
//
// IRecordingSessionManager
//
virtual const char *GetNewSessionName() const; virtual void FireGameEvent( IGameEvent *pEvent );
void AddEventsForListen(); void DownloadThink();
float m_flNextBlockUpdateTime; float m_flNextPossibleDownloadTime;
int m_nNumSessionBlockDownloaders; // TODO: Manage the number of session block downloaders
};
//----------------------------------------------------------------------------------------
#endif // CL_RECORDINGSESSIONMANAGER_H
|