1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-27 00:34:46 +01:00

Fix entity writing

This commit is contained in:
duncanspumpkin
2021-03-27 09:51:15 +00:00
committed by Ted John
parent 1f1d533282
commit e7113a9f26

View File

@@ -750,9 +750,24 @@ namespace OpenRCT2
}
}
template<typename T> void WriteEntitiesOfType(OrcaStream::ChunkStream& cs)
{
auto count = GetEntityListCount(T::cEntityType);
cs.Write(T::cEntityType);
cs.Write(count);
for (auto* ent : EntityList<T>())
{
ReadWriteEntity(cs, *ent);
}
}
template<typename... T> void WriteEntitiesOfTypes(OrcaStream::ChunkStream& cs)
{
(WriteEntitiesOfType<T>(cs), ...);
}
void ReadWriteEntitiesChunk(OrcaStream& os)
{
os.ReadWriteChunk(ParkFileChunkType::ENTITIES, [](OrcaStream::ChunkStream& cs) {
os.ReadWriteChunk(ParkFileChunkType::ENTITIES, [this](OrcaStream::ChunkStream& cs) {
if (cs.GetMode() == OrcaStream::Mode::READING)
{
reset_sprite_list();
@@ -769,19 +784,9 @@ namespace OpenRCT2
}
else
{
for (uint16_t i = 0; i < MAX_SPRITES; i++)
{
auto entity = get_sprite(i);
if (entity->sprite_identifier != SpriteIdentifier::Null)
{
entityIndices.push_back(i);
}
}
cs.ReadWriteVector(entityIndices, [&cs](uint16_t index) {
auto& entity = *(get_sprite(index));
cs.ReadWrite(index);
ReadWriteEntity(cs, entity);
});
WriteEntitiesOfTypes<
Vehicle, Guest, Staff, Litter, SteamParticle, MoneyEffect, VehicleCrashParticle, ExplosionCloud,
CrashSplashParticle, ExplosionFlare, JumpingFountain, Balloon, Duck>(cs);
}
});
}
@@ -841,7 +846,7 @@ namespace OpenRCT2
else
{
// Track direction and type are in the same field
cs.ReadWrite(entity.track_direction);
cs.ReadWrite(entity.TrackTypeAndDirection);
}
cs.ReadWrite(entity.TrackLocation.x);
cs.ReadWrite(entity.TrackLocation.y);