mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
integrate variable: gHoverWidget
This commit is contained in:
38
src/input.c
38
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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ typedef struct {
|
||||
extern uint8 gInputState;
|
||||
extern uint8 gInputFlags;
|
||||
|
||||
extern widget_ref gHoverWidget;
|
||||
extern widget_ref gPressedWidget;
|
||||
|
||||
extern uint16 gTooltipNotShownTicks;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user