1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-04 13:42:55 +01:00

Introduce MakeTab wrapper function

The MakeTab function is only applied in two places, for the moment:
the Cheats and Options windows.
This commit is contained in:
Aaron van Geffen
2020-08-13 16:41:13 +02:00
parent 72be84caf8
commit 4a55acd71e
4 changed files with 38 additions and 18 deletions

View File

@@ -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<int32_t>(widget->image) == -1)
if (widget->type != WWT_TAB && static_cast<int32_t>(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);

View File

@@ -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[] =
{

View File

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

View File

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