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.
88 lines
2.4 KiB
88 lines
2.4 KiB
//========= 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
|
|
|