summaryrefslogtreecommitdiff
path: root/engine/replaydemo.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/replaydemo.h')
-rw-r--r--engine/replaydemo.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/engine/replaydemo.h b/engine/replaydemo.h
new file mode 100644
index 0000000..55b4cc5
--- /dev/null
+++ b/engine/replaydemo.h
@@ -0,0 +1,90 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef REPLAYDEMO_H
+#define REPLAYDEMO_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <filesystem.h>
+
+#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