1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

integrate variable: gHoverWidget

This commit is contained in:
IntelOrca
2016-01-05 22:05:00 +00:00
parent 923b3daf40
commit 94ae72f228
5 changed files with 33 additions and 35 deletions

View File

@@ -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
);
}
}
}

View File

@@ -69,6 +69,7 @@ typedef struct {
extern uint8 gInputState;
extern uint8 gInputFlags;
extern widget_ref gHoverWidget;
extern widget_ref gPressedWidget;
extern uint16 gTooltipNotShownTicks;

View File

@@ -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;
}

View File

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

View File

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