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.
189 lines
5.6 KiB
189 lines
5.6 KiB
//========= 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
|
|
|