1#ifndef ENGINE_CLIENT_GHOST_H
2#define ENGINE_CLIENT_GHOST_H
15static_assert(
MAX_CHUNK_SIZE %
sizeof(uint32_t) == 0,
"Chunk size must be aligned with uint32_t");
63 int Start(
const char *pFilename,
const char *pMap,
const SHA256_DIGEST &MapSha256,
const char *pName)
override;
64 void Stop(
int Ticks,
int Time)
override;
66 void WriteData(
int Type,
const void *pData,
size_t Size)
override;
99 bool Load(
const char *pFilename,
const char *pMap,
const SHA256_DIGEST &MapSha256,
unsigned MapCrc)
override;
100 void Close()
override;
104 bool ReadData(
int Type,
void *pData,
size_t Size)
override;
int m_Type
Definition ghost.h:39
unsigned char m_aData[MAX_ITEM_SIZE]
Definition ghost.h:37
size_t m_Size
Definition ghost.h:38
bool ReadData(int Type, void *pData, size_t Size) override
Definition ghost.cpp:466
const char * m_pBufferEnd
Definition ghost.h:82
CGhostLoader()
Definition ghost.cpp:215
const CGhostInfo * GetInfo() const override
Definition ghost.h:101
CGhostInfo m_Info
Definition ghost.h:77
class IStorage * m_pStorage
Definition ghost.h:74
bool CheckHeaderMap(const CGhostHeader &Header, const char *pFilename, const char *pMap, const SHA256_DIGEST &MapSha256, unsigned MapCrc, bool LogMapMismatch) const
Definition ghost.cpp:321
int m_BufferCurItem
Definition ghost.h:84
bool GetGhostInfo(const char *pFilename, CGhostInfo *pGhostInfo, const char *pMap, const SHA256_DIGEST &MapSha256, unsigned MapCrc) override
Definition ghost.cpp:512
void Close() override
Definition ghost.cpp:500
char * m_pBufferPos
Definition ghost.h:81
void ResetBuffer()
Definition ghost.cpp:227
std::optional< CGhostItem > m_LastItem
Definition ghost.h:86
int m_BufferPrevItem
Definition ghost.h:85
bool ReadNextType(int *pType) override
Definition ghost.cpp:436
bool ValidateHeader(const CGhostHeader &Header, const char *pFilename) const
Definition ghost.cpp:278
void Init()
Definition ghost.cpp:222
bool ReadChunk(int *pType)
Definition ghost.cpp:383
IOHANDLE m_File
Definition ghost.h:72
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition ghost.h:73
int m_BufferNumItems
Definition ghost.h:83
IOHANDLE ReadHeader(CGhostHeader &Header, const char *pFilename, const char *pMap, const SHA256_DIGEST &MapSha256, unsigned MapCrc, bool LogMapMismatch) const
Definition ghost.cpp:236
CGhostHeader m_Header
Definition ghost.h:76
char m_aBuffer[MAX_CHUNK_SIZE]
Definition ghost.h:79
bool Load(const char *pFilename, const char *pMap, const SHA256_DIGEST &MapSha256, unsigned MapCrc) override
Definition ghost.cpp:363
char m_aBufferTemp[MAX_CHUNK_SIZE]
Definition ghost.h:80
void WriteData(int Type, const void *pData, size_t Size) override
Definition ghost.cpp:100
std::optional< CGhostItem > m_LastItem
Definition ghost.h:53
IOHANDLE m_File
Definition ghost.h:44
void FlushChunk()
Definition ghost.cpp:135
int m_BufferNumItems
Definition ghost.h:52
void Init()
Definition ghost.cpp:47
CGhostRecorder()
Definition ghost.cpp:40
void ResetBuffer()
Definition ghost.cpp:81
class IStorage * m_pStorage
Definition ghost.h:46
bool IsRecording() const override
Definition ghost.h:67
const char * m_pBufferEnd
Definition ghost.h:51
char * m_pBufferPos
Definition ghost.h:50
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition ghost.h:45
void Stop(int Ticks, int Time) override
Definition ghost.cpp:178
char m_aBuffer[MAX_CHUNK_SIZE]
Definition ghost.h:48
char m_aBufferTemp[MAX_CHUNK_SIZE]
Definition ghost.h:49
int Start(const char *pFilename, const char *pMap, const SHA256_DIGEST &MapSha256, const char *pName) override
Definition ghost.cpp:52
@ NUM_ITEMS_PER_CHUNK
Definition ghost.h:12
@ MAX_ITEM_SIZE
Definition ghost.h:11
@ MAX_CHUNK_SIZE
Definition ghost.h:13
@ MAX_NAME_LENGTH
Definition protocol.h:99
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:26
void * IOHANDLE
Definition logger.h:12