From 2181e35b95abf6389b0491bcac32d4765de0ae61 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Thu, 31 May 2018 22:43:48 +0200 Subject: [PATCH] Replace spinner widgets with horizontal +/- buttons. Limited to Options and Ride windows so far. --- data/language/en-GB.txt | 4 +-- src/openrct2-ui/windows/Options.cpp | 23 +++++----------- src/openrct2-ui/windows/Ride.cpp | 42 +++++++++-------------------- src/openrct2/interface/Widget.cpp | 16 +++++++++-- src/openrct2/interface/Widget.h | 7 +++++ 5 files changed, 41 insertions(+), 51 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 093245f383..f7ec34bca6 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before depa STR_1215 :{WINDOW_COLOUR_2}Synchronise with adjacent stations STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronise departure with all adjacent stations (for 'racing') STR_1217 :{COMMA16} seconds -STR_1218 :{BLACK}{SMALLUP} -STR_1219 :{BLACK}{SMALLDOWN} +STR_1218 :{BLACK}+ +STR_1219 :{BLACK}- STR_1220 :Exit only STR_1221 :No entrance STR_1222 :No exit diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index b1af3f73e1..00f95c07a0 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -225,31 +225,20 @@ enum WINDOW_OPTIONS_WIDGET_IDX { static rct_widget window_options_display_widgets[] = { MAIN_OPTIONS_WIDGETS, { WWT_GROUPBOX, 1, 5, 304, 53, 207, STR_HARDWARE_GROUP, STR_NONE }, // Hardware group - { WWT_DROPDOWN, 1, 155, 299, 68, 79, STR_NONE, STR_NONE }, // Fullscreen { WWT_BUTTON, 1, 288, 298, 69, 78, STR_DROPDOWN_GLYPH, STR_FULLSCREEN_MODE_TIP }, - - { WWT_DROPDOWN, 1, 155, 299, 83, 94, STR_ARG_16_RESOLUTION_X_BY_Y, STR_NONE }, // Resolution - { WWT_BUTTON, 1, 288, 298, 84, 93, STR_DROPDOWN_GLYPH, STR_DISPLAY_RESOLUTION_TIP }, - - { WWT_SPINNER, 1, 155, 299, 98, 109, STR_NONE, STR_WINDOW_SCALE_TIP }, // Scale spinner - { WWT_BUTTON, 1, 288, 298, 99, 103, STR_NUMERIC_UP, STR_NONE }, // Scale spinner up - { WWT_BUTTON, 1, 288, 298, 104, 108, STR_NUMERIC_DOWN, STR_NONE }, // Scale spinner down - + { WWT_DROPDOWN, 1, 155, 299, 83, 94, STR_ARG_16_RESOLUTION_X_BY_Y, STR_NONE }, // Resolution + { WWT_BUTTON, 1, 288, 298, 84, 93, STR_DROPDOWN_GLYPH, STR_DISPLAY_RESOLUTION_TIP }, + SPINNER_WIDGETS (1, 155, 299, 98, 109, STR_NONE, STR_WINDOW_SCALE_TIP), // Scale spinner (3 widgets) { WWT_DROPDOWN, 1, 155, 299, 113, 124, STR_NONE, STR_NONE }, { WWT_BUTTON, 1, 288, 298, 114, 123, STR_DROPDOWN_GLYPH, STR_DRAWING_ENGINE_TIP }, - - { WWT_DROPDOWN, 1, 155, 299, 128, 139, STR_NONE, STR_NONE }, // Scaling quality hint - { WWT_BUTTON, 1, 288, 298, 129, 138, STR_DROPDOWN_GLYPH, STR_SCALE_QUALITY_TIP }, - - { WWT_CHECKBOX, 1, 25, 290, 144, 155, STR_STEAM_OVERLAY_PAUSE, STR_STEAM_OVERLAY_PAUSE_TIP }, // Pause on steam overlay - + { WWT_DROPDOWN, 1, 155, 299, 128, 139, STR_NONE, STR_NONE }, // Scaling quality hint + { WWT_BUTTON, 1, 288, 298, 129, 138, STR_DROPDOWN_GLYPH, STR_SCALE_QUALITY_TIP }, + { WWT_CHECKBOX, 1, 25, 290, 144, 155, STR_STEAM_OVERLAY_PAUSE, STR_STEAM_OVERLAY_PAUSE_TIP }, // Pause on steam overlay { WWT_CHECKBOX, 1, 11, 153, 161, 172, STR_UNCAP_FPS, STR_UNCAP_FPS_TIP }, // Uncap fps { WWT_CHECKBOX, 1, 155, 290, 161, 172, STR_SHOW_FPS, STR_SHOW_FPS_TIP }, // Show fps { WWT_CHECKBOX, 1, 11, 290, 176, 187, STR_USE_VSYNC, STR_USE_VSYNC_TIP }, // Use vsync { WWT_CHECKBOX, 1, 11, 290, 191, 202, STR_MINIMISE_FULLSCREEN_ON_FOCUS_LOSS, STR_MINIMISE_FULLSCREEN_ON_FOCUS_LOSS_TIP }, // Minimise fullscreen focus loss - - { WIDGETS_END }, }; diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 21f726597a..96e0627a04 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -238,37 +238,25 @@ static rct_widget window_ride_main_widgets[] = { // 0x009ADDA8 static rct_widget window_ride_vehicle_widgets[] = { MAIN_RIDE_WIDGETS, - { WWT_DROPDOWN, 1, 7, 308, 50, 61, 0xFFFFFFFF, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 51, 60, STR_DROPDOWN_GLYPH, STR_NONE }, - { WWT_SCROLL, 1, 7, 308, 147, 189, 0, STR_NONE }, - { WWT_SPINNER, 1, 7, 151, 196, 207, STR_RIDE_VEHICLE_COUNT, STR_MAX_VEHICLES_TIP }, - { WWT_BUTTON, 1, 140, 150, 197, 201, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 140, 150, 202, 206, STR_NUMERIC_DOWN, STR_NONE }, - { WWT_SPINNER, 1, 164, 308, 196, 207, STR_1_CAR_PER_TRAIN, STR_MAX_CARS_PER_TRAIN_TIP }, - { WWT_BUTTON, 1, 297, 307, 197, 201, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 202, 206, STR_NUMERIC_DOWN, STR_NONE }, + { WWT_DROPDOWN, 1, 7, 308, 50, 61, 0xFFFFFFFF, STR_NONE }, + { WWT_BUTTON, 1, 297, 307, 51, 60, STR_DROPDOWN_GLYPH, STR_NONE }, + { WWT_SCROLL, 1, 7, 308, 147, 189, 0, STR_NONE }, + SPINNER_WIDGETS (1, 7, 151, 196, 207, STR_RIDE_VEHICLE_COUNT, STR_MAX_VEHICLES_TIP), + SPINNER_WIDGETS (1, 164, 308, 196, 207, STR_1_CAR_PER_TRAIN, STR_MAX_CARS_PER_TRAIN_TIP), { WIDGETS_END }, }; // 0x009ADEFC static rct_widget window_ride_operating_widgets[] = { MAIN_RIDE_WIDGETS, - { WWT_SPINNER, 1, 157, 308, 61, 72, STR_ARG_18_STRINGID, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 62, 66, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 67, 71, STR_NUMERIC_DOWN, STR_NONE }, - { WWT_SPINNER, 1, 157, 308, 75, 86, STR_LIFT_HILL_CHAIN_SPEED_VALUE, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 76, 80, STR_NUMERIC_UP, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP }, - { WWT_BUTTON, 1, 297, 307, 81, 85, STR_NUMERIC_DOWN, STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP }, + SPINNER_WIDGETS (1, 157, 308, 61, 72, STR_ARG_18_STRINGID, STR_NONE), // NB: 3 widgets + SPINNER_WIDGETS (1, 157, 308, 75, 86, STR_LIFT_HILL_CHAIN_SPEED_VALUE, STR_NONE), // NB: 3 widgets { WWT_CHECKBOX, 1, 7, 86, 109, 120, STR_WAIT_FOR, STR_WAIT_FOR_PASSENGERS_BEFORE_DEPARTING_TIP }, { WWT_CHECKBOX, 1, 7, 308, 124, 135, 0xFFFFFFFF, STR_NONE }, { WWT_CHECKBOX, 1, 7, 156, 139, 150, STR_MINIMUM_WAITING_TIME, STR_MINIMUM_LENGTH_BEFORE_DEPARTING_TIP }, - { WWT_SPINNER, 1, 157, 308, 139, 150, STR_ARG_10_STRINGID, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 140, 144, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 145, 149, STR_NUMERIC_DOWN, STR_NONE }, + SPINNER_WIDGETS (1, 157, 308, 139, 150, STR_ARG_10_STRINGID, STR_NONE), // NB: 3 widgets { WWT_CHECKBOX, 1, 7, 156, 154, 165, STR_MAXIMUM_WAITING_TIME, STR_MAXIMUM_LENGTH_BEFORE_DEPARTING_TIP }, - { WWT_SPINNER, 1, 157, 308, 154, 165, STR_ARG_14_STRINGID, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 155, 159, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 160, 164, STR_NUMERIC_DOWN, STR_NONE }, + SPINNER_WIDGETS (1, 157, 308, 154, 165, STR_ARG_14_STRINGID, STR_NONE), // NB: 3 widgets { WWT_CHECKBOX, 1, 7, 308, 169, 180, STR_SYNCHRONISE_WITH_ADJACENT_STATIONS, STR_SYNCHRONISE_WITH_ADJACENT_STATIONS_TIP }, { WWT_LABEL, 1, 21, 149, 61, 72, 0xFFFFFFFF, STR_NONE }, { WWT_LABEL, 1, 21, 149, 75, 86, STR_LIFT_HILL_CHAIN_SPEED, STR_NONE }, @@ -277,9 +265,7 @@ static rct_widget window_ride_operating_widgets[] = { { WWT_DROPDOWN, 1, 87, 308, 109, 120, 0xFFFFFFFF, STR_NONE }, { WWT_BUTTON, 1, 297, 307, 110, 119, STR_DROPDOWN_GLYPH, STR_NONE }, { WWT_LABEL, 1, 21, 149, 89, 100, STR_NUMBER_OF_CIRCUITS, STR_NUMBER_OF_CIRCUITS_TIP }, - { WWT_SPINNER, 1, 157, 308, 89, 100, STR_NUMBER_OF_CIRCUITS_VALUE, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 90, 94, STR_NUMERIC_UP, STR_SELECT_NUMBER_OF_CIRCUITS_TIP }, - { WWT_BUTTON, 1, 297, 307, 95, 99, STR_NUMERIC_DOWN, STR_SELECT_NUMBER_OF_CIRCUITS_TIP }, + SPINNER_WIDGETS (1, 157, 308, 89, 100, STR_NUMBER_OF_CIRCUITS_VALUE, STR_NONE), // NB: 3 widgets { WIDGETS_END }, }; @@ -355,14 +341,10 @@ static rct_widget window_ride_graphs_widgets[] = { static rct_widget window_ride_income_widgets[] = { MAIN_RIDE_WIDGETS, { WWT_LABEL, 1, 19, 144, 50, 61, 0xFFFFFFFF, STR_NONE }, - { WWT_SPINNER, 1, 147, 308, 50, 61, STR_ARG_6_CURRENCY2DP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 51, 55, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 56, 60, STR_NUMERIC_DOWN, STR_NONE }, + SPINNER_WIDGETS (1, 147, 308, 50, 61, STR_ARG_6_CURRENCY2DP, STR_NONE), // NB: 3 widgets { WWT_CHECKBOX, 1, 5, 310, 61, 72, STR_SAME_PRICE_THROUGHOUT_PARK, STR_SAME_PRICE_THROUGHOUT_PARK_TIP }, { WWT_LABEL, 1, 19, 144, 89, 100, 0xFFFFFFFF, STR_NONE }, - { WWT_SPINNER, 1, 147, 308, 89, 100, STR_RIDE_SECONDARY_PRICE_VALUE, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 90, 94, STR_NUMERIC_UP, STR_NONE }, - { WWT_BUTTON, 1, 297, 307, 95, 99, STR_NUMERIC_DOWN, STR_NONE }, + SPINNER_WIDGETS (1, 147, 308, 89, 100, STR_RIDE_SECONDARY_PRICE_VALUE, STR_NONE), // NB: 3 widgets { WWT_CHECKBOX, 1, 5, 310, 100, 111, STR_SAME_PRICE_THROUGHOUT_PARK, STR_SAME_PRICE_THROUGHOUT_PARK_TIP }, { WIDGETS_END }, }; diff --git a/src/openrct2/interface/Widget.cpp b/src/openrct2/interface/Widget.cpp index 6934dbbae4..508ce19acc 100644 --- a/src/openrct2/interface/Widget.cpp +++ b/src/openrct2/interface/Widget.cpp @@ -411,7 +411,13 @@ static void widget_text_centred(rct_drawpixelinfo *dpi, rct_window *w, rct_widge sint32 t; if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER) - t = w->y + std::max(widget->top, (widget->top + widget->bottom) / 2 - 5); + { + sint32 height = (widget->bottom - widget->top); + if (height >= 10) + t = w->y + std::max(widget->top, widget->top + (height / 2) - 5); + else + t = w->y + widget->top - 1; + } else t = w->y + widget->top; @@ -449,7 +455,13 @@ static void widget_text(rct_drawpixelinfo *dpi, rct_window *w, rct_widgetindex w sint32 t; if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER) - t = w->y + std::max(widget->top, (widget->top + widget->bottom) / 2 - 5); + { + sint32 height = (widget->bottom - widget->top); + if (height >= 10) + t = w->y + std::max(widget->top, widget->top + (height / 2) - 5); + else + t = w->y + widget->top - 1; + } else t = w->y + widget->top; diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index 57f1ebc5d5..ae1de4a96e 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -48,6 +48,13 @@ enum WINDOW_WIDGET_TYPES { #define WIDGETS_END WWT_LAST, 0, 0, 0, 0, 0, 0, 0 #define BAR_BLINK (1u << 31) +#define SPINNER_INCREASE(l, r, t, b) r - 12, r - 1, t + 1, b - 1 +#define SPINNER_DECREASE(l, r, t, b) r - 25, r - 13, t + 1, b - 1 +#define SPINNER_WIDGETS(colour, left, right, top, bottom, text, tooltip) \ + { WWT_SPINNER, colour, left, right, top, bottom, text, tooltip }, \ + { WWT_BUTTON, colour, SPINNER_INCREASE(left, right, top, bottom), STR_NUMERIC_UP, STR_NONE }, \ + { WWT_BUTTON, colour, SPINNER_DECREASE(left, right, top, bottom), STR_NUMERIC_DOWN, STR_NONE } \ + enum { SCROLL_HORIZONTAL = (1 << 0), SCROLL_VERTICAL = (1 << 1),