diff --git a/demboyz/demofile.cpp b/demboyz/demofile.cpp index cb16ea3..2ca5298 100644 --- a/demboyz/demofile.cpp +++ b/demboyz/demofile.cpp @@ -33,6 +33,24 @@ int32_t DemoFileReader::ReadRawData(uint8_t* buffer, int32_t maxLength) return size; } +Array DemoFileReader::ReadRawData(int32_t maxLength) +{ + FILE* fp = m_demoFp; + + int32_t size; + fread(&size, sizeof(int32_t), 1, fp); + + Array data; + if (maxLength < size) + { + return std::move(data); + } + + data.reset(size); + fread(data.begin(), 1, size, fp); + return std::move(data); +} + void DemoFileReader::ReadSequenceInfo(int32_t& seqNum1, int32_t& seqNum2) { FILE* fp = m_demoFp; @@ -66,6 +84,12 @@ int32_t DemoFileReader::ReadUserCmd(int32_t& cmdNum, uint8_t* buffer, int32_t ma return ReadRawData(buffer, maxLength); } +Array DemoFileReader::ReadUserCmd(int32_t& cmdNum, int32_t maxLength) +{ + fread(&cmdNum, sizeof(int32_t), 1, m_demoFp); + return ReadRawData(maxLength); +} + // DemoFileWriter DemoFileWriter::DemoFileWriter(FILE* fp) : diff --git a/demboyz/demofile.h b/demboyz/demofile.h index 8985a07..d5985af 100644 --- a/demboyz/demofile.h +++ b/demboyz/demofile.h @@ -3,6 +3,7 @@ #include #include +#include "base/array.h" struct demoheader_t; struct democmdinfo_t; @@ -14,10 +15,12 @@ public: void ReadDemoHeader(demoheader_t& header); int32_t ReadRawData(uint8_t* buffer, int32_t maxLength); + Array ReadRawData(int32_t maxLength); void ReadSequenceInfo(int32_t& seqNum1, int32_t& seqNum2); void ReadCmdInfo(democmdinfo_t& info); void ReadCmdHeader(unsigned char& cmd, int32_t& tick); int32_t ReadUserCmd(int32_t& cmdNum, uint8_t* buffer, int32_t maxLength); + Array ReadUserCmd(int32_t& cmdNum, int32_t maxLength); private: FILE* m_demoFp;