From 60faceaf59ef850fd806b43a9d9fc0bea21145c3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 7 Nov 2021 21:45:51 +0100 Subject: [PATCH] - Exhumed: fixed serialization. The exhumedActors array was not written out, resulting in all kinds of strange effects. --- source/core/version.h | 4 ++-- source/games/exhumed/src/exhumed.cpp | 1 + source/games/exhumed/src/save.cpp | 1 + source/games/exhumed/src/view.cpp | 31 +++++++++++++++------------- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/source/core/version.h b/source/core/version.h index 0b1c6fe9b..3f5abfddf 100644 --- a/source/core/version.h +++ b/source/core/version.h @@ -72,12 +72,12 @@ const char *GetVersionString(); #define MINSAVEVER_DN3D 10 #define MINSAVEVER_BLD 11 #define MINSAVEVER_SW 12 -#define MINSAVEVER_PS 14 +#define MINSAVEVER_PS 15 #define SAVEVER_DN3D 11 #define SAVEVER_BLD 11 #define SAVEVER_SW 12 -#define SAVEVER_PS 14 +#define SAVEVER_PS 15 #define OLD_SAVEGAME 1 // this is to keep writing out the old format in Blood, even when data has been refactored. #define NETGAMEVERSION 1 diff --git a/source/games/exhumed/src/exhumed.cpp b/source/games/exhumed/src/exhumed.cpp index 1033d3fa6..3e086e245 100644 --- a/source/games/exhumed/src/exhumed.cpp +++ b/source/games/exhumed/src/exhumed.cpp @@ -642,6 +642,7 @@ void SerializeState(FSerializer& arc) ("slipmode", bSlipMode) ("PlayClock", PlayClock) ("spiritsprite", pSpiritSprite) + .SparseArray("actors", exhumedActors, kMaxSprites, activeSprites) .EndObject(); } } diff --git a/source/games/exhumed/src/save.cpp b/source/games/exhumed/src/save.cpp index 1f229e6f7..91a8498cb 100644 --- a/source/games/exhumed/src/save.cpp +++ b/source/games/exhumed/src/save.cpp @@ -73,6 +73,7 @@ void GameInterface::SerializeGameState(FSerializer& arc) SerializeQueen(arc); SerializeRat(arc); + arc.EndObject(); } if (arc.isReading()) { diff --git a/source/games/exhumed/src/view.cpp b/source/games/exhumed/src/view.cpp index 73c63cc83..0224feebb 100644 --- a/source/games/exhumed/src/view.cpp +++ b/source/games/exhumed/src/view.cpp @@ -485,20 +485,23 @@ void Clip() void SerializeView(FSerializer& arc) { - arc("camerax", nCamerax) - ("cameray", nCameray) - ("cameraz", nCameraz) - ("touchfloor", bTouchFloor) - ("chunktotal", nChunkTotal) - ("cameraa", nCameraa) - ("camerapan", nCamerapan) - ("camera", bCamera) - ("viewz", viewz) - ("enemy", pEnemy) - ("enemypal", nEnemyPal) - .Array("vertpan", dVertPan, countof(dVertPan)) - .Array("quake", nQuake, countof(nQuake)) - .EndObject(); + if (arc.BeginObject("view")) + { + arc("camerax", nCamerax) + ("cameray", nCameray) + ("cameraz", nCameraz) + ("touchfloor", bTouchFloor) + ("chunktotal", nChunkTotal) + ("cameraa", nCameraa) + ("camerapan", nCamerapan) + ("camera", bCamera) + ("viewz", viewz) + ("enemy", pEnemy) + ("enemypal", nEnemyPal) + .Array("vertpan", dVertPan, countof(dVertPan)) + .Array("quake", nQuake, countof(nQuake)) + .EndObject(); + } } END_PS_NS