mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-28 09:14:58 +01:00
Initial park save preview implementation
This commit is contained in:
@@ -59,6 +59,7 @@
|
||||
#include "../world/tile_element/SmallSceneryElement.h"
|
||||
#include "../world/tile_element/TrackElement.h"
|
||||
#include "Legacy.h"
|
||||
#include "ParkPreview.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdint>
|
||||
@@ -94,6 +95,7 @@ namespace OpenRCT2
|
||||
constexpr uint32_t CHEATS = 0x36;
|
||||
constexpr uint32_t RESTRICTED_OBJECTS = 0x37;
|
||||
constexpr uint32_t PLUGIN_STORAGE = 0x38;
|
||||
constexpr uint32_t PREVIEW = 0x39;
|
||||
constexpr uint32_t PACKED_OBJECTS = 0x80;
|
||||
// clang-format on
|
||||
}; // namespace ParkFileChunkType
|
||||
@@ -196,6 +198,7 @@ namespace OpenRCT2
|
||||
ReadWriteCheatsChunk(gameState, os);
|
||||
ReadWriteRestrictedObjectsChunk(gameState, os);
|
||||
ReadWritePluginStorageChunk(gameState, os);
|
||||
ReadWritePreviewChunk(gameState, os);
|
||||
ReadWritePackedObjectsChunk(os);
|
||||
}
|
||||
|
||||
@@ -235,6 +238,24 @@ namespace OpenRCT2
|
||||
return entry;
|
||||
}
|
||||
|
||||
ParkPreview ReadPreviewChunk()
|
||||
{
|
||||
ParkPreview preview{};
|
||||
auto& os = *_os;
|
||||
os.ReadWriteChunk(ParkFileChunkType::PREVIEW, [&preview](OrcaStream::ChunkStream& cs) {
|
||||
cs.ReadWrite(preview.parkName);
|
||||
cs.ReadWrite(preview.parkRating);
|
||||
cs.ReadWrite(preview.year);
|
||||
cs.ReadWrite(preview.month);
|
||||
cs.ReadWrite(preview.day);
|
||||
cs.ReadWrite(preview.parkUsesMoney);
|
||||
cs.ReadWrite(preview.cash);
|
||||
cs.ReadWrite(preview.numRides);
|
||||
cs.ReadWrite(preview.numGuests);
|
||||
});
|
||||
return preview;
|
||||
}
|
||||
|
||||
private:
|
||||
static uint8_t GetMinCarsPerTrain(uint8_t value)
|
||||
{
|
||||
@@ -477,6 +498,23 @@ namespace OpenRCT2
|
||||
});
|
||||
}
|
||||
|
||||
void ReadWritePreviewChunk(GameState_t& gameState, OrcaStream& os)
|
||||
{
|
||||
os.ReadWriteChunk(ParkFileChunkType::PREVIEW, [&gameState](OrcaStream::ChunkStream& cs) {
|
||||
auto preview = OpenRCT2::generatePreviewFromGameState(gameState);
|
||||
|
||||
cs.ReadWrite(preview.parkName);
|
||||
cs.ReadWrite(preview.parkRating);
|
||||
cs.ReadWrite(preview.year);
|
||||
cs.ReadWrite(preview.month);
|
||||
cs.ReadWrite(preview.day);
|
||||
cs.ReadWrite(preview.parkUsesMoney);
|
||||
cs.ReadWrite(preview.cash);
|
||||
cs.ReadWrite(preview.numRides);
|
||||
cs.ReadWrite(preview.numGuests);
|
||||
});
|
||||
}
|
||||
|
||||
void ReadWriteGeneralChunk(GameState_t& gameState, OrcaStream& os)
|
||||
{
|
||||
const auto version = os.GetHeader().TargetVersion;
|
||||
@@ -2745,6 +2783,11 @@ public:
|
||||
*dst = _parkFile->ReadScenarioChunk();
|
||||
return true;
|
||||
}
|
||||
|
||||
ParkPreview GetParkPreview() override
|
||||
{
|
||||
return _parkFile->ReadPreviewChunk();
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<IParkImporter> ParkImporter::CreateParkFile(IObjectRepository& objectRepository)
|
||||
|
||||
Reference in New Issue
Block a user