mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implement dropdown/spinner combo for changing ride type
This commit is contained in:
parent
ef6aea98e4
commit
6ec89fa78b
|
@ -20,6 +20,7 @@
|
|||
- 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.
|
||||
- Improved: Ride Type option in ride window is now a dropdown.
|
||||
|
||||
0.1.0 (2017-07-12)
|
||||
------------------------------------------------------------------------
|
||||
|
|
|
@ -492,7 +492,8 @@ const uint64 window_ride_page_enabled_widgets[] = {
|
|||
};
|
||||
|
||||
const uint64 window_ride_page_hold_down_widgets[] = {
|
||||
0,
|
||||
(1ULL << WIDX_RIDE_TYPE_INCREASE) |
|
||||
(1ULL << WIDX_RIDE_TYPE_DECREASE),
|
||||
(1ULL << WIDX_VEHICLE_TRAINS_INCREASE) |
|
||||
(1ULL << WIDX_VEHICLE_TRAINS_DECREASE) |
|
||||
(1ULL << WIDX_VEHICLE_CARS_PER_TRAIN_INCREASE) |
|
||||
|
@ -2132,6 +2133,29 @@ static void window_ride_show_open_dropdown(rct_window *w, rct_widget *widget)
|
|||
gDropdownDefaultIndex = highlightedIndex;
|
||||
}
|
||||
|
||||
static void window_ride_show_ride_type_dropdown(rct_window *w, rct_widget *widget)
|
||||
{
|
||||
assert(_rideType == clamp(0, _rideType, RIDE_TYPE_COUNT));
|
||||
|
||||
for (sint32 i = 0; i < RIDE_TYPE_COUNT; i++) {
|
||||
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
|
||||
gDropdownItemsArgs[i] = RideNaming[i].name;
|
||||
}
|
||||
|
||||
window_dropdown_show_text(
|
||||
w->x + widget->left,
|
||||
w->y + widget->top,
|
||||
widget->bottom - widget->top + 1,
|
||||
w->colours[1],
|
||||
DROPDOWN_FLAG_STAY_OPEN,
|
||||
RIDE_TYPE_COUNT
|
||||
);
|
||||
|
||||
gDropdownHighlightedIndex = _rideType;
|
||||
gDropdownDefaultIndex = _rideType;
|
||||
dropdown_set_checked(_rideType, true);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006AF1BD
|
||||
|
@ -2145,12 +2169,15 @@ static void window_ride_main_mousedown(rct_window *w, rct_widgetindex widgetInde
|
|||
case WIDX_OPEN:
|
||||
window_ride_show_open_dropdown(w, widget);
|
||||
break;
|
||||
case WIDX_RIDE_TYPE:
|
||||
window_ride_show_ride_type_dropdown(w, widget);
|
||||
break;
|
||||
case WIDX_RIDE_TYPE_INCREASE:
|
||||
_rideType = min(RIDE_TYPE_COUNT - 1, _rideType + 1);
|
||||
widget_invalidate(w, WIDX_RIDE_TYPE);
|
||||
break;
|
||||
case WIDX_RIDE_TYPE_DECREASE:
|
||||
_rideType = max(0, _rideType -1);
|
||||
_rideType = max(0, _rideType - 1);
|
||||
widget_invalidate(w, WIDX_RIDE_TYPE);
|
||||
break;
|
||||
case WIDX_RIDE_TYPE_APPLY:
|
||||
|
@ -2216,6 +2243,11 @@ static void window_ride_main_dropdown(rct_window *w, rct_widgetindex widgetIndex
|
|||
set_format_arg(8, uint32, ride->name_arguments);
|
||||
ride_set_status(w->number, status);
|
||||
break;
|
||||
case WIDX_RIDE_TYPE:
|
||||
if (dropdownIndex != -1 && dropdownIndex < RIDE_TYPE_COUNT) {
|
||||
_rideType = clamp(0, dropdownIndex, RIDE_TYPE_COUNT - 1);
|
||||
widget_invalidate(w, WIDX_RIDE_TYPE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue