mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #12056 from AaronVanGeffen/widget-refactor-2
Introduce widget::midX and widget::midY helper functions
This commit is contained in:
commit
d4a35c5c16
|
@ -1052,7 +1052,7 @@ static void input_widget_left(const ScreenCoordsXY& screenCoords, rct_window* w,
|
|||
default:
|
||||
if (widget_is_enabled(w, widgetIndex) && !widget_is_disabled(w, widgetIndex))
|
||||
{
|
||||
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + ((widget->left + widget->right) / 2));
|
||||
audio_play_sound(SoundId::Click1, 0, w->windowPos.x + widget->midX());
|
||||
|
||||
// Set new cursor down widget
|
||||
gPressedWidget.window_classification = windowClass;
|
||||
|
@ -1334,7 +1334,7 @@ void input_state_widget_pressed(
|
|||
break;
|
||||
|
||||
{
|
||||
int32_t mid_point_x = (widget->left + widget->right) / 2 + w->windowPos.x;
|
||||
int32_t mid_point_x = widget->midX() + w->windowPos.x;
|
||||
audio_play_sound(SoundId::Click2, 0, mid_point_x);
|
||||
}
|
||||
if (cursor_w_class != w->classification || cursor_w_number != w->number || widgetIndex != cursor_widgetIndex)
|
||||
|
|
|
@ -345,13 +345,7 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
|
|||
int32_t r = w->windowPos.x + widget->right;
|
||||
|
||||
if (widget->type == WWT_BUTTON || widget->type == WWT_TABLE_HEADER)
|
||||
{
|
||||
int32_t height = widget->height();
|
||||
if (height >= 10)
|
||||
topLeft.y += std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
|
||||
else
|
||||
topLeft.y += widget->top - 1;
|
||||
}
|
||||
topLeft.y += widget->textTop();
|
||||
else
|
||||
topLeft.y += widget->top;
|
||||
|
||||
|
@ -391,11 +385,7 @@ static void widget_text(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex w
|
|||
if (widget->type == WWT_BUTTON || widget->type == WWT_DROPDOWN || widget->type == WWT_SPINNER
|
||||
|| widget->type == WWT_TABLE_HEADER)
|
||||
{
|
||||
int32_t height = widget->height();
|
||||
if (height >= 10)
|
||||
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
|
||||
else
|
||||
t = w->windowPos.y + widget->top - 1;
|
||||
t = w->windowPos.y + widget->textTop();
|
||||
}
|
||||
else
|
||||
t = w->windowPos.y + widget->top;
|
||||
|
@ -588,9 +578,7 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
|
|||
if (widget->text == STR_NONE)
|
||||
return;
|
||||
|
||||
topLeft = w->windowPos
|
||||
+ ScreenCoordsXY{ (widget->left + widget->right) / 2 - 1,
|
||||
std::max<int32_t>(widget->top, (widget->top + widget->bottom) / 2 - 5) };
|
||||
topLeft = w->windowPos + ScreenCoordsXY{ widget->midX() - 1, std::max<int32_t>(widget->top, widget->midY() - 5) };
|
||||
|
||||
if (widget_is_disabled(w, widgetIndex))
|
||||
colour |= COLOUR_FLAG_INSET;
|
||||
|
@ -1058,11 +1046,7 @@ static void widget_text_box_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
|
|||
gCurrentFontFlags = 0;
|
||||
|
||||
// Figure out where the text should be positioned vertically.
|
||||
int32_t height = (widget->bottom - widget->top);
|
||||
if (height >= 10)
|
||||
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (height / 2) - 5);
|
||||
else
|
||||
t = w->windowPos.y + widget->top - 1;
|
||||
t = w->windowPos.y + widget->textTop();
|
||||
|
||||
if (!active || gTextInput == nullptr)
|
||||
{
|
||||
|
@ -1081,7 +1065,7 @@ static void widget_text_box_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
|
|||
// +13 for cursor when max length.
|
||||
gfx_wrap_string(wrapped_string, r - l - 5 - 6, &no_lines, &font_height);
|
||||
|
||||
gfx_draw_string(dpi, wrapped_string, w->colours[1], { l + 2, t + 1 });
|
||||
gfx_draw_string(dpi, wrapped_string, w->colours[1], { l + 2, t });
|
||||
|
||||
size_t string_length = get_string_size(wrapped_string) - 1;
|
||||
|
||||
|
@ -1103,6 +1087,7 @@ static void widget_text_box_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg
|
|||
if (gTextBoxFrameNo <= 15)
|
||||
{
|
||||
colour = ColourMapA[w->colours[1]].mid_light;
|
||||
gfx_fill_rect(dpi, cur_x, t + (height - 1), cur_x + width, t + (height - 1), colour + 5);
|
||||
auto y = t + (widget->height() - 1);
|
||||
gfx_fill_rect(dpi, cur_x, y, cur_x + width, y, colour + 5);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ static void window_about_openrct2_common_paint(rct_window* w, rct_drawpixelinfo*
|
|||
const auto& aboutOpenRCT2 = w->widgets[WIDX_TAB_ABOUT_OPENRCT2];
|
||||
const auto& aboutRCT2 = w->widgets[WIDX_TAB_ABOUT_RCT2];
|
||||
|
||||
int32_t y = w->windowPos.y + ((aboutOpenRCT2.top + aboutOpenRCT2.bottom) / 2) - 3;
|
||||
int32_t y = w->windowPos.y + aboutOpenRCT2.midY() - 3;
|
||||
ScreenCoordsXY aboutOpenRCT2Coords(w->windowPos.x + aboutOpenRCT2.left + 45, y);
|
||||
ScreenCoordsXY aboutRCT2Coords(w->windowPos.x + aboutRCT2.left + 45, y);
|
||||
|
||||
|
|
|
@ -238,12 +238,8 @@ static void window_clear_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
window_draw_widgets(w, dpi);
|
||||
|
||||
// Draw number for tool sizes bigger than 7
|
||||
ScreenCoordsXY screenCoords = {
|
||||
w->windowPos.x
|
||||
+ (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right) / 2,
|
||||
w->windowPos.y
|
||||
+ (window_clear_scenery_widgets[WIDX_PREVIEW].top + window_clear_scenery_widgets[WIDX_PREVIEW].bottom) / 2
|
||||
};
|
||||
ScreenCoordsXY screenCoords = { w->windowPos.x + window_clear_scenery_widgets[WIDX_PREVIEW].midX(),
|
||||
w->windowPos.y + window_clear_scenery_widgets[WIDX_PREVIEW].midY() };
|
||||
if (gLandToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
|
||||
{
|
||||
gfx_draw_string_centred(
|
||||
|
@ -253,9 +249,7 @@ static void window_clear_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
// Draw cost amount
|
||||
if (gClearSceneryCost != MONEY32_UNDEFINED && gClearSceneryCost != 0 && !(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
{
|
||||
screenCoords.x = (window_clear_scenery_widgets[WIDX_PREVIEW].left + window_clear_scenery_widgets[WIDX_PREVIEW].right)
|
||||
/ 2
|
||||
+ w->windowPos.x;
|
||||
screenCoords.x = window_clear_scenery_widgets[WIDX_PREVIEW].midX() + w->windowPos.x;
|
||||
screenCoords.y = window_clear_scenery_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 5 + 27;
|
||||
gfx_draw_string_centred(dpi, STR_COST_AMOUNT, screenCoords, COLOUR_BLACK, &gClearSceneryCost);
|
||||
}
|
||||
|
|
|
@ -605,7 +605,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
|
|||
}
|
||||
|
||||
// Item name
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ ((widget->left + widget->right) / 2) + 1, widget->bottom + 3 };
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ widget->midX() + 1, widget->bottom + 3 };
|
||||
width = w->width - w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right - 6;
|
||||
|
||||
rct_string_id drawString = window_editor_inventions_list_prepare_name(researchItem, false);
|
||||
|
|
|
@ -1058,7 +1058,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
|
|||
|
||||
// Draw name of object
|
||||
{
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2 + 1, widget->bottom + 3 };
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->midX() + 1, widget->bottom + 3 };
|
||||
width = w->width - w->widgets[WIDX_LIST].right - 6;
|
||||
auto ft = Formatter::Common();
|
||||
ft.Add<rct_string_id>(STR_STRING);
|
||||
|
|
|
@ -620,23 +620,20 @@ static void window_footpath_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
|
||||
// Draw construction image
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right)
|
||||
/ 2,
|
||||
+ ScreenCoordsXY{ window_footpath_widgets[WIDX_CONSTRUCT].midX(),
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60 };
|
||||
gfx_draw_sprite(dpi, image, screenCoords, 0);
|
||||
|
||||
// Draw build this... label
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right)
|
||||
/ 2,
|
||||
+ ScreenCoordsXY{ window_footpath_widgets[WIDX_CONSTRUCT].midX(),
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 23 };
|
||||
gfx_draw_string_centred(dpi, STR_BUILD_THIS, screenCoords, COLOUR_BLACK, nullptr);
|
||||
}
|
||||
|
||||
// Draw cost
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2,
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12 };
|
||||
+ ScreenCoordsXY{ window_footpath_widgets[WIDX_CONSTRUCT].midX(), window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12 };
|
||||
if (_window_footpath_cost != MONEY32_UNDEFINED)
|
||||
{
|
||||
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
|
|
|
@ -422,8 +422,8 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
|
|||
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
{
|
||||
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_MONEY];
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + (widget.left + widget.right) / 2,
|
||||
w->windowPos.y + (widget.top + widget.bottom) / 2 - (line_height == 10 ? 5 : 6) };
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + widget.midX(),
|
||||
w->windowPos.y + widget.midY() - (line_height == 10 ? 5 : 6) };
|
||||
|
||||
auto ft = Formatter::Common();
|
||||
ft.Add<money32>(gCash);
|
||||
|
@ -450,8 +450,7 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
|
|||
// Draw guests
|
||||
{
|
||||
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_GUESTS];
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + (widget.left + widget.right) / 2,
|
||||
w->windowPos.y + (widget.top + widget.bottom) / 2 - 6 };
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + widget.midX(), w->windowPos.y + widget.midY() - 6 };
|
||||
|
||||
gfx_draw_string_centred(
|
||||
dpi,
|
||||
|
@ -467,7 +466,7 @@ static void window_game_bottom_toolbar_draw_left_panel(rct_drawpixelinfo* dpi, r
|
|||
{
|
||||
rct_widget widget = window_game_bottom_toolbar_widgets[WIDX_PARK_RATING];
|
||||
int32_t x = w->windowPos.x + widget.left + 11;
|
||||
int32_t y = w->windowPos.y + (widget.top + widget.bottom) / 2 - 5;
|
||||
int32_t y = w->windowPos.y + widget.midY() - 5;
|
||||
|
||||
window_game_bottom_toolbar_draw_park_rating(dpi, w, w->colours[3], x, y, std::max(10, ((gParkRating / 4) * 263) / 256));
|
||||
}
|
||||
|
@ -583,8 +582,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
|
|||
|
||||
// Text
|
||||
utf8* newsItemText = newsItem->Text;
|
||||
auto screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (middleOutsetWidget->left + middleOutsetWidget->right) / 2, middleOutsetWidget->top + 11 };
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ middleOutsetWidget->midX(), middleOutsetWidget->top + 11 };
|
||||
width = middleOutsetWidget->width() - 62;
|
||||
gfx_draw_string_centred_wrapped_partial(
|
||||
dpi, screenCoords.x, screenCoords.y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText,
|
||||
|
@ -688,8 +686,7 @@ static void window_game_bottom_toolbar_draw_middle_panel(rct_drawpixelinfo* dpi,
|
|||
uint32_t line_height = font_get_line_height(FONT_SPRITE_BASE_MEDIUM);
|
||||
|
||||
ScreenCoordsXY middleWidgetCoords(
|
||||
w->windowPos.x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2,
|
||||
w->windowPos.y + middleOutsetWidget->top + line_height + 1);
|
||||
w->windowPos.x + middleOutsetWidget->midX(), w->windowPos.y + middleOutsetWidget->top + line_height + 1);
|
||||
int32_t width = middleOutsetWidget->width() - 62;
|
||||
|
||||
// Check if there is a map tooltip to draw
|
||||
|
|
|
@ -1082,7 +1082,7 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
auto ft = Formatter::Common();
|
||||
peep->FormatActionTo(ft);
|
||||
rct_widget* widget = &w->widgets[WIDX_ACTION_LBL];
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top - 1 };
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->top - 1 };
|
||||
int32_t width = widget->width();
|
||||
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width);
|
||||
|
||||
|
|
|
@ -686,8 +686,7 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
gfx_draw_sprite(
|
||||
dpi, i,
|
||||
w->windowPos
|
||||
+ ScreenCoordsXY{ (window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2,
|
||||
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 },
|
||||
+ ScreenCoordsXY{ window_guest_list_widgets[WIDX_TAB_1].midX(), window_guest_list_widgets[WIDX_TAB_1].bottom - 6 },
|
||||
0);
|
||||
|
||||
// Tab 2 image
|
||||
|
|
|
@ -238,7 +238,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
drawing_engine_invalidate_image(SPR_TEMP);
|
||||
gfx_draw_sprite(dpi, SPR_TEMP, screenPos, 0);
|
||||
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->bottom - 12 };
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 12 };
|
||||
|
||||
// Warnings
|
||||
const TrackDesign* td6 = _trackDesign.get();
|
||||
|
|
|
@ -349,8 +349,7 @@ static void window_land_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
// Draw number for tool sizes bigger than 7
|
||||
if (gLandToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
|
||||
{
|
||||
screenCoords = { w->windowPos.x + (previewWidget->left + previewWidget->right) / 2,
|
||||
w->windowPos.y + (previewWidget->top + previewWidget->bottom) / 2 };
|
||||
screenCoords = { w->windowPos.x + previewWidget->midX(), w->windowPos.y + previewWidget->midY() };
|
||||
gfx_draw_string_centred(
|
||||
dpi, STR_LAND_TOOL_SIZE_VALUE, screenCoords - ScreenCoordsXY{ 0, 2 }, COLOUR_BLACK, &gLandToolSize);
|
||||
}
|
||||
|
@ -363,8 +362,7 @@ static void window_land_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
widget_draw(dpi, w, WIDX_INCREMENT);
|
||||
}
|
||||
|
||||
screenCoords = { w->windowPos.x + (previewWidget->left + previewWidget->right) / 2,
|
||||
w->windowPos.y + previewWidget->bottom + 5 };
|
||||
screenCoords = { w->windowPos.x + previewWidget->midX(), w->windowPos.y + previewWidget->bottom + 5 };
|
||||
|
||||
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
{
|
||||
|
|
|
@ -271,10 +271,8 @@ static void window_land_rights_invalidate(rct_window* w)
|
|||
|
||||
static void window_land_rights_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
auto screenCoords = ScreenCoordsXY{
|
||||
w->windowPos.x + (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2,
|
||||
w->windowPos.y + (window_land_rights_widgets[WIDX_PREVIEW].top + window_land_rights_widgets[WIDX_PREVIEW].bottom) / 2
|
||||
};
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + window_land_rights_widgets[WIDX_PREVIEW].midX(),
|
||||
w->windowPos.y + window_land_rights_widgets[WIDX_PREVIEW].midY() };
|
||||
|
||||
window_draw_widgets(w, dpi);
|
||||
// Draw number for tool sizes bigger than 7
|
||||
|
@ -287,8 +285,7 @@ static void window_land_rights_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
// Draw cost amount
|
||||
if (_landRightsCost != MONEY32_UNDEFINED && _landRightsCost != 0 && !(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
{
|
||||
screenCoords = { (window_land_rights_widgets[WIDX_PREVIEW].left + window_land_rights_widgets[WIDX_PREVIEW].right) / 2
|
||||
+ w->windowPos.x,
|
||||
screenCoords = { window_land_rights_widgets[WIDX_PREVIEW].midX() + w->windowPos.x,
|
||||
window_land_rights_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 32 };
|
||||
gfx_draw_string_centred(dpi, STR_COST_AMOUNT, screenCoords, COLOUR_BLACK, &_landRightsCost);
|
||||
}
|
||||
|
|
|
@ -815,8 +815,7 @@ static void window_map_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
window_map_draw_tab_images(w, dpi);
|
||||
|
||||
auto screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_map_widgets[WIDX_LAND_TOOL].left + window_map_widgets[WIDX_LAND_TOOL].right) / 2,
|
||||
(window_map_widgets[WIDX_LAND_TOOL].top + window_map_widgets[WIDX_LAND_TOOL].bottom) / 2 };
|
||||
+ ScreenCoordsXY{ window_map_widgets[WIDX_LAND_TOOL].midX(), window_map_widgets[WIDX_LAND_TOOL].midY() };
|
||||
|
||||
// Draw land tool size
|
||||
if (widget_is_active_tool(w, WIDX_SET_LAND_RIGHTS) && _landRightsToolSize > MAX_TOOL_SIZE_WITH_SPRITE)
|
||||
|
|
|
@ -915,8 +915,8 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
auto ft = Formatter::Common();
|
||||
ft.Add<const char*>(buffer);
|
||||
gfx_draw_string_centred_clipped(
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
|
||||
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top },
|
||||
widget->width() - 8);
|
||||
}
|
||||
|
||||
auto screenPos = w->windowPos
|
||||
|
@ -942,8 +942,8 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
auto ft = Formatter::Common();
|
||||
ft.Add<const char*>(buffer);
|
||||
gfx_draw_string_centred_clipped(
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
|
||||
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top },
|
||||
widget->width() - 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -876,7 +876,7 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
labelWidget = &window_park_entrance_widgets[WIDX_STATUS];
|
||||
gfx_draw_string_centred_clipped(
|
||||
dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK,
|
||||
w->windowPos + ScreenCoordsXY{ (labelWidget->left + labelWidget->right) / 2, labelWidget->top }, labelWidget->width());
|
||||
w->windowPos + ScreenCoordsXY{ labelWidget->midX(), labelWidget->top }, labelWidget->width());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1861,10 +1861,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
|
||||
sprite_idx |= 0xA9E00000;
|
||||
gfx_draw_sprite(
|
||||
dpi, sprite_idx,
|
||||
w->windowPos
|
||||
+ ScreenCoordsXY{ (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
|
||||
w->widgets[WIDX_TAB_3].bottom - 9 },
|
||||
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].midX(), w->widgets[WIDX_TAB_3].bottom - 9 },
|
||||
0);
|
||||
}
|
||||
|
||||
|
|
|
@ -378,8 +378,8 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
ft.Add<const char*>(buffer);
|
||||
|
||||
gfx_draw_string_centred_clipped(
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK,
|
||||
w->windowPos + ScreenCoordsXY{ (widget->left + widget->right - 11) / 2, widget->top }, widget->width() - 8);
|
||||
dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top },
|
||||
widget->width() - 8);
|
||||
}
|
||||
|
||||
// Draw ping
|
||||
|
|
|
@ -1391,8 +1391,7 @@ static void window_ride_draw_tab_customer(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
spriteIndex += 1;
|
||||
spriteIndex |= 0xA9E00000;
|
||||
|
||||
gfx_draw_sprite(
|
||||
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->bottom - 6 }, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 6 }, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2341,7 +2341,7 @@ static void window_ride_construction_paint(rct_window* w, rct_drawpixelinfo* dpi
|
|||
}
|
||||
|
||||
// Draw cost
|
||||
screenCoords = { w->windowPos.x + (widget->left + widget->right) / 2, w->windowPos.y + widget->bottom - 23 };
|
||||
screenCoords = { w->windowPos.x + widget->midX(), w->windowPos.y + widget->bottom - 23 };
|
||||
if (_rideConstructionState != RIDE_CONSTRUCTION_STATE_PLACE)
|
||||
gfx_draw_string_centred(dpi, STR_BUILD_THIS, screenCoords, COLOUR_BLACK, w);
|
||||
|
||||
|
|
|
@ -236,8 +236,7 @@ static void window_scenery_scatter_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
if (gWindowSceneryScatterSize > MAX_TOOL_SIZE_WITH_SPRITE)
|
||||
{
|
||||
auto preview = window_scenery_scatter_widgets[WIDX_PREVIEW];
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + (preview.left + preview.right) / 2,
|
||||
w->windowPos.y + (preview.top + preview.bottom) / 2 };
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + preview.midX(), w->windowPos.y + preview.midY() };
|
||||
gfx_draw_string_centred(
|
||||
dpi, STR_LAND_TOOL_SIZE_VALUE, screenCoords - ScreenCoordsXY{ 0, 2 }, COLOUR_BLACK, &gWindowSceneryScatterSize);
|
||||
}
|
||||
|
|
|
@ -952,7 +952,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
auto ft = Formatter::Common();
|
||||
peep->FormatActionTo(ft);
|
||||
rct_widget* widget = &w->widgets[WIDX_BTM_LABEL];
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top };
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->top };
|
||||
int32_t width = widget->width();
|
||||
gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width);
|
||||
}
|
||||
|
|
|
@ -461,8 +461,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
ft.Add<rct_string_id>(ScenarioCategoryStringIds[i]);
|
||||
}
|
||||
|
||||
ScreenCoordsXY stringCoords(
|
||||
(widget->left + widget->right) / 2 + w->windowPos.x, (widget->top + widget->bottom) / 2 + w->windowPos.y - 3);
|
||||
ScreenCoordsXY stringCoords(widget->midX() + w->windowPos.x, widget->midY() + w->windowPos.y - 3);
|
||||
gfx_draw_string_centred_wrapped(dpi, gCommonFormatArgs, stringCoords, 87, format, COLOUR_AQUAMARINE);
|
||||
}
|
||||
|
||||
|
|
|
@ -540,7 +540,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
}
|
||||
|
||||
auto trackPreview = screenPos;
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, (widget->top + widget->bottom) / 2 };
|
||||
screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->midY() };
|
||||
|
||||
rct_g1_element g1temp = {};
|
||||
g1temp.offset = _trackDesignPreviewPixels.data() + (_currentTrackPieceDirection * TRACK_PREVIEW_IMAGE_SIZE);
|
||||
|
|
|
@ -211,10 +211,8 @@ static void window_water_invalidate(rct_window* w)
|
|||
*/
|
||||
static void window_water_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
{
|
||||
auto screenCoords = ScreenCoordsXY{
|
||||
w->windowPos.x + (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2,
|
||||
w->windowPos.y + (window_water_widgets[WIDX_PREVIEW].top + window_water_widgets[WIDX_PREVIEW].bottom) / 2
|
||||
};
|
||||
auto screenCoords = ScreenCoordsXY{ w->windowPos.x + window_water_widgets[WIDX_PREVIEW].midX(),
|
||||
w->windowPos.y + window_water_widgets[WIDX_PREVIEW].midY() };
|
||||
|
||||
window_draw_widgets(w, dpi);
|
||||
// Draw number for tool sizes bigger than 7
|
||||
|
@ -227,8 +225,7 @@ static void window_water_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
{
|
||||
// Draw raise cost amount
|
||||
screenCoords = { (window_water_widgets[WIDX_PREVIEW].left + window_water_widgets[WIDX_PREVIEW].right) / 2
|
||||
+ w->windowPos.x,
|
||||
screenCoords = { window_water_widgets[WIDX_PREVIEW].midX() + w->windowPos.x,
|
||||
window_water_widgets[WIDX_PREVIEW].bottom + w->windowPos.y + 5 };
|
||||
if (gWaterToolRaiseCost != MONEY32_UNDEFINED && gWaterToolRaiseCost != 0)
|
||||
gfx_draw_string_centred(dpi, STR_RAISE_COST_AMOUNT, screenCoords, COLOUR_BLACK, &gWaterToolRaiseCost);
|
||||
|
|
|
@ -108,6 +108,24 @@ struct rct_widget
|
|||
{
|
||||
return bottom - top;
|
||||
}
|
||||
|
||||
int16_t midX() const
|
||||
{
|
||||
return (left + right) / 2;
|
||||
}
|
||||
|
||||
int16_t midY() const
|
||||
{
|
||||
return (top + bottom) / 2;
|
||||
}
|
||||
|
||||
int16_t textTop() const
|
||||
{
|
||||
if (height() >= 10)
|
||||
return std::max<int32_t>(top, top + (height() / 2) - 5);
|
||||
else
|
||||
return top - 1;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue