mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
190 lines
5.6 KiB
C++
190 lines
5.6 KiB
C++
//========= 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
|