From 50ba63df0e2e48d79304d8abedfbe559e7c965e6 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 24 Jul 2017 10:33:46 +0200 Subject: [PATCH] Clean up dropdowns Uses constants in more places. Most of the changes were taken from a PR by @wolfreak99 --- distribution/changelog.txt | 3 ++- src/openrct2/input.c | 4 ++-- src/openrct2/windows/ride.c | 35 ++++++++++++++--------------------- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index deaede74da..cebf2712b1 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -12,10 +12,11 @@ - Fix: [#5880] Leaving bumper cars without building causes assertion. - Fix: [#5920] Placing guest spawn doesn't do anything every 3rd click - Fix: [#5939] Crash when importing 'Six Flags Santa Fe'. -- Improved: The land tool buttons can now be held down to increase/decrease size. - 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. +- Improved: The land tool buttons can now be held down to increase/decrease size. +- Improved: Dropdowns longer than 32 items overflow into columns. 0.1.0 (2017-07-12) ------------------------------------------------------------------------ diff --git a/src/openrct2/input.c b/src/openrct2/input.c index ab2d368097..339a1f0961 100644 --- a/src/openrct2/input.c +++ b/src/openrct2/input.c @@ -1207,7 +1207,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde goto dropdown_cleanup; } - if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) { + if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && gDropdownItemsDisabled & (1ULL << dropdown_index)) { goto dropdown_cleanup; } @@ -1344,7 +1344,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde window_tooltip_show(colourTooltips[dropdown_index], x, y); } - if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) { + if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && gDropdownItemsDisabled & (1ULL << dropdown_index)) { return; } diff --git a/src/openrct2/windows/ride.c b/src/openrct2/windows/ride.c index c84a735e84..fa6c3ae733 100644 --- a/src/openrct2/windows/ride.c +++ b/src/openrct2/windows/ride.c @@ -2145,23 +2145,16 @@ static void window_ride_main_mousedown(rct_window *w, rct_widgetindex widgetInde window_ride_show_open_dropdown(w, widget); break; case WIDX_RIDE_TYPE_INCREASE: - if (_rideType >= 90) { - _rideType = 90; - } else { - _rideType++; - } + _rideType = min(RIDE_TYPE_COUNT - 1, _rideType + 1); widget_invalidate(w, WIDX_RIDE_TYPE); break; case WIDX_RIDE_TYPE_DECREASE: - if (_rideType == 0) { - _rideType = 0; - } else { - _rideType--; - } + _rideType = max(0, _rideType -1); widget_invalidate(w, WIDX_RIDE_TYPE); break; case WIDX_RIDE_TYPE_APPLY: - if (_rideType <= 90) { + if (_rideType < RIDE_TYPE_COUNT) + { set_operating_setting(w->number, RIDE_SETTING_RIDE_TYPE, _rideType); } window_invalidate_all(); @@ -2648,14 +2641,14 @@ static void window_ride_vehicle_mousedown(rct_window *w, rct_widgetindex widgetI rideEntry = get_ride_entry_by_ride(ride); if(gCheatsShowVehiclesFromOtherTrackTypes && !(ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE) || ride->type==RIDE_TYPE_MAZE || ride->type==RIDE_TYPE_MINI_GOLF)) { - selectionShouldBeExpanded=true; - rideTypeIterator=0; - rideTypeIteratorMax=90; + selectionShouldBeExpanded = true; + rideTypeIterator = 0; + rideTypeIteratorMax = RIDE_TYPE_COUNT - 1; } else { - selectionShouldBeExpanded=false; - rideTypeIterator=ride->type; - rideTypeIteratorMax=ride->type; + selectionShouldBeExpanded = false; + rideTypeIterator = ride->type; + rideTypeIteratorMax = ride->type; } switch (widgetIndex) { @@ -2663,17 +2656,17 @@ static void window_ride_vehicle_mousedown(rct_window *w, rct_widgetindex widgetI selectedIndex = -1; numItems = 0; - // Dropdowns with more items start acting weird, so cap it to 63. - for (; rideTypeIterator<=rideTypeIteratorMax && numItems<=63; rideTypeIterator++) { + // Dropdowns with more items start acting weird, so cap it. + for (; rideTypeIterator <= rideTypeIteratorMax && numItems < DROPDOWN_ITEMS_MAX_SIZE; rideTypeIterator++) { if(selectionShouldBeExpanded && ride_type_has_flag(rideTypeIterator, RIDE_TYPE_FLAG_FLAT_RIDE)) continue; - if(selectionShouldBeExpanded && (rideTypeIterator==RIDE_TYPE_MAZE || rideTypeIterator==RIDE_TYPE_MINI_GOLF)) + if(selectionShouldBeExpanded && (rideTypeIterator == RIDE_TYPE_MAZE || rideTypeIterator == RIDE_TYPE_MINI_GOLF)) continue; rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(rideTypeIterator); - for (uint8 *currentRideEntryIndex = rideEntryIndexPtr; *currentRideEntryIndex != RIDE_ENTRY_INDEX_NULL && numItems <= 63; currentRideEntryIndex++) { + for (uint8 *currentRideEntryIndex = rideEntryIndexPtr; *currentRideEntryIndex != RIDE_ENTRY_INDEX_NULL && numItems < DROPDOWN_ITEMS_MAX_SIZE; currentRideEntryIndex++) { rideEntryIndex = *currentRideEntryIndex; currentRideEntry = get_ride_entry(rideEntryIndex); // Skip if vehicle wants to be separate, unless subtype switching is enabled