From 838cd4fc5616be1e479a5654b014d4651d4e0ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Sat, 24 Oct 2020 20:42:06 +0200 Subject: [PATCH] When placing a block brake perform full operation mode switch --- src/openrct2/actions/TrackPlaceAction.hpp | 10 ++++++++-- src/openrct2/actions/TrackRemoveAction.hpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/openrct2/actions/TrackPlaceAction.hpp b/src/openrct2/actions/TrackPlaceAction.hpp index ade152146d..dffe32ade2 100644 --- a/src/openrct2/actions/TrackPlaceAction.hpp +++ b/src/openrct2/actions/TrackPlaceAction.hpp @@ -18,6 +18,7 @@ #include "../world/MapAnimation.h" #include "../world/Surface.h" #include "GameAction.h" +#include "RideSetSetting.hpp" class TrackPlaceActionResult final : public GameActions::Result { @@ -561,14 +562,19 @@ public: ride->CableLiftLoc = mapLoc; break; case TrackElemType::BlockBrakes: + { ride->num_block_brakes++; ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_OPERATING; - ride->mode = RideMode::ContinuousCircuitBlockSectioned; + RideMode newMode = RideMode::ContinuousCircuitBlockSectioned; if (ride->type == RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER) - ride->mode = RideMode::PoweredLaunchBlockSectioned; + newMode = RideMode::PoweredLaunchBlockSectioned; + auto rideSetSetting = RideSetSettingAction( + ride->id, RideSetSetting::Mode, static_cast(newMode)); + GameActions::ExecuteNested(&rideSetSetting); break; + } } if (trackBlock->index == 0) diff --git a/src/openrct2/actions/TrackRemoveAction.hpp b/src/openrct2/actions/TrackRemoveAction.hpp index 0c5eddf949..b82ef2be66 100644 --- a/src/openrct2/actions/TrackRemoveAction.hpp +++ b/src/openrct2/actions/TrackRemoveAction.hpp @@ -18,6 +18,7 @@ #include "../world/MapAnimation.h" #include "../world/Surface.h" #include "GameAction.h" +#include "RideSetSetting.hpp" DEFINE_GAME_ACTION(TrackRemoveAction, GAME_COMMAND_REMOVE_TRACK, GameActions::Result) { @@ -472,12 +473,17 @@ public: if (ride->num_block_brakes == 0) { ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_OPERATING; - ride->mode = RideMode::ContinuousCircuit; + RideMode newMode = RideMode::ContinuousCircuit; if (ride->type == RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER) { - ride->mode = RideMode::PoweredLaunch; + newMode = RideMode::PoweredLaunch; } + + auto rideSetSetting = RideSetSettingAction( + ride->id, RideSetSetting::Mode, static_cast(newMode)); + GameActions::ExecuteNested(&rideSetSetting); } + break; }