Clean up dropdowns

Uses constants in more places.
Most of the changes were taken from a PR by @wolfreak99
This commit is contained in:
Gymnasiast 2017-07-24 10:33:46 +02:00
parent e13dbfa419
commit 50ba63df0e
3 changed files with 18 additions and 24 deletions

View File

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

View File

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

View File

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