From 4a55acd71e469fde4a9212bd44f32da0b5cdce7a Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Thu, 13 Aug 2020 16:41:13 +0200 Subject: [PATCH] Introduce MakeTab wrapper function The MakeTab function is only applied in two places, for the moment: the Cheats and Options windows. --- src/openrct2-ui/interface/Widget.cpp | 18 +++++++++++++----- src/openrct2-ui/windows/Cheats.cpp | 10 +++++----- src/openrct2-ui/windows/Options.cpp | 16 ++++++++-------- src/openrct2/interface/Widget.h | 12 ++++++++++++ 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 6c0820f7d8..c2449c96a7 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -215,9 +215,21 @@ static void widget_tab_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind // Get the widget rct_widget* widget = &w->widgets[widgetIndex]; - if (static_cast(widget->image) == -1) + if (widget->type != WWT_TAB && static_cast(widget->image) == -1) return; + if (widget->type == WWT_TAB) + { + if (widget_is_disabled(w, widgetIndex)) + return; + + if (widget->image != (IMAGE_TYPE_REMAP | SPR_TAB_LARGE)) + { + // Set standard tab sprite to use. + widget->image = IMAGE_TYPE_REMAP | SPR_TAB; + } + } + // Draw widgets that aren't explicitly disabled. if (!widget_is_disabled(w, widgetIndex)) { @@ -225,10 +237,6 @@ static void widget_tab_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind return; } - // Do not draw hidden tabs, unless given a sprite. - if (widget->type == WWT_TAB && widget->image != (IMAGE_TYPE_REMAP | SPR_G2_TAB_DISABLED)) - return; - if (widget->type != WWT_TRNBTN) { widget_draw_image(dpi, w, widgetIndex); diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index ff674e51db..d2139e68c8 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -195,11 +195,11 @@ static constexpr const int32_t TAB_START = 3; #define MAIN_CHEATS_WIDGETS \ WINDOW_SHIM(WINDOW_TITLE, WW, WH), \ - MakeWidget ({ 0, 43}, {WW, 257}, WWT_IMGBTN, 1 ), /* tab content panel */ \ - MakeRemapWidget({ 3, 17}, {TAB_WIDTH, TAB_HEIGHT}, WWT_TAB, 1, SPR_TAB, STR_FINANCIAL_CHEATS_TIP), /* tab 1 */ \ - MakeRemapWidget({34, 17}, {TAB_WIDTH, TAB_HEIGHT}, WWT_TAB, 1, SPR_TAB, STR_GUEST_CHEATS_TIP ), /* tab 2 */ \ - MakeRemapWidget({65, 17}, {TAB_WIDTH, TAB_HEIGHT}, WWT_TAB, 1, SPR_TAB, STR_PARK_CHEATS_TIP ), /* tab 3 */ \ - MakeRemapWidget({96, 17}, {TAB_WIDTH, TAB_HEIGHT}, WWT_TAB, 1, SPR_TAB, STR_RIDE_CHEATS_TIP ) /* tab 4 */ + MakeWidget({ 0, 43}, {WW, 257}, WWT_IMGBTN, 1), /* tab content panel */ \ + MakeTab ({ 3, 17}, STR_FINANCIAL_CHEATS_TIP), /* tab 1 */ \ + MakeTab ({34, 17}, STR_GUEST_CHEATS_TIP ), /* tab 2 */ \ + MakeTab ({65, 17}, STR_PARK_CHEATS_TIP ), /* tab 3 */ \ + MakeTab ({96, 17}, STR_RIDE_CHEATS_TIP ) /* tab 4 */ static rct_widget window_cheats_money_widgets[] = { diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index cddb90f751..15b0a14015 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -194,14 +194,14 @@ static constexpr const int32_t WH = 332; #define MAIN_OPTIONS_WIDGETS \ WINDOW_SHIM(WINDOW_TITLE, WW, WH), \ - MakeWidget ({ 0, 43}, {WW, 289}, WWT_RESIZE, 1), \ - MakeRemapWidget({ 3, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_DISPLAY_TIP ), \ - MakeRemapWidget({ 34, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_RENDERING_TIP ), \ - MakeRemapWidget({ 65, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_CULTURE_TIP ), \ - MakeRemapWidget({ 96, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_AUDIO_TIP ), \ - MakeRemapWidget({127, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_CONTROLS_AND_INTERFACE_TIP), \ - MakeRemapWidget({158, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_MISCELLANEOUS_TIP ), \ - MakeRemapWidget({189, 17}, {31, 27}, WWT_TAB, 1, SPR_TAB, STR_OPTIONS_ADVANCED ) + MakeWidget({ 0, 43}, {WW, 289}, WWT_RESIZE, 1), \ + MakeTab ({ 3, 17}, STR_OPTIONS_DISPLAY_TIP ), \ + MakeTab ({ 34, 17}, STR_OPTIONS_RENDERING_TIP ), \ + MakeTab ({ 65, 17}, STR_OPTIONS_CULTURE_TIP ), \ + MakeTab ({ 96, 17}, STR_OPTIONS_AUDIO_TIP ), \ + MakeTab ({127, 17}, STR_OPTIONS_CONTROLS_AND_INTERFACE_TIP), \ + MakeTab ({158, 17}, STR_OPTIONS_MISCELLANEOUS_TIP ), \ + MakeTab ({189, 17}, STR_OPTIONS_ADVANCED ) static rct_widget window_options_display_widgets[] = { MAIN_OPTIONS_WIDGETS, diff --git a/src/openrct2/interface/Widget.h b/src/openrct2/interface/Widget.h index ae289874f1..9d0fbf6a8d 100644 --- a/src/openrct2/interface/Widget.h +++ b/src/openrct2/interface/Widget.h @@ -61,6 +61,8 @@ enum constexpr uint8_t SCROLLBAR_WIDTH = 10; +constexpr const ScreenSize TAB_SIZE = { 31, 27 }; + constexpr rct_widget MakeWidget( const ScreenCoordsXY& origin, const ScreenSize& size, uint8_t type, uint8_t colour, uint32_t content = 0xFFFFFFFF, rct_string_id tooltip = STR_NONE) @@ -85,6 +87,16 @@ constexpr rct_widget MakeRemapWidget( return MakeWidget(origin, size, type, colour, IMAGE_TYPE_REMAP | content, tooltip); } +constexpr rct_widget MakeTab(const ScreenCoordsXY& origin, rct_string_id tooltip = STR_NONE) +{ + const ScreenSize size = TAB_SIZE; + const uint8_t type = WWT_TAB; + const uint8_t colour = 1; + const uint32_t content = 0xFFFFFFFF; + + return MakeWidget(origin, size, type, colour, content, tooltip); +} + #define MakeSpinnerWidgets(...) \ MakeWidget(__VA_ARGS__), MakeSpinnerIncreaseWidget(__VA_ARGS__), MakeSpinnerDecreaseWidget(__VA_ARGS__)