From 0f659794d028df0d4ad3a4f1f1d8a5826f3da3ce Mon Sep 17 00:00:00 2001 From: Duncan Date: Sat, 19 Oct 2019 17:11:20 +0100 Subject: [PATCH] Fix #10108. Import/Export smoke particles correctly to stop desync (#10113) Mistake made whilst refactoring import/export caused steam particiles to have the wrong information for each of its fields. This manifestied on multiplayer games causing an immediate desync. --- src/openrct2/rct2/S6Exporter.cpp | 16 ++++++++-------- src/openrct2/rct2/S6Importer.cpp | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 9f3c390936..35622d6c10 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -1177,16 +1177,16 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const rct_sprite_common { case SPRITE_MISC_STEAM_PARTICLE: { - auto src = (const RCT12SpriteSteamParticle*)csrc; - auto dst = (rct_steam_particle*)cdst; + auto src = (const rct_steam_particle*)csrc; + auto dst = (RCT12SpriteSteamParticle*)cdst; dst->time_to_move = src->time_to_move; dst->frame = src->frame; break; } case SPRITE_MISC_MONEY_EFFECT: { - auto src = (const RCT12SpriteMoneyEffect*)csrc; - auto dst = (rct_money_effect*)cdst; + auto src = (const rct_money_effect*)csrc; + auto dst = (RCT12SpriteMoneyEffect*)cdst; dst->move_delay = src->move_delay; dst->num_movements = src->num_movements; dst->vertical = src->vertical; @@ -1197,8 +1197,8 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const rct_sprite_common } case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: { - auto src = (const RCT12SpriteCrashedVehicleParticle*)csrc; - auto dst = (rct_crashed_vehicle_particle*)cdst; + auto src = (const rct_crashed_vehicle_particle*)csrc; + auto dst = (RCT12SpriteCrashedVehicleParticle*)cdst; dst->frame = src->frame; dst->time_to_live = src->time_to_live; dst->frame = src->frame; @@ -1217,8 +1217,8 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const rct_sprite_common case SPRITE_MISC_EXPLOSION_FLARE: case SPRITE_MISC_CRASH_SPLASH: { - auto src = (const rct_sprite_generic*)csrc; - auto dst = (RCT12SpriteParticle*)cdst; + auto src = (const RCT12SpriteParticle*)csrc; + auto dst = (rct_sprite_generic*)cdst; dst->frame = src->frame; break; } diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 894eb069d8..d5ab46e17e 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1467,16 +1467,16 @@ public: { case SPRITE_MISC_STEAM_PARTICLE: { - auto src = (const rct_steam_particle*)csrc; - auto dst = (RCT12SpriteSteamParticle*)cdst; + auto src = (const RCT12SpriteSteamParticle*)csrc; + auto dst = (rct_steam_particle*)cdst; dst->time_to_move = src->time_to_move; dst->frame = src->frame; break; } case SPRITE_MISC_MONEY_EFFECT: { - auto src = (const rct_money_effect*)csrc; - auto dst = (RCT12SpriteMoneyEffect*)cdst; + auto src = (const RCT12SpriteMoneyEffect*)csrc; + auto dst = (rct_money_effect*)cdst; dst->move_delay = src->move_delay; dst->num_movements = src->num_movements; dst->vertical = src->vertical; @@ -1487,8 +1487,8 @@ public: } case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: { - auto src = (const rct_crashed_vehicle_particle*)csrc; - auto dst = (RCT12SpriteCrashedVehicleParticle*)cdst; + auto src = (const RCT12SpriteCrashedVehicleParticle*)csrc; + auto dst = (rct_crashed_vehicle_particle*)cdst; dst->frame = src->frame; dst->time_to_live = src->time_to_live; dst->frame = src->frame;