From 94ae72f228fcb186e36757568fabbe58ec169511 Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Tue, 5 Jan 2016 22:05:00 +0000 Subject: [PATCH] integrate variable: gHoverWidget --- src/input.c | 38 +++++++++++++---------------- src/input.h | 1 + src/interface/widget.c | 9 +++---- src/windows/editor_bottom_toolbar.c | 14 +++++++---- src/windows/game_bottom_toolbar.c | 6 ++--- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/input.c b/src/input.c index 07c9a86e92..22cb0e7948 100644 --- a/src/input.c +++ b/src/input.c @@ -72,6 +72,7 @@ static sint32 _originalWindowHeight; uint8 gInputState; uint8 gInputFlags; +widget_ref gHoverWidget; widget_ref gPressedWidget; uint16 gTooltipNotShownTicks; @@ -930,18 +931,17 @@ static void input_widget_over_change_check(rct_windowclass windowClass, rct_wind return; // Check if the widget that the cursor was over, has changed - if ( - windowClass != RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) || - windowNumber != RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber) || - widgetIndex != RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, uint16) - ) { + if (windowClass != gHoverWidget.window_classification || + windowNumber != gHoverWidget.window_number || + widgetIndex != gHoverWidget.widget_index + ) { // Invalidate last widget cursor was on if widget is a flat button input_widget_over_flatbutton_invalidate(); // Set new cursor over widget - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) = windowClass; - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber) = windowNumber; - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, uint16) = widgetIndex; + gHoverWidget.window_classification = windowClass; + gHoverWidget.window_number = windowNumber; + gHoverWidget.widget_index = widgetIndex; // Invalidate new widget cursor is on if widget is a flat button if (windowClass != 255) @@ -955,20 +955,16 @@ static void input_widget_over_change_check(rct_windowclass windowClass, rct_wind */ static void input_widget_over_flatbutton_invalidate() { - rct_window *w = window_find_by_number( - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass), - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber) - ); - if (w == NULL) - return; - - window_event_invalidate_call(w); - if (w->widgets[RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, rct_windownumber)].type == WWT_FLATBTN) { - widget_invalidate_by_number( - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass), - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber), - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, rct_windownumber) + rct_window *w = window_find_by_number(gHoverWidget.window_classification, gHoverWidget.window_number); + if (w != NULL) { + window_event_invalidate_call(w); + if (w->widgets[gHoverWidget.widget_index].type == WWT_FLATBTN) { + widget_invalidate_by_number( + gHoverWidget.window_classification, + gHoverWidget.window_number, + gHoverWidget.widget_index ); + } } } diff --git a/src/input.h b/src/input.h index 3462b15910..2584ff4071 100644 --- a/src/input.h +++ b/src/input.h @@ -69,6 +69,7 @@ typedef struct { extern uint8 gInputState; extern uint8 gInputFlags; +extern widget_ref gHoverWidget; extern widget_ref gPressedWidget; extern uint16 gTooltipNotShownTicks; diff --git a/src/interface/widget.c b/src/interface/widget.c index 2118c19c87..02adb0ec4c 100644 --- a/src/interface/widget.c +++ b/src/interface/widget.c @@ -993,12 +993,9 @@ int widget_is_pressed(rct_window *w, int widgetIndex) int widget_is_highlighted(rct_window *w, int widgetIndex) { - if (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) != w->classification) - return 0; - if (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWNUMBER, rct_windownumber) != w->number) - return 0; - if (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, sint32) != widgetIndex) - return 0; + if (gHoverWidget.window_classification != w->classification) return 0; + if (gHoverWidget.window_number != w->number) return 0; + if (gHoverWidget.widget_index != widgetIndex) return 0; return 1; } diff --git a/src/windows/editor_bottom_toolbar.c b/src/windows/editor_bottom_toolbar.c index f0e6f15499..e3ea475c6b 100644 --- a/src/windows/editor_bottom_toolbar.c +++ b/src/windows/editor_bottom_toolbar.c @@ -22,6 +22,7 @@ #include "../audio/audio.h" #include "../config.h" #include "../editor.h" +#include "../input.h" #include "../scenario.h" #include "../sprites.h" #include "../localisation/localisation.h" @@ -535,10 +536,11 @@ void window_editor_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi) window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->y, 0); int textColour = w->colours[1] & 0x7F; - - if (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, uint8) == WC_BOTTOM_TOOLBAR && - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, uint8) == WIDX_PREVIOUS_STEP_BUTTON) + if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR && + gHoverWidget.widget_index == WIDX_PREVIOUS_STEP_BUTTON + ) { textColour = 2; + } short textX = (window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 30 + window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].right) / 2 + w->x; @@ -559,9 +561,11 @@ void window_editor_bottom_toolbar_paint(rct_window *w, rct_drawpixelinfo *dpi) int textColour = w->colours[1] & 0x7F; - if (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, uint8) == WC_BOTTOM_TOOLBAR && - RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, uint8) == WIDX_NEXT_STEP_BUTTON) + if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR && + gHoverWidget.widget_index == WIDX_NEXT_STEP_BUTTON + ) { textColour = 2; + } short textX = (window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].left + window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 30) / 2 + w->x; diff --git a/src/windows/game_bottom_toolbar.c b/src/windows/game_bottom_toolbar.c index 1fbe55c2d7..ad46d30815 100644 --- a/src/windows/game_bottom_toolbar.c +++ b/src/windows/game_bottom_toolbar.c @@ -385,7 +385,7 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo *dpi, r dpi, (RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, int) < 0 ? 1391 : 1390), x, y - 3, - (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) == 2 && RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, sint32) == WIDX_MONEY ? 2 : w->colours[0] & 0x7F), + (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR && gHoverWidget.widget_index == WIDX_MONEY ? COLOUR_WHITE : w->colours[0] & 0x7F), (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS ); y += 7; @@ -396,7 +396,7 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo *dpi, r dpi, STR_NUM_GUESTS + RCT2_GLOBAL(RCT2_ADDRESS_GUEST_CHANGE_MODIFIER, uint8), x, y, - (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) == 2 && RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, sint32) == WIDX_GUESTS ? 2 : w->colours[0] & 0x7F), + (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR && gHoverWidget.widget_index == WIDX_GUESTS ? COLOUR_WHITE : w->colours[0] & 0x7F), (void*)RCT2_ADDRESS_GUESTS_IN_PARK ); @@ -463,7 +463,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo *dpi, stringId, x, y, - (RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WINDOWCLASS, rct_windowclass) == 2 && RCT2_GLOBAL(RCT2_ADDRESS_CURSOR_OVER_WIDGETINDEX, sint32) == WIDX_DATE ? 2 : w->colours[0] & 0x7F), + (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR && gHoverWidget.widget_index == WIDX_DATE ? COLOUR_WHITE : w->colours[0] & 0x7F), (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS );