From 1159c9d0bcd6f911a0b96941974e24fe5dcd42e7 Mon Sep 17 00:00:00 2001 From: Michael Bernardi Date: Mon, 3 Jul 2023 00:37:04 +0200 Subject: [PATCH] Add a window method to resize spinners --- src/openrct2-ui/windows/RideConstruction.cpp | 15 +++------------ src/openrct2/interface/Window.cpp | 20 ++++++++++++++++++++ src/openrct2/interface/Window.h | 1 + src/openrct2/interface/Window_internal.h | 2 ++ 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index a70c5e8a75..2a5840898c 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1909,22 +1909,13 @@ public: widgets[WIDX_SPEED_SETTING_SPINNER].text = STR_RIDE_CONSTRUCTION_BRAKE_SPEED_VELOCITY; widgets[WIDX_SPEED_SETTING_SPINNER].type = WindowWidgetType::Spinner; - widgets[WIDX_SPEED_SETTING_SPINNER].left = 12; - widgets[WIDX_SPEED_SETTING_SPINNER].right = 96; - widgets[WIDX_SPEED_SETTING_SPINNER].top = 138; - widgets[WIDX_SPEED_SETTING_SPINNER].bottom = 149; widgets[WIDX_SPEED_SETTING_SPINNER_UP].type = WindowWidgetType::Button; widgets[WIDX_SPEED_SETTING_SPINNER_UP].text = STR_NUMERIC_UP; - widgets[WIDX_SPEED_SETTING_SPINNER_UP].left = 84; - widgets[WIDX_SPEED_SETTING_SPINNER_UP].right = 95; - widgets[WIDX_SPEED_SETTING_SPINNER_UP].top = 139; - widgets[WIDX_SPEED_SETTING_SPINNER_UP].bottom = 148; widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].type = WindowWidgetType::Button; widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].text = STR_NUMERIC_DOWN; - widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].left = 72; - widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].right = 83; - widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].top = 139; - widgets[WIDX_SPEED_SETTING_SPINNER_DOWN].bottom = 148; + + ResizeSpinner(WIDX_SPEED_SETTING_SPINNER, { 12, 138 }, { 85, SPINNER_HEIGHT }); + hold_down_widgets |= (1uLL << WIDX_SPEED_SETTING_SPINNER_UP) | (1uLL << WIDX_SPEED_SETTING_SPINNER_DOWN); } diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index b0f6155d14..b1f14e0547 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -2148,3 +2148,23 @@ void WindowBase::ResizeFrameWithPage() widgets[3].right = width - 1; widgets[3].bottom = height - 1; } + +void WindowBase::ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size) +{ + auto right = origin.x + size.width - 1; + auto bottom = origin.y + size.height - 1; + widgets[widgetIndex].left = origin.x; + widgets[widgetIndex].top = origin.y; + widgets[widgetIndex].right = right; + widgets[widgetIndex].bottom = bottom; + + widgets[widgetIndex + 1].left = right - size.height; + widgets[widgetIndex + 1].top = origin.y + 1; + widgets[widgetIndex + 1].right = right - 1; + widgets[widgetIndex + 1].bottom = bottom - 1; + + widgets[widgetIndex + 2].left = right - size.height * 2; + widgets[widgetIndex + 2].top = origin.y + 1; + widgets[widgetIndex + 2].right = right - size.height - 1; + widgets[widgetIndex + 2].bottom = bottom - 1; +} \ No newline at end of file diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 52f126302a..2c8a9d9938 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -44,6 +44,7 @@ constexpr uint8_t CloseButtonWidth = 10; #define LIST_ROW_HEIGHT 12 #define TABLE_CELL_HEIGHT 12 #define BUTTON_FACE_HEIGHT 12 +#define SPINNER_HEIGHT 12 #define TEXT_INPUT_SIZE 1024 #define TOP_TOOLBAR_HEIGHT 27 diff --git a/src/openrct2/interface/Window_internal.h b/src/openrct2/interface/Window_internal.h index da32a6eb22..7137729de5 100644 --- a/src/openrct2/interface/Window_internal.h +++ b/src/openrct2/interface/Window_internal.h @@ -175,6 +175,8 @@ struct WindowBase void ResizeFrame(); void ResizeFrameWithPage(); + + void ResizeSpinner(WidgetIndex widgetIndex, const ScreenCoordsXY& origin, const ScreenSize& size); }; #ifdef __WARN_SUGGEST_FINAL_METHODS__