From 3dfc41ec5bd17fd5c648f6de29ddbb85fcef0977 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 14 Oct 2025 23:30:06 +0200 Subject: [PATCH] Replace direct RIDE_TYPE_BOAT_HIRE check with SpecialType --- src/openrct2/ride/Ride.cpp | 2 +- src/openrct2/ride/RideData.h | 1 + src/openrct2/ride/Vehicle.cpp | 3 ++- src/openrct2/ride/rtd/water/BoatHire.h | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 9997ed2eb5..2b5d60bd79 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -3218,7 +3218,7 @@ static void RideSetStartFinishPoints(RideId rideIndex, const CoordsXYE& startEle const auto& rtd = ride->getRideTypeDescriptor(); if (rtd.specialType == RtdSpecialType::maze) RideSetMazeEntranceExitPoints(*ride); - else if (ride->type == RIDE_TYPE_BOAT_HIRE) + else if (rtd.specialType == RtdSpecialType::boatHire) RideSetBoatHireReturnPoint(*ride, startElement); if (ride->isBlockSectioned() && !(ride->lifecycleFlags & RIDE_LIFECYCLE_ON_TRACK)) diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index d17e25af5a..088757c8f0 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -453,6 +453,7 @@ enum class RtdSpecialType enterprise, motionSimulator, spaceRings, + boatHire, }; // Set on ride types that have a main colour, additional colour and support colour. diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index abf199ee10..ec2c627e92 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -1489,9 +1489,10 @@ void Vehicle::TrainReadyToDepart(uint8_t num_peeps_on_train, uint8_t num_used_se if (!(curRide->lifecycleFlags & RIDE_LIFECYCLE_BROKEN_DOWN)) { + const auto& rtd = curRide->getRideTypeDescriptor(); // Original code did not check if the ride was a boat hire, causing empty boats to leave the platform when closing a // Boat Hire with passengers on it. - if (curRide->status != RideStatus::closed || (curRide->numRiders != 0 && curRide->type != RIDE_TYPE_BOAT_HIRE)) + if (curRide->status != RideStatus::closed || (curRide->numRiders != 0 && rtd.specialType != RtdSpecialType::boatHire)) { curRide->getStation(current_station).TrainAtStation = RideStation::kNoTrain; sub_state = 2; diff --git a/src/openrct2/ride/rtd/water/BoatHire.h b/src/openrct2/ride/rtd/water/BoatHire.h index a08229fc6b..b48d8f53a6 100644 --- a/src/openrct2/ride/rtd/water/BoatHire.h +++ b/src/openrct2/ride/rtd/water/BoatHire.h @@ -76,6 +76,7 @@ constexpr RideTypeDescriptor BoatHireRTD = }, .UpdateRotating = UpdateRotatingDefault, .LightFXAddLightsMagicVehicle = Drawing::LightFx::AddLightsMagicVehicle_BoatHire, + .specialType = RtdSpecialType::boatHire, }; } // namespace OpenRCT2 // clang-format on