From cb44c634e0a78cce0c62fd9afba43ae6577dba5b Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 18 Aug 2019 22:18:22 +0100 Subject: [PATCH] Implement saving / loading of banners --- src/openrct2/ParkFile.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/openrct2/ParkFile.cpp b/src/openrct2/ParkFile.cpp index c4d4eac9b2..efc497e45a 100644 --- a/src/openrct2/ParkFile.cpp +++ b/src/openrct2/ParkFile.cpp @@ -97,6 +97,7 @@ namespace OpenRCT2 { auto& os = *_os; ReadWriteTilesChunk(os); + ReadWriteBannersChunk(os); ReadWriteRidesChunk(os); ReadWriteThingsChunk(os); ReadWriteScenarioChunk(os); @@ -127,6 +128,7 @@ namespace OpenRCT2 ReadWriteAuthoringChunk(os); ReadWriteObjectsChunk(os); ReadWriteTilesChunk(os); + ReadWriteBannersChunk(os); ReadWriteRidesChunk(os); ReadWriteThingsChunk(os); ReadWriteScenarioChunk(os); @@ -452,6 +454,37 @@ namespace OpenRCT2 } } + void ReadWriteBannersChunk(OrcaStream& os) + { + os.ReadWriteChunk(ParkFileChunkType::BANNERS, [](OrcaStream::ChunkStream& cs) { + std::vector banners; + if (cs.GetMode() == OrcaStream::Mode::WRITING) + { + for (BannerIndex i = 0; i < MAX_BANNERS; i++) + { + banners.push_back(*GetBanner(i)); + } + } + cs.ReadWriteVector(banners, [&cs](Banner& banner) { + cs.ReadWrite(banner.type); + cs.ReadWrite(banner.flags); + cs.ReadWrite(banner.text); + cs.ReadWrite(banner.colour); + cs.ReadWrite(banner.ride_index); + cs.ReadWrite(banner.text_colour); + cs.ReadWrite(banner.position); + }); + if (cs.GetMode() == OrcaStream::Mode::READING) + { + for (BannerIndex i = 0; i < MAX_BANNERS; i++) + { + auto banner = GetBanner(i); + *banner = banners[i]; + } + } + }); + } + void ReadWriteRidesChunk(OrcaStream& os) { os.ReadWriteChunk(ParkFileChunkType::RIDES, [](OrcaStream::ChunkStream& cs) {