Implement saving / loading of banners

This commit is contained in:
Ted John 2019-08-18 22:18:22 +01:00
parent bc66342521
commit cb44c634e0
1 changed files with 33 additions and 0 deletions

View File

@ -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<Banner> 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) {