From aab94437dc647bc6f20b63c77fd81f0eaaa8e304 Mon Sep 17 00:00:00 2001 From: frutiemax Date: Sat, 30 Jul 2022 20:16:48 -0400 Subject: [PATCH] Add RIDE_TYPE_FLAG_HAS_ONE_STATION for gokarts and minigolf --- src/openrct2/ride/Ride.cpp | 7 ++----- src/openrct2/ride/RideData.h | 1 + src/openrct2/ride/gentle/meta/MiniGolf.h | 2 +- src/openrct2/ride/thrill/meta/GoKarts.h | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 12e71aabd0..de8e9def22 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2544,12 +2544,9 @@ static ResultWithMessage ride_mode_check_valid_station_numbers(Ride* ride) } } - if (ride->type == RIDE_TYPE_GO_KARTS || ride->type == RIDE_TYPE_MINI_GOLF) - { - if (numStations <= 1) - return { true }; + const auto& rtd = ride->GetRideTypeDescriptor(); + if (rtd.HasFlag(RIDE_TYPE_FLAG_HAS_ONE_STATION) && numStations > 1) return { false, STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE }; - } return { true }; } diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 9085274e38..1819bc1800 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -303,6 +303,7 @@ enum ride_type_flags : uint64_t RIDE_TYPE_FLAG_UP_INCLINE_REQUIRES_LIFT = (1ULL << 52), RIDE_TYPE_FLAG_PEEP_CAN_USE_UMBRELLA = (1ULL << 53), RIDE_TYPE_FLAG_IS_CASH_MACHINE = (1ULL << 54), + RIDE_TYPE_FLAG_HAS_ONE_STATION = (1ULL << 55), }; // Set on ride types that have a main colour, additional colour and support colour. diff --git a/src/openrct2/ride/gentle/meta/MiniGolf.h b/src/openrct2/ride/gentle/meta/MiniGolf.h index d3f554e83d..6525772a11 100644 --- a/src/openrct2/ride/gentle/meta/MiniGolf.h +++ b/src/openrct2/ride/gentle/meta/MiniGolf.h @@ -24,7 +24,7 @@ constexpr const RideTypeDescriptor MiniGolfRTD = SET_FIELD(CoveredTrackPieces, {}), SET_FIELD(StartTrackPiece, TrackElemType::EndStation), SET_FIELD(TrackPaintFunction, get_track_paint_function_mini_golf), - SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_TRACK | + SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_HAS_ONE_STATION | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY), SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit)), diff --git a/src/openrct2/ride/thrill/meta/GoKarts.h b/src/openrct2/ride/thrill/meta/GoKarts.h index fe2a0279d7..f37ad21494 100644 --- a/src/openrct2/ride/thrill/meta/GoKarts.h +++ b/src/openrct2/ride/thrill/meta/GoKarts.h @@ -25,7 +25,7 @@ constexpr const RideTypeDescriptor GoKartsRTD = SET_FIELD(CoveredTrackPieces, {}), SET_FIELD(StartTrackPiece, TrackElemType::EndStation), SET_FIELD(TrackPaintFunction, get_track_paint_function_go_karts), - SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_NO_TEST_MODE | + SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_ONE_STATION | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT), SET_FIELD(RideModes, EnumsToFlags(RideMode::Race, RideMode::ContinuousCircuit)),