summaryrefslogtreecommitdiff
path: root/engine/demofile.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/demofile.h')
-rw-r--r--engine/demofile.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/engine/demofile.h b/engine/demofile.h
new file mode 100644
index 0000000..e93c913
--- /dev/null
+++ b/engine/demofile.h
@@ -0,0 +1,88 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//===========================================================================//
+
+#ifndef DEMOFILE_H
+#define DEMOFILE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#define DEMO_FILE_UTLBUFFER 1
+#define DEMO_FILE_MAX_STRINGTABLE_SIZE 5000000 // 5 mb
+
+#include "demo.h"
+
+#ifdef DEMO_FILE_UTLBUFFER
+#include "tier2/utlstreambuffer.h"
+#else
+#include <filesystem.h>
+#endif
+
+
+#include "tier1/bitbuf.h"
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class IDemoBuffer;
+
+//-----------------------------------------------------------------------------
+// Demo file
+//-----------------------------------------------------------------------------
+class CDemoFile
+{
+public:
+ CDemoFile();
+ ~CDemoFile();
+
+ bool Open(const char *name, bool bReadOnly, bool bMemoryBuffer = false, int nBufferSize = 0, bool bAllowHeaderWrite = true);
+ bool IsOpen();
+ void Close();
+
+ void SeekTo( int position, bool bRead );
+ unsigned int GetCurPos( bool bRead );
+ int GetSize();
+
+ void WriteRawData( const char *buffer, int length );
+ int ReadRawData( char *buffer, int length );
+
+ void WriteSequenceInfo(int nSeqNrIn, int nSeqNrOutAck);
+ void ReadSequenceInfo(int &nSeqNrIn, int &nSeqNrOutAck);
+
+ void WriteCmdInfo( democmdinfo_t& info );
+ void ReadCmdInfo( democmdinfo_t& info );
+
+ void WriteCmdHeader( unsigned char cmd, int tick );
+ void ReadCmdHeader( unsigned char& cmd, int& tick );
+
+ void WriteConsoleCommand( const char *cmd, int tick );
+ const char *ReadConsoleCommand( void );
+
+ void WriteNetworkDataTables( bf_write *buf, int tick );
+ int ReadNetworkDataTables( bf_read *buf );
+
+ void WriteStringTables( bf_write *buf, int tick );
+ int ReadStringTables( bf_read *buf );
+
+ void WriteUserCmd( int cmdnumber, const char *buffer, unsigned char bytes, int tick );
+ int ReadUserCmd( char *buffer, int &size );
+
+ void WriteDemoHeader();
+ demoheader_t *ReadDemoHeader();
+
+ void WriteFileBytes( FileHandle_t fh, int length );
+
+ // Returns the PROTOCOL_VERSION used when .dem was recorded
+ int GetProtocolVersion();
+public:
+ char m_szFileName[MAX_PATH]; //name of current demo file
+ demoheader_t m_DemoHeader; //general demo info
+ CUtlBuffer *m_pBuffer;
+ bool m_bAllowHeaderWrite;
+ bool m_bIsStreamBuffer;
+};
+
+#endif // DEMOFILE_H