From f6c466d598bbf126b55af325988d19a4d33d0ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sat, 19 Feb 2022 23:41:37 +0200 Subject: [PATCH] Fix #16617: Park format storing/loading temporary paused state --- src/openrct2/park/ParkFile.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index 3159d2022f..dd82876d5d 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -422,7 +422,18 @@ namespace OpenRCT2 void ReadWriteGeneralChunk(OrcaStream& os) { auto found = os.ReadWriteChunk(ParkFileChunkType::GENERAL, [this](OrcaStream::ChunkStream& cs) { - cs.ReadWrite(gGamePaused); + // Only GAME_PAUSED_NORMAL from gGamePaused is relevant. + if (cs.GetMode() == OrcaStream::Mode::READING) + { + const uint8_t isPaused = cs.Read(); + gGamePaused &= ~GAME_PAUSED_NORMAL; + gGamePaused |= (isPaused & GAME_PAUSED_NORMAL); + } + else + { + const uint8_t isPaused = (gGamePaused & GAME_PAUSED_NORMAL); + cs.Write(isPaused); + } cs.ReadWrite(gCurrentTicks); cs.ReadWrite(gDateMonthTicks); cs.ReadWrite(gDateMonthsElapsed);