From 900a25f0eef9b93af66775109d8da117fb51a595 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 20 Jan 2023 12:37:01 +0100 Subject: [PATCH 1/3] Update to objects release v1.3.8 --- CMakeLists.txt | 4 ++-- openrct2.proj | 4 ++-- shell.nix | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 76a17f2438..95b962a9fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,9 +64,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.0") set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip") set(TITLE_SEQUENCE_SHA1 "4ab0065e5a4d9f9c77d94718bbdfcfcd5a389da0") -set(OBJECTS_VERSION "1.3.7") +set(OBJECTS_VERSION "1.3.8") set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip") -set(OBJECTS_SHA1 "82930d549e0b3c3bce29718d5390c5cd474d0f28") +set(OBJECTS_SHA1 "2888092aab93df15bb78c4c910b13c33b1e318ef") set(OPENSFX_VERSION "1.0.1") set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip") diff --git a/openrct2.proj b/openrct2.proj index 87bae6926c..7c512c6f98 100644 --- a/openrct2.proj +++ b/openrct2.proj @@ -45,8 +45,8 @@ f3a03c2e7b610fefa28d6962da10144f6324078d https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.0/title-sequences.zip 4ab0065e5a4d9f9c77d94718bbdfcfcd5a389da0 - https://github.com/OpenRCT2/objects/releases/download/v1.3.7/objects.zip - 82930d549e0b3c3bce29718d5390c5cd474d0f28 + https://github.com/OpenRCT2/objects/releases/download/v1.3.8/objects.zip + 2888092aab93df15bb78c4c910b13c33b1e318ef https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.1/opensound.zip 8f04aea33f8034131c3069f6accacce0d94f80c1 https://github.com/OpenRCT2/OpenMusic/releases/download/v1.0.1/openmusic.zip diff --git a/shell.nix b/shell.nix index c74d360ca6..25c54be2a8 100644 --- a/shell.nix +++ b/shell.nix @@ -15,8 +15,8 @@ let objects-src = pkgs.fetchFromGitHub { owner = "OpenRCT2"; repo = "objects"; - rev = "v1.3.7"; - sha256 = "d6be9743c68f233674f5549204637b1f0304d7567a816d18e3f1576500a51d38"; + rev = "v1.3.8"; + sha256 = "84a95590d13a753b1d239f7f06c8d121e36fd28694b21f33646518e2012904ae"; }; title-sequences-src = pkgs.fetchFromGitHub { From 06dd935d36ef0dd1c3732c8ac3e2066fafe069ae Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 20 Jan 2023 12:39:30 +0100 Subject: [PATCH 2/3] Use RCT1 variants of Corkscrew and Go Karts when importing S4 --- src/openrct2/rct1/Tables.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index 4f572d3642..40d3400b28 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -719,10 +719,10 @@ namespace RCT1 "rct2.ride.ding1", // RCT1_RIDE_TYPE_WATER_SLIDE "rct2.ride.amt1", // RCT1_RIDE_TYPE_MINE_TRAIN_ROLLER_COASTER "rct2.ride.clift1", // RCT1_RIDE_TYPE_CHAIRLIFT - "rct2.ride.arrt1", // RCT1_RIDE_TYPE_STEEL_CORKSCREW_ROLLER_COASTER + "rct1.ride.corkscrew_trains", // RCT1_RIDE_TYPE_STEEL_CORKSCREW_ROLLER_COASTER "rct2.ride.hmaze", // RCT1_RIDE_TYPE_HEDGE_MAZE "rct2.ride.hskelt", // RCT1_RIDE_TYPE_SPIRAL_SLIDE - "rct2.ride.kart1", // RCT1_RIDE_TYPE_GO_KARTS + "rct1.ride.go_karts", // RCT1_RIDE_TYPE_GO_KARTS "rct2.ride.lfb1", // RCT1_RIDE_TYPE_LOG_FLUME "rct2.ride.rapboat", // RCT1_RIDE_TYPE_RIVER_RAPIDS "rct2.ride.dodg1", // RCT1_RIDE_TYPE_DODGEMS @@ -828,11 +828,11 @@ namespace RCT1 "rct2.ride.obs1", // RCT1_VEHICLE_TYPE_ROTATING_CABIN "rct2.ride.amt1", // RCT1_VEHICLE_TYPE_MINE_TRAIN "rct2.ride.clift1", // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS - "rct2.ride.arrt1", // RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN + "rct1.ride.corkscrew_trains", // RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN "rct2.ride.steep2", // RCT1_VEHICLE_TYPE_MOTORBIKES "rct2.ride.rcr", // RCT1_VEHICLE_TYPE_RACING_CARS "rct2.ride.truck1", // RCT1_VEHICLE_TYPE_TRUCKS - "rct2.ride.kart1", // RCT1_VEHICLE_TYPE_GO_KARTS + "rct1.ride.go_karts", // RCT1_VEHICLE_TYPE_GO_KARTS "rct2.ride.rapboat", // RCT1_VEHICLE_TYPE_RAPIDS_BOATS "rct2.ride.lfb1", // RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS "rct2.ride.dodg1", // RCT1_VEHICLE_TYPE_DODGEMS From eb5fe27495caedf99fd9d7bf6eb9704c36b89675 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 20 Jan 2023 13:24:16 +0100 Subject: [PATCH 3/3] Fix #474: Mini Golf window allows selecting nonexistent players --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Ride.cpp | 49 +++++++++++++++++++++--------- src/openrct2/object/RideObject.cpp | 1 + src/openrct2/ride/Ride.h | 1 + 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 33b1aa6835..f5b30ce64f 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -14,6 +14,7 @@ - Improved: [#19044] Added special thanks to RMC and Wiegand to the About page. - Change: [#19018] Renamed actions to fit the naming scheme. - Change: [#19091] [Plugin] Add game action information to callback arguments of custom actions. +- Fix: [#474] Mini golf window shows more players than there actually are (original bug). - Fix: [#18467] “Selected only” Object Selection filter is active in Track Designs Manager, and cannot be toggled. - Fix: [#18905] Ride Construction window theme is not applied correctly. - Fix: [#18911] Mini Golf station does not draw correctly from all angles. diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 4219018a84..cd30ed58b5 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1724,6 +1724,33 @@ static void WindowRideMainResize(rct_window* w) WindowRideInitViewport(w); } +static size_t GetNumPeepsInTrain(const Ride& ride, int32_t trainIndex) +{ + auto numPeepsInTrain = 0; + const auto* vehicle = TryGetVehicle(ride.vehicles[trainIndex]); + while (vehicle != nullptr) + { + numPeepsInTrain += vehicle->num_peeps; + vehicle = TryGetVehicle(vehicle->next_vehicle_on_train); + } + return numPeepsInTrain; +} + +static bool TrainMustBeHidden(const Ride& ride, int32_t trainIndex) +{ + if (!(ride.lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) + return true; + + const auto* rideEntry = ride.GetRideEntry(); + if (rideEntry == nullptr) + return false; + + if (!(rideEntry->flags & RIDE_ENTRY_FLAG_HIDE_EMPTY_TRAINS)) + return false; + + return GetNumPeepsInTrain(ride, trainIndex) == 0; +} + /** * * rct2: 0x006AF825 @@ -1735,8 +1762,10 @@ static void WindowRideShowViewDropdown(rct_window* w, Widget* widget) if (ride == nullptr) return; + const auto& rtd = ride->GetRideTypeDescriptor(); + int32_t numItems = 1; - if (!ride->GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_NO_VEHICLES)) + if (!rtd.HasFlag(RIDE_TYPE_FLAG_NO_VEHICLES)) { numItems += ride->num_stations; numItems += ride->NumTrains; @@ -1751,14 +1780,16 @@ static void WindowRideShowViewDropdown(rct_window* w, Widget* widget) gDropdownItems[0].Args = STR_OVERALL_VIEW; int32_t currentItem = 1; - const auto& rtd = ride->GetRideTypeDescriptor(); - // Vehicles int32_t name = GetRideComponentName(rtd.NameConvention.vehicle).number; - for (int32_t i = 1; i <= ride->NumTrains; i++) + for (int32_t i = 0; i < ride->NumTrains; i++) { gDropdownItems[currentItem].Format = STR_DROPDOWN_MENU_LABEL; gDropdownItems[currentItem].Args = name | (currentItem << 16); + if (TrainMustBeHidden(*ride, i)) + { + Dropdown::SetDisabled(currentItem, true); + } currentItem++; } @@ -1771,16 +1802,6 @@ static void WindowRideShowViewDropdown(rct_window* w, Widget* widget) currentItem++; } - // Set highlighted item - if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) - { - for (int32_t i = 0; i < ride->NumTrains; i++) - { - // The +1 is to skip 'Overall view' - Dropdown::SetDisabled(i + 1, true); - } - } - // Set checked item Dropdown::SetChecked(w->ride.view, true); } diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 7444ca71a7..fda94fddde 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -561,6 +561,7 @@ void RideObject::ReadJson(IReadObjectContext* context, json_t& root) { "noCollisionCrashes", RIDE_ENTRY_FLAG_DISABLE_COLLISION_CRASHES }, { "disablePainting", RIDE_ENTRY_FLAG_DISABLE_COLOUR_TAB }, { "riderControlsSpeed", RIDE_ENTRY_FLAG_RIDER_CONTROLS_SPEED }, + { "hideEmptyTrains", RIDE_ENTRY_FLAG_HIDE_EMPTY_TRAINS }, }); } diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 3e65b176ff..0d836d3311 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -492,6 +492,7 @@ enum // Must be set with swing mode 1 as well. RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 = 1 << 20, RIDE_ENTRY_FLAG_RIDER_CONTROLS_SPEED = 1 << 21, + RIDE_ENTRY_FLAG_HIDE_EMPTY_TRAINS = 1 << 22, }; enum