mirror of https://github.com/OpenRCT2/OpenRCT2.git
Added tooltip to colour selector
This commit is contained in:
parent
5abb923525
commit
7ef15a4326
|
@ -3854,3 +3854,35 @@ STR_5512 :Save Game As
|
|||
STR_5513 :(Quick) save game
|
||||
STR_5514 :Disable vandalism
|
||||
STR_5515 :{SMALLFONT}{BLACK}Stops guests from vandalising your park when they're angry
|
||||
STR_5516 :Colour 00
|
||||
STR_5517 :Colour 01
|
||||
STR_5518 :Colour 02
|
||||
STR_5519 :Colour 03
|
||||
STR_5520 :Colour 04
|
||||
STR_5521 :Colour 05
|
||||
STR_5522 :Colour 06
|
||||
STR_5523 :Colour 07
|
||||
STR_5524 :Colour 08
|
||||
STR_5525 :Colour 09
|
||||
STR_5526 :Colour 0A
|
||||
STR_5527 :Colour 0B
|
||||
STR_5528 :Colour 0C
|
||||
STR_5529 :Colour 0D
|
||||
STR_5530 :Colour 0E
|
||||
STR_5531 :Colour 0F
|
||||
STR_5532 :Colour 10
|
||||
STR_5533 :Colour 11
|
||||
STR_5534 :Colour 12
|
||||
STR_5535 :Colour 13
|
||||
STR_5536 :Colour 14
|
||||
STR_5537 :Colour 15
|
||||
STR_5538 :Colour 16
|
||||
STR_5539 :Colour 17
|
||||
STR_5540 :Colour 18
|
||||
STR_5541 :Colour 19
|
||||
STR_5542 :Colour 1A
|
||||
STR_5543 :Colour 1B
|
||||
STR_5544 :Colour 1C
|
||||
STR_5545 :Colour 1D
|
||||
STR_5546 :Colour 1E
|
||||
STR_5547 :Colour 1F
|
||||
|
|
|
@ -1197,6 +1197,12 @@ void input_state_widget_pressed(int x, int y, int state, int widgetIndex, rct_wi
|
|||
|
||||
if (dropdown_index == -1) return;
|
||||
|
||||
if (gDropdownIsColour && gDropdownLastColourHover != dropdown_index) {
|
||||
gDropdownLastColourHover = dropdown_index;
|
||||
window_tooltip_close();
|
||||
window_tooltip_show(STR_COLOUR_NAMES_START + dropdown_index, x, y);
|
||||
}
|
||||
|
||||
// _dropdown_unknown?? highlighted?
|
||||
if (dropdown_index < 32 && RCT2_GLOBAL(0x009DED34, sint32) & (1 << dropdown_index))return;
|
||||
|
||||
|
@ -1206,6 +1212,9 @@ void input_state_widget_pressed(int x, int y, int state, int widgetIndex, rct_wi
|
|||
// _dropdown_highlighted_index
|
||||
RCT2_GLOBAL(0x009DEBA2, sint16) = dropdown_index;
|
||||
window_invalidate_by_class(WC_DROPDOWN);
|
||||
} else {
|
||||
gDropdownLastColourHover = -1;
|
||||
window_tooltip_close();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2076,6 +2076,8 @@ enum {
|
|||
STR_CHEAT_DISABLE_VANDALISM = 5514,
|
||||
STR_CHEAT_DISABLE_VANDALISM_TIP = 5515,
|
||||
|
||||
STR_COLOUR_NAMES_START = 5516,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
|
|
@ -55,6 +55,8 @@ sint64 gDropdownItemsArgs[64];
|
|||
// Replaces 0x009DED38
|
||||
uint32 gDropdownItemsChecked;
|
||||
uint32 *gDropdownItemsDisabled = RCT2_ADDRESS(0x009DED34, uint32);
|
||||
bool gDropdownIsColour;
|
||||
int gDropdownLastColourHover;
|
||||
|
||||
static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi);
|
||||
|
||||
|
@ -188,6 +190,7 @@ void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colo
|
|||
RCT2_GLOBAL(0x009DED40, sint32) = _dropdown_item_width;
|
||||
RCT2_GLOBAL(0x009DED3C, sint32) = _dropdown_item_height;
|
||||
RCT2_GLOBAL(0x009DEBA2, sint16) = _dropdown_highlighted_index;
|
||||
gDropdownIsColour = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -266,6 +269,7 @@ void window_dropdown_show_image(int x, int y, int extray, uint8 colour, uint8 fl
|
|||
RCT2_GLOBAL(0x009DED40, sint32) = _dropdown_item_width;
|
||||
RCT2_GLOBAL(0x009DED3C, sint32) = _dropdown_item_height;
|
||||
RCT2_GLOBAL(0x009DEBA2, sint16) = _dropdown_highlighted_index;
|
||||
gDropdownIsColour = false;
|
||||
}
|
||||
|
||||
void window_dropdown_close()
|
||||
|
@ -429,4 +433,6 @@ void window_dropdown_show_colour_available(rct_window *w, rct_widget *widget, ui
|
|||
gAppropriateImageDropdownItemsPerRow[numItems]
|
||||
);
|
||||
|
||||
gDropdownIsColour = true;
|
||||
gDropdownLastColourHover = -1;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ extern uint16 gDropdownItemsFormat[64];
|
|||
extern sint64 gDropdownItemsArgs[64];
|
||||
extern uint32 gDropdownItemsChecked;
|
||||
extern uint32 *gDropdownItemsDisabled;
|
||||
extern bool gDropdownIsColour;
|
||||
extern int gDropdownLastColourHover;
|
||||
|
||||
void window_dropdown_show_text(int x, int y, int extray, uint8 colour, uint8 flags, int num_items);
|
||||
void window_dropdown_show_text_custom_width(int x, int y, int extray, uint8 colour, uint8 flags, int num_items, int width);
|
||||
|
|
|
@ -79,30 +79,11 @@ void window_tooltip_reset(int x, int y)
|
|||
}
|
||||
|
||||
uint8* gTooltip_text_buffer = RCT2_ADDRESS(RCT2_ADDRESS_TOOLTIP_TEXT_BUFFER, uint8);
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006EA10D
|
||||
*/
|
||||
void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y)
|
||||
|
||||
void window_tooltip_show(rct_string_id id, int x, int y)
|
||||
{
|
||||
rct_window *w;
|
||||
rct_widget *widget;
|
||||
int width, height;
|
||||
|
||||
if (widgetWindow == NULL || widgetIndex == -1)
|
||||
return;
|
||||
|
||||
widget = &widgetWindow->widgets[widgetIndex];
|
||||
window_event_invalidate_call(widgetWindow);
|
||||
if (widget->tooltip == 0xFFFF)
|
||||
return;
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WINDOW_CLASS, rct_windowclass) = widgetWindow->classification;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WINDOW_NUMBER, rct_windownumber) = widgetWindow->number;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WIDGET_INDEX, uint16) = widgetIndex;
|
||||
|
||||
if (window_event_tooltip_call(widgetWindow, widgetIndex) == (rct_string_id)STR_NONE)
|
||||
return;
|
||||
|
||||
w = window_find_by_class(WC_ERROR);
|
||||
if (w != NULL)
|
||||
|
@ -111,7 +92,7 @@ void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y
|
|||
RCT2_GLOBAL(0x0142006C, sint32) = -1;
|
||||
char* buffer = RCT2_ADDRESS(RCT2_ADDRESS_COMMON_STRING_FORMAT_BUFFER, char);
|
||||
|
||||
format_string(buffer, widget->tooltip, (void*)0x013CE952);
|
||||
format_string(buffer, id, (void*)0x013CE952);
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_FONT_SPRITE_BASE, uint16) = FONT_SPRITE_BASE_MEDIUM;
|
||||
|
||||
int tooltip_text_width;
|
||||
|
@ -131,7 +112,7 @@ void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y
|
|||
window_tooltip_widgets[WIDX_BACKGROUND].bottom = height;
|
||||
|
||||
memcpy(gTooltip_text_buffer, buffer, 512);
|
||||
|
||||
|
||||
x = clamp(0, x - (width / 2), RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) - width);
|
||||
|
||||
int max_y = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_HEIGHT, uint16) - height;
|
||||
|
@ -150,12 +131,38 @@ void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y
|
|||
&window_tooltip_events,
|
||||
WC_TOOLTIP,
|
||||
WF_TRANSPARENT | WF_STICK_TO_FRONT
|
||||
);
|
||||
);
|
||||
w->widgets = window_tooltip_widgets;
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_NOT_SHOWN_TICKS, uint16) = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006EA10D
|
||||
*/
|
||||
void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y)
|
||||
{
|
||||
rct_widget *widget;
|
||||
|
||||
if (widgetWindow == NULL || widgetIndex == -1)
|
||||
return;
|
||||
|
||||
widget = &widgetWindow->widgets[widgetIndex];
|
||||
window_event_invalidate_call(widgetWindow);
|
||||
if (widget->tooltip == 0xFFFF)
|
||||
return;
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WINDOW_CLASS, rct_windowclass) = widgetWindow->classification;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WINDOW_NUMBER, rct_windownumber) = widgetWindow->number;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_WIDGET_INDEX, uint16) = widgetIndex;
|
||||
|
||||
if (window_event_tooltip_call(widgetWindow, widgetIndex) == (rct_string_id)STR_NONE)
|
||||
return;
|
||||
|
||||
window_tooltip_show(widget->tooltip, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006E98C6
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "../interface/window.h"
|
||||
|
||||
void window_tooltip_reset(int x, int y);
|
||||
void window_tooltip_show(rct_string_id id, int x, int y);
|
||||
void window_tooltip_open(rct_window *widgetWindow, int widgetIndex, int x, int y);
|
||||
void window_tooltip_close();
|
||||
|
||||
|
|
Loading…
Reference in New Issue