Introduce widget::midX and widget::midY helper functions

This commit is contained in:
Aaron van Geffen 2020-06-25 10:31:15 +02:00
parent 681b8d7938
commit 2e153a7e95
25 changed files with 61 additions and 84 deletions

View File

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

View File

@ -346,9 +346,8 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge
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);
if (widget->height() >= 10)
topLeft.y += std::max<int32_t>(widget->top, widget->top + (widget->height() / 2) - 5);
else
topLeft.y += widget->top - 1;
}
@ -391,9 +390,8 @@ 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);
if (widget->height() >= 10)
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (widget->height() / 2) - 5);
else
t = w->windowPos.y + widget->top - 1;
}
@ -588,9 +586,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,9 +1054,8 @@ 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);
if (widget->height() >= 10)
t = w->windowPos.y + std::max<int32_t>(widget->top, widget->top + (widget->height() / 2) - 5);
else
t = w->windowPos.y + widget->top - 1;
@ -1103,6 +1098,6 @@ 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);
gfx_fill_rect(dpi, cur_x, t + (widget->height() - 1), cur_x + width, t + (widget->height() - 1), colour + 5);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -108,6 +108,16 @@ struct rct_widget
{
return bottom - top;
}
int16_t midX() const
{
return (left + right) / 2;
}
int16_t midY() const
{
return (top + bottom) / 2;
}
};
/**