diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index f3c9776a63..d19575ae08 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -6371,7 +6371,7 @@ static void AnimateLandscapeDoor(const CoordsXYZ& doorLocation, TrackElement& tr } } -void Vehicle::UpdateLandscapeDoorA(const int32_t previousTrackHeight) const +void Vehicle::UpdateLandscapeDoors(const int32_t previousTrackHeight) const { const auto* currentRide = GetRide(); if (currentRide == nullptr || !currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::hasLandscapeDoors)) @@ -6380,32 +6380,15 @@ void Vehicle::UpdateLandscapeDoorA(const int32_t previousTrackHeight) const } const CoordsXYZ previousTrackLocation = CoordsXYZ(x, y, previousTrackHeight).ToTileStart(); - if (MapGetTrackElementAtBeforeSurfaceFromRide(previousTrackLocation, ride) != nullptr) - return; - - auto* const tileElement = MapGetTrackElementAtBeforeSurfaceFromRide(TrackLocation, ride); - if (tileElement != nullptr) + auto* const previousTrackElement = MapGetTrackElementAtBeforeSurfaceFromRide(previousTrackLocation, ride); + auto* const currentTrackElement = MapGetTrackElementAtBeforeSurfaceFromRide(TrackLocation, ride); + if (previousTrackElement != nullptr && currentTrackElement == nullptr) { - AnimateLandscapeDoor(TrackLocation, *tileElement->AsTrack(), next_vehicle_on_train.IsNull()); + AnimateLandscapeDoor(previousTrackLocation, *previousTrackElement->AsTrack(), next_vehicle_on_train.IsNull()); } -} - -void Vehicle::UpdateLandscapeDoorB(const int32_t previousTrackHeight) const -{ - const auto* currentRide = GetRide(); - if (currentRide == nullptr || !currentRide->getRideTypeDescriptor().HasFlag(RtdFlag::hasLandscapeDoors)) + else if (previousTrackElement == nullptr && currentTrackElement != nullptr) { - return; - } - - if (MapGetTrackElementAtBeforeSurfaceFromRide(TrackLocation, ride) != nullptr) - return; - - const CoordsXYZ previousTrackLocation = CoordsXYZ(x, y, previousTrackHeight).ToTileStart(); - auto* const tileElement = MapGetTrackElementAtBeforeSurfaceFromRide(previousTrackLocation, ride); - if (tileElement != nullptr) - { - AnimateLandscapeDoor(previousTrackLocation, *tileElement->AsTrack(), next_vehicle_on_train.IsNull()); + AnimateLandscapeDoor(TrackLocation, *currentTrackElement->AsTrack(), next_vehicle_on_train.IsNull()); } } @@ -7116,8 +7099,7 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( } // Change from original: this used to check if the vehicle allowed doors. UpdateSceneryDoorBackwards(); - UpdateLandscapeDoorA(previousTrackHeight); - UpdateLandscapeDoorB(previousTrackHeight); + UpdateLandscapeDoors(previousTrackHeight); return true; } diff --git a/src/openrct2/ride/Vehicle.h b/src/openrct2/ride/Vehicle.h index 21c6707552..a842d3dc14 100644 --- a/src/openrct2/ride/Vehicle.h +++ b/src/openrct2/ride/Vehicle.h @@ -377,8 +377,7 @@ private: void UpdateGoKartAttemptSwitchLanes(); void UpdateSceneryDoor() const; void UpdateSceneryDoorBackwards() const; - void UpdateLandscapeDoorA(const int32_t previousTrackHeight) const; - void UpdateLandscapeDoorB(const int32_t previousTrackHeight) const; + void UpdateLandscapeDoors(const int32_t previousTrackHeight) const; int32_t CalculateRiderBraking() const; uint8_t ChooseBrakeSpeed() const; void PopulateBrakeSpeed(const CoordsXYZ& vehicleTrackLocation, TrackElement& brake);