mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add version to replay file.
This commit is contained in:
parent
c7ab757a86
commit
19ffc6208f
|
@ -78,6 +78,9 @@ namespace OpenRCT2
|
||||||
|
|
||||||
struct ReplayRecordData
|
struct ReplayRecordData
|
||||||
{
|
{
|
||||||
|
uint32_t magic;
|
||||||
|
uint16_t version;
|
||||||
|
std::string networkId;
|
||||||
MemoryStream parkData;
|
MemoryStream parkData;
|
||||||
MemoryStream spriteSpatialData;
|
MemoryStream spriteSpatialData;
|
||||||
MemoryStream parkParams;
|
MemoryStream parkParams;
|
||||||
|
@ -92,6 +95,9 @@ namespace OpenRCT2
|
||||||
|
|
||||||
class ReplayManager final : public IReplayManager
|
class ReplayManager final : public IReplayManager
|
||||||
{
|
{
|
||||||
|
static constexpr uint16_t ReplayVersion = 1;
|
||||||
|
static constexpr uint32_t ReplayMagic = 0x5243524F; // ORCR.
|
||||||
|
|
||||||
enum class ReplayMode
|
enum class ReplayMode
|
||||||
{
|
{
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
|
@ -230,6 +236,9 @@ namespace OpenRCT2
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
auto replayData = std::make_unique<ReplayRecordData>();
|
auto replayData = std::make_unique<ReplayRecordData>();
|
||||||
|
replayData->magic = ReplayMagic;
|
||||||
|
replayData->version = ReplayVersion;
|
||||||
|
replayData->networkId = network_get_version();
|
||||||
replayData->name = name;
|
replayData->name = name;
|
||||||
replayData->tickStart = gCurrentTicks;
|
replayData->tickStart = gCurrentTicks;
|
||||||
if (maxTicks != k_MaxReplayTicks)
|
if (maxTicks != k_MaxReplayTicks)
|
||||||
|
@ -268,6 +277,7 @@ namespace OpenRCT2
|
||||||
|
|
||||||
_currentRecording->tickEnd = gCurrentTicks;
|
_currentRecording->tickEnd = gCurrentTicks;
|
||||||
|
|
||||||
|
// Serialise Body.
|
||||||
DataSerialiser serialiser(true);
|
DataSerialiser serialiser(true);
|
||||||
Serialise(serialiser, *_currentRecording);
|
Serialise(serialiser, *_currentRecording);
|
||||||
|
|
||||||
|
@ -282,9 +292,9 @@ namespace OpenRCT2
|
||||||
FILE* fp = fopen(outFile.c_str(), "wb");
|
FILE* fp = fopen(outFile.c_str(), "wb");
|
||||||
if (fp)
|
if (fp)
|
||||||
{
|
{
|
||||||
auto& stream = serialiser.GetStream();
|
const auto& stream = serialiser.GetStream();
|
||||||
|
|
||||||
fwrite(stream.GetData(), 1, stream.GetLength(), fp);
|
fwrite(stream.GetData(), 1, stream.GetLength(), fp);
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
|
@ -618,6 +628,19 @@ namespace OpenRCT2
|
||||||
|
|
||||||
bool Serialise(DataSerialiser& serialiser, ReplayRecordData& data)
|
bool Serialise(DataSerialiser& serialiser, ReplayRecordData& data)
|
||||||
{
|
{
|
||||||
|
serialiser << data.magic;
|
||||||
|
if (data.magic != ReplayMagic)
|
||||||
|
{
|
||||||
|
log_error("Magic does not match %08X", data.magic);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
serialiser << data.version;
|
||||||
|
if (data.version != ReplayVersion)
|
||||||
|
{
|
||||||
|
log_error("Invalid version detected %04X", data.version);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
serialiser << data.networkId;
|
||||||
serialiser << data.name;
|
serialiser << data.name;
|
||||||
serialiser << data.parkData;
|
serialiser << data.parkData;
|
||||||
serialiser << data.parkParams;
|
serialiser << data.parkParams;
|
||||||
|
|
Loading…
Reference in New Issue