diff options
Diffstat (limited to 'engine/demofile.h')
| -rw-r--r-- | engine/demofile.h | 88 |
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 |