From 11da10971f9020379250b1fc0df3ca65dc06c8ef Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Wed, 24 Feb 2021 08:00:38 +0000 Subject: [PATCH] Reorg again to reduce casts --- src/openrct2/rct2/S6Exporter.cpp | 91 ++++++++++++++------------------ src/openrct2/rct2/S6Exporter.h | 2 +- 2 files changed, 41 insertions(+), 52 deletions(-) diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 578036c0c4..125c620f25 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -1040,12 +1040,11 @@ void S6Exporter::ExportEntityCommonProperties(RCT12SpriteBase* dst, const Sprite dst->sprite_direction = src->sprite_direction; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Vehicle* src) +template<> void S6Exporter::ExportEntity(RCT2SpriteVehicle* dst, const Vehicle* src) { - auto* dst = static_cast(baseDst); const auto* ride = src->GetRide(); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->vehicle_sprite_type = src->vehicle_sprite_type; dst->bank_rotation = src->bank_rotation; @@ -1129,13 +1128,13 @@ template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Vehicle dst->target_seat_rotation = src->target_seat_rotation; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Guest* src) +template<> void S6Exporter::ExportEntity(RCT2SpritePeep* dst, const Guest* src) { - ExportEntityPeep(static_cast(baseDst), src); + ExportEntityPeep(dst, src); } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Staff* src) +template<> void S6Exporter::ExportEntity(RCT2SpritePeep* dst, const Staff* src) { - ExportEntityPeep(static_cast(baseDst), src); + ExportEntityPeep(dst, src); } void S6Exporter::ExportEntityPeep(RCT2SpritePeep* dst, const Peep* src) @@ -1290,18 +1289,16 @@ void S6Exporter::ExportEntityPeep(RCT2SpritePeep* dst, const Peep* src) dst->item_standard_flags = static_cast(src->GetItemFlags()); } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const SteamParticle* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteSteamParticle* dst, const SteamParticle* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->time_to_move = src->time_to_move; dst->frame = src->frame; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const MoneyEffect* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteMoneyEffect* dst, const MoneyEffect* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->move_delay = src->MoveDelay; dst->num_movements = src->NumMovements; @@ -1310,10 +1307,9 @@ template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const MoneyEf dst->offset_x = src->OffsetX; dst->wiggle = src->Wiggle; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const VehicleCrashParticle* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteCrashedVehicleParticle* dst, const VehicleCrashParticle* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->frame = src->frame; dst->time_to_live = src->time_to_live; @@ -1328,10 +1324,9 @@ template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Vehicle dst->acceleration_y = src->acceleration_y; dst->acceleration_z = src->acceleration_z; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const JumpingFountain* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteJumpingFountain* dst, const JumpingFountain* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->num_ticks_alive = src->NumTicksAlive; dst->frame = src->frame; @@ -1341,52 +1336,46 @@ template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Jumping dst->target_y = src->TargetY; dst->iteration = src->Iteration; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Balloon* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteBalloon* dst, const Balloon* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->popped = src->popped; dst->time_to_move = src->time_to_move; dst->frame = src->frame; dst->colour = src->colour; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Duck* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteDuck* dst, const Duck* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->frame = src->frame; dst->target_x = src->target_x; dst->target_y = src->target_y; dst->state = EnumValue(src->state); } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const ExplosionCloud* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteParticle* dst, const ExplosionCloud* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->frame = src->frame; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const ExplosionFlare* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteParticle* dst, const ExplosionFlare* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->frame = src->frame; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const CrashSplashParticle* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteParticle* dst, const CrashSplashParticle* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->frame = src->frame; } -template<> void S6Exporter::ExportEntity(RCT12SpriteBase* baseDst, const Litter* src) +template<> void S6Exporter::ExportEntity(RCT12SpriteLitter* dst, const Litter* src) { - auto* dst = static_cast(baseDst); - ExportEntityCommonProperties(baseDst, src); + ExportEntityCommonProperties(dst, src); dst->type = EnumValue(src->SubType); dst->creationTick = src->creationTick; } @@ -1405,59 +1394,59 @@ void S6Exporter::ExportEntities() for (auto* entity : EntityList(EntityListId::Peep)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Peep)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Vehicle)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::TrainHead)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Litter)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } for (auto* entity : EntityList(EntityListId::Misc)) { - ExportEntity(&_s6.sprites[entity->sprite_index].unknown, entity); + ExportEntity(static_cast(&_s6.sprites[entity->sprite_index].unknown), entity); } RebuildEntityLinks(); diff --git a/src/openrct2/rct2/S6Exporter.h b/src/openrct2/rct2/S6Exporter.h index e08cc88fdb..175994f5f1 100644 --- a/src/openrct2/rct2/S6Exporter.h +++ b/src/openrct2/rct2/S6Exporter.h @@ -47,7 +47,7 @@ public: void ExportRides(); void ExportRide(rct2_ride* dst, const Ride* src); void ExportEntities(); - template void ExportEntity(RCT12SpriteBase* dst, const T* src); + template void ExportEntity(RCT12_T* dst, const OpenRCT2_T* src); void ExportEntityCommonProperties(RCT12SpriteBase* dst, const SpriteBase* src); void ExportEntityPeep(RCT2SpritePeep* dst, const Peep* src);