From 8c48b5a24913638b85baaf0b64693f242adaffa9 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Sat, 29 Jul 2017 10:44:51 +0200 Subject: [PATCH] Fix #6026: 'Select ride to advertise' dropdown does not display all items (#6032) Show up to 128 open rides in the New Campaign dropdown. --- distribution/changelog.txt | 1 + src/openrct2/windows/new_campaign.c | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index e7d93e5f24..7d35115357 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -20,6 +20,7 @@ - Fix: [#5981] Ride list doesn't update after using quick demolish. - Fix: [#5984] Allow socket binding to same port after crash - Fix: [#5998] Staff not getting paid / no loan interest. +- Fix: [#6026] 'Select ride to advertise' dropdown does not display all items. - Improved: [#4301] Leading and trailing whitespace in player name is now removed. - Improved: [#5859] OpenGL rendering performance - Improved: [#5863] Switching drawing engines no longer requires the application to restart. diff --git a/src/openrct2/windows/new_campaign.c b/src/openrct2/windows/new_campaign.c index eb29f33180..33bcc62c41 100644 --- a/src/openrct2/windows/new_campaign.c +++ b/src/openrct2/windows/new_campaign.c @@ -165,15 +165,25 @@ void window_new_campaign_open(sint16 campaignType) // Get all applicable rides numApplicableRides = 0; window_new_campaign_rides[0] = 255; - FOR_ALL_RIDES(i, ride) { - if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_SELLS_FOOD | RIDE_TYPE_FLAG_SELLS_DRINKS | RIDE_TYPE_FLAG_IS_BATHROOM)) - window_new_campaign_rides[numApplicableRides++] = i; + FOR_ALL_RIDES(i, ride) + { + if (ride->status != RIDE_STATUS_OPEN) + { + continue; + } + if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_SELLS_FOOD | RIDE_TYPE_FLAG_SELLS_DRINKS | RIDE_TYPE_FLAG_IS_BATHROOM)) + { + continue; + } + + window_new_campaign_rides[numApplicableRides++] = i; } - // Take top 40 most reliable rides - if (numApplicableRides > 40) { + // Take top 128 most valuable rides + if (numApplicableRides > DROPDOWN_ITEMS_MAX_SIZE) + { qsort(window_new_campaign_rides, numApplicableRides, sizeof(uint8), ride_value_compare); - numApplicableRides = 40; + numApplicableRides = DROPDOWN_ITEMS_MAX_SIZE; } // Sort rides by name