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_REPLAYCONTEXT_H
#define CL_REPLAYCONTEXT_H
#ifdef _WIN32
#pragma once
#endif
//----------------------------------------------------------------------------------------
#include "shared_replaycontext.h"
#include "replay/iclientreplaycontext.h"
#include "igameevents.h"
#include "cl_recordingsessionmanager.h"
#include "cl_replaymoviemanager.h"
#include "cl_recordingsessionblockmanager.h"
#include "cl_performancemanager.h"
#include "cl_performancecontroller.h"
#include "errorsystem.h"
//----------------------------------------------------------------------------------------
class IReplayMovieRenderer; class CScreenshotManager; class CReplayManager; class CReplayMovieManager; class CClientRecordingSessionManager; class CReplayPerformanceManager; class CHttpDownloader; class CSessionBlockDownloader; class CClientRecordingSession; class CPerformanceController; class CRenderQueue;
//----------------------------------------------------------------------------------------
class CClientReplayContext : public IClientReplayContext, public IErrorReporter { public: LINK_TO_SHARED_REPLAYCONTEXT_IMP();
CClientReplayContext(); ~CClientReplayContext();
virtual bool Init( CreateInterfaceFn fnFactory ); virtual void Shutdown();
virtual void Think(); // Called by engine
bool ReconstructReplayIfNecessary( CReplay *pReplay ); void DisableReplayOnClient( bool bDisable ); bool IsClientSideReplayDisabled() const { return m_bClientSideReplayDisabled; }
//
// IClientReplayContext
//
virtual CReplay *GetReplay( ReplayHandle_t hReplay ); virtual IReplayManager *GetReplayManager(); virtual IReplayMovieRenderer *GetMovieRenderer(); virtual IReplayMovieManager *GetMovieManager(); virtual IReplayScreenshotManager *GetScreenshotManager(); virtual IReplayPerformanceManager *GetPerformanceManager(); virtual IReplayPerformanceController *GetPerformanceController(); virtual IReplayRenderQueue *GetRenderQueue(); virtual void SetMovieRenderer( IReplayMovieRenderer *pMovieRenderer ); virtual void OnSignonStateFull(); virtual void OnClientSideDisconnect(); virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance, bool bPlaySound ); virtual void OnPlayerSpawn(); virtual void OnPlayerClassChanged(); virtual void GetPlaybackTimes( float &flOutTime, float &flOutLength, const CReplay *pReplay, const CReplayPerformance *pPerformance ); virtual uint64 GetServerSessionId( ReplayHandle_t hReplay ); virtual void CleanupUnneededBlocks();
//
// IErrorReporter
//
virtual void ReportErrorsToUser( wchar_t *pErrorText );
void TestDownloader( const char *pURL );
CReplayManager *m_pReplayManager; CScreenshotManager *m_pScreenshotManager; IReplayMovieRenderer *m_pMovieRenderer; CReplayMovieManager *m_pMovieManager; CReplayPerformanceManager *m_pPerformanceManager; CPerformanceController *m_pPerformanceController; CSessionBlockDownloader *m_pSessionBlockDownloader; CRenderQueue *m_pRenderQueue; CHttpDownloader *m_pTestDownloader;
private: void DebugThink(); void ReplayThink();
bool m_bClientSideReplayDisabled; };
//----------------------------------------------------------------------------------------
extern CClientReplayContext *g_pClientReplayContextInternal;
//----------------------------------------------------------------------------------------
//
// Helpers
//
inline const char *CL_GetBasePath() { return g_pClientReplayContextInternal->m_pShared->m_strBasePath; }
inline const char *CL_GetRelativeBasePath() { return g_pClientReplayContextInternal->m_pShared->m_strRelativeBasePath.Get(); }
inline CReplayManager *CL_GetReplayManager() { return g_pClientReplayContextInternal->m_pReplayManager; }
inline CClientRecordingSessionBlockManager *CL_GetRecordingSessionBlockManager() { return static_cast< CClientRecordingSessionBlockManager * >( g_pClientReplayContextInternal->GetRecordingSessionBlockManager() ); }
inline CScreenshotManager *CL_GetScreenshotManager() { return g_pClientReplayContextInternal->m_pScreenshotManager; }
inline IReplayMovieRenderer *CL_GetMovieRenderer() { return g_pClientReplayContextInternal->m_pMovieRenderer; }
inline CReplayMovieManager *CL_GetMovieManager() { return g_pClientReplayContextInternal->m_pMovieManager; }
inline const char *CL_GetReplayBaseDir() { return g_pClientReplayContextInternal->m_pShared->m_strBasePath; }
inline CErrorSystem *CL_GetErrorSystem() { return g_pClientReplayContextInternal->m_pShared->m_pErrorSystem; }
inline CSessionBlockDownloader *CL_GetSessionBlockDownloader() { return g_pClientReplayContextInternal->m_pSessionBlockDownloader; }
inline CReplayPerformanceManager *CL_GetPerformanceManager() { return g_pClientReplayContextInternal->m_pPerformanceManager; }
inline CPerformanceController *CL_GetPerformanceController() { return g_pClientReplayContextInternal->m_pPerformanceController; }
inline IThreadPool *CL_GetThreadPool() { return g_pClientReplayContextInternal->m_pShared->m_pThreadPool; }
inline CRenderQueue *CL_GetRenderQueue() { return g_pClientReplayContextInternal->m_pRenderQueue; }
//----------------------------------------------------------------------------------------
CClientRecordingSessionManager *CL_GetRecordingSessionManager(); CClientRecordingSession *CL_GetRecordingSessionInProgress();
//----------------------------------------------------------------------------------------
#endif // CL_REPLAYCONTEXT_H
|