Merge pull request #19234 from Gymnasiast/objects-138

Objects v1.3.8 + fix #474: Mini Golf window allows selecting nonexistent players
This commit is contained in:
Michael Steenbeek 2023-01-21 15:41:21 +01:00 committed by GitHub
commit 09b1074d08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 48 additions and 24 deletions

View File

@ -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")

View File

@ -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.

View File

@ -45,8 +45,8 @@
<LibsSha1 Condition="'$(Platform)'=='ARM64'">f3a03c2e7b610fefa28d6962da10144f6324078d</LibsSha1>
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.0/title-sequences.zip</TitleSequencesUrl>
<TitleSequencesSha1>4ab0065e5a4d9f9c77d94718bbdfcfcd5a389da0</TitleSequencesSha1>
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.3.7/objects.zip</ObjectsUrl>
<ObjectsSha1>82930d549e0b3c3bce29718d5390c5cd474d0f28</ObjectsSha1>
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.3.8/objects.zip</ObjectsUrl>
<ObjectsSha1>2888092aab93df15bb78c4c910b13c33b1e318ef</ObjectsSha1>
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.1/opensound.zip</OpenSFXUrl>
<OpenSFXSha1>8f04aea33f8034131c3069f6accacce0d94f80c1</OpenSFXSha1>
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.0.1/openmusic.zip</OpenMSXUrl>

View File

@ -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 {

View File

@ -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);
}

View File

@ -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 },
});
}

View File

@ -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

View File

@ -485,6 +485,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