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. ============//
//
//=======================================================================================//
#if defined( REPLAY_ENABLED )
#ifndef REPLAYDEMOPLAYER_H
#define REPLAYDEMOPLAYER_H
#ifdef _WIN32
#pragma once
#endif
//----------------------------------------------------------------------------------------
#include "replay/ireplaydemoplayer.h"
#include "replay/ireplaymovie.h"
#include "cl_demo.h"
#include "utlstring.h"
//----------------------------------------------------------------------------------------
class CReplay;
//----------------------------------------------------------------------------------------
class CReplayDemoPlayer : public CDemoPlayer, public IReplayDemoPlayer { public: typedef CDemoPlayer BaseClass;
CReplayDemoPlayer();
virtual bool StartPlayback( const char *pFilename, bool bAsTimeDemo ); virtual void StopPlayback(); virtual void OnLastDemoInLoopPlayed(); virtual bool ShouldLoopDemos();
//
// IReplayDemoPlayer
//
virtual void PlayReplay( ReplayHandle_t hReplay, int iPerformance ); virtual void PlayNextReplay(); virtual void ClearReplayList(); virtual void AddReplayToList( ReplayHandle_t hReplay, int iPerformance ); virtual CReplay *GetCurrentReplay(); virtual CReplayPerformance *GetCurrentPerformance(); virtual void PauseReplay(); virtual bool IsReplayPaused(); virtual void ResumeReplay(); virtual void OnSignonStateFull();
//
// CDemoPlayer
//
virtual void OnStopCommand(); virtual netpacket_t *ReadPacket(); virtual float GetPlaybackTimeScale();
private: void DisplayFailedToPlayMsg( int iPerformance ); float CalcMovieLength() const;
class CInStartPlaybackGuard { public: CInStartPlaybackGuard( bool &bState ) : m_bState( bState ) { m_bState = true; } ~CInStartPlaybackGuard() { m_bState = false; } bool &m_bState; };
struct PlaybackInfo_t { PlaybackInfo_t() : m_hReplay( REPLAY_HANDLE_INVALID ), m_iPerformance( -1 ), m_nStartTick( -1 ), m_nEndTick( -1 ) {}
ReplayHandle_t m_hReplay; int m_iPerformance; int m_nStartTick; int m_nEndTick; };
PlaybackInfo_t *GetCurrentPlaybackInfo(); const PlaybackInfo_t *GetCurrentPlaybackInfo() const;
const CReplay *GetCurrentReplay() const;
CUtlVector< PlaybackInfo_t * > m_vecReplaysToPlay; IReplayMovie *m_pMovie; int m_nCurReplayIndex; bool m_bInStartPlayback; bool m_bStopCommandEncountered; // We only want to handle OnStopCommand() once per playback
float m_flStartRenderTime; bool m_bFullSignonStateReached; };
//----------------------------------------------------------------------------------------
extern IDemoPlayer *g_pReplayDemoPlayer;
//----------------------------------------------------------------------------------------
#endif // REPLAYDEMOPLAYER_H
#endif // #if defined( REPLAY_ENABLED )
|