//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef REPLAYDEMO_H #define REPLAYDEMO_H #ifdef _WIN32 #pragma once #endif #include #include "demo.h" #include "demofile.h" #define TMP_REPLAY_FILENAME ".replay.tmp" class CReplayFrame; class CReplayServer; class CRecordingSessionBlock; class CReplayDemoRecorder : public IDemoRecorder { public: CReplayDemoRecorder( CReplayServer* pServer ); virtual ~CReplayDemoRecorder(); CDemoFile *GetDemoFile(); int GetRecordingTick(); private: friend class CReplayServer; // Calls to Start/StopRecording() should be funneled through CReplayServer void StartRecording(); void StopRecording(); const char *GetDemoFilename(); public: void SetSignonState( int state ) {} bool IsRecording(); void PauseRecording() {} void ResumeRecording() {} void RecordCommand( const char *cmdstring ); void RecordUserInput( int cmdnumber ) {} ; // not need by Replay recorder void RecordMessages( bf_read &data, int bits ); void RecordPacket(); void RecordServerClasses( ServerClass *pClasses ); void RecordStringTables(); void ResetDemoInterpolation() {} void WriteFrame( CReplayFrame *pFrame ); void CloseFile(); void WriteServerInfo(); int WriteSignonData(); // write all necessary signon data and returns written bytes void WriteMessages( unsigned char cmd, bf_write &message ); int GetMaxAckTickCount(); void GetUniqueDemoFilename( char* pOut, int nLength ); const char *GetRecordingFilename(); public: CDemoFile m_DemoFile; // TODO: I believe this can be removed char m_szDumpFilename[MAX_OSPATH]; // The name of the file name to which we are currently (or will eventually) // write the demo, depending on cvar, "replay_record_directly_to_disk" bool m_bIsRecording; bool m_bWrittenFirstFullUpdate; int m_nFrameCount; int m_nStartTick; int m_SequenceInfo; int m_nDeltaTick; int m_nSignonTick; bf_write m_MessageData; // temp buffer for all network messages CReplayServer *m_pReplayServer; private: void StartRecording( const char *pFilename, bool bContinuously ); }; #endif // REPLAYDEMO_H