From e93e32d139595235576abe15d32304a6859f2d48 Mon Sep 17 00:00:00 2001 From: TomasZilinek Date: Sat, 20 Jun 2020 05:22:01 +0200 Subject: [PATCH] Part of #11571: create gfx_draw_string_left() overload (#11984) Replaces a third of all occurrences of the old function --- src/openrct2-ui/interface/Widget.cpp | 2 +- src/openrct2-ui/windows/Cheats.cpp | 44 +++--- src/openrct2-ui/windows/CustomCurrency.cpp | 25 +-- .../windows/EditorInventionsList.cpp | 12 +- .../windows/EditorObjectSelection.cpp | 3 +- .../windows/EditorObjectiveOptions.cpp | 70 ++++----- .../windows/EditorScenarioOptions.cpp | 148 ++++++++---------- src/openrct2-ui/windows/Finances.cpp | 47 +++--- src/openrct2-ui/windows/GameBottomToolbar.cpp | 2 +- src/openrct2/drawing/Drawing.h | 2 + src/openrct2/drawing/Text.cpp | 8 +- 11 files changed, 178 insertions(+), 185 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index a2d10f5e48..aff2364f46 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -485,7 +485,7 @@ static void widget_groupbox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg uint8_t args[sizeof(uintptr_t)] = { 0 }; format_string(buffer, sizeof(buffer), stringId, formatArgs); Formatter(args).Add(buffer); - gfx_draw_string_left(dpi, STR_STRING, args, colour, l, t); + gfx_draw_string_left(dpi, STR_STRING, args, colour, { l, t }); textRight = l + gfx_get_string_width(buffer) + 1; } diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index a9704f6d0f..0fd3b81701 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -1207,55 +1207,55 @@ static void window_cheats_paint(rct_window* w, rct_drawpixelinfo* dpi) } int32_t actual_month = _monthSpinnerValue - 1; gfx_draw_string_left( - dpi, STR_BOTTOM_TOOLBAR_CASH, gCommonFormatArgs, colour, w->windowPos.x + XPL(0) + TXTO, - w->windowPos.y + YPL(2) + TXTO); + dpi, STR_BOTTOM_TOOLBAR_CASH, gCommonFormatArgs, colour, + w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(2) + TXTO }); gfx_draw_string_left( - dpi, STR_YEAR, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(7) + TXTO); + dpi, STR_YEAR, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(7) + TXTO }); gfx_draw_string_left( - dpi, STR_MONTH, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(8) + TXTO); + dpi, STR_MONTH, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(8) + TXTO }); gfx_draw_string_left( - dpi, STR_DAY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(9) + TXTO); + dpi, STR_DAY, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(9) + TXTO }); gfx_draw_string_right( dpi, STR_FORMAT_INTEGER, &_yearSpinnerValue, w->colours[1], - { w->windowPos.x + WPL(1) - 34 - TXTO, w->windowPos.y + YPL(7) + TXTO }); + w->windowPos + ScreenCoordsXY{ WPL(1) - 34 - TXTO, YPL(7) + TXTO }); gfx_draw_string_right( dpi, STR_FORMAT_MONTH, &actual_month, w->colours[1], - { w->windowPos.x + WPL(1) - 34 - TXTO, w->windowPos.y + YPL(8) + TXTO }); + w->windowPos + ScreenCoordsXY{ WPL(1) - 34 - TXTO, YPL(8) + TXTO }); gfx_draw_string_right( dpi, STR_FORMAT_INTEGER, &_daySpinnerValue, w->colours[1], - { w->windowPos.x + WPL(1) - 34 - TXTO, w->windowPos.y + YPL(9) + TXTO }); + w->windowPos + ScreenCoordsXY{ WPL(1) - 34 - TXTO, YPL(9) + TXTO }); } else if (w->page == WINDOW_CHEATS_PAGE_MISC) { gfx_draw_string_left( - dpi, STR_CHEAT_STAFF_SPEED, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(17) + TXTO); + dpi, STR_CHEAT_STAFF_SPEED, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(17) + TXTO }); gfx_draw_string_left( - dpi, STR_FORCE_WEATHER, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(10) + TXTO); + dpi, STR_FORCE_WEATHER, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(10) + TXTO }); gfx_draw_string_right( dpi, STR_FORMAT_INTEGER, &_parkRatingSpinnerValue, w->colours[1], - { w->windowPos.x + WPL(1) - 34 - TXTO, w->windowPos.y + YPL(5) + TXTO }); + w->windowPos + ScreenCoordsXY{ WPL(1) - 34 - TXTO, YPL(5) + TXTO }); } else if (w->page == WINDOW_CHEATS_PAGE_GUESTS) { gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_HAPPINESS, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, - w->windowPos.y + YPL(1) + TXTO); + dpi, STR_CHEAT_GUEST_HAPPINESS, nullptr, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(1) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_ENERGY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(2) + TXTO); + dpi, STR_CHEAT_GUEST_ENERGY, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(2) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_HUNGER, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(3) + TXTO); + dpi, STR_CHEAT_GUEST_HUNGER, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(3) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_THIRST, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(4) + TXTO); + dpi, STR_CHEAT_GUEST_THIRST, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(4) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_NAUSEA, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(5) + TXTO); + dpi, STR_CHEAT_GUEST_NAUSEA, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(5) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_NAUSEA_TOLERANCE, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, - w->windowPos.y + YPL(6) + TXTO); + dpi, STR_CHEAT_GUEST_NAUSEA_TOLERANCE, nullptr, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(6) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_TOILET, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, w->windowPos.y + YPL(7) + TXTO); + dpi, STR_CHEAT_GUEST_TOILET, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(7) + TXTO }); gfx_draw_string_left( - dpi, STR_CHEAT_GUEST_PREFERRED_INTENSITY, nullptr, COLOUR_BLACK, w->windowPos.x + XPL(0) + TXTO, - w->windowPos.y + YPL(8) + TXTO); + dpi, STR_CHEAT_GUEST_PREFERRED_INTENSITY, nullptr, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ XPL(0) + TXTO, YPL(8) + TXTO }); } } diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index e30b0df127..5beb59bd95 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -238,35 +238,40 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); - auto screenCoords = ScreenCoordsXY{ w->windowPos.x + 10, w->windowPos.y + 30 }; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 10, 30 }; - gfx_draw_string_left(dpi, STR_RATE, nullptr, w->colours[1], screenCoords.x, screenCoords.y); + gfx_draw_string_left(dpi, STR_RATE, nullptr, w->colours[1], screenCoords); int32_t baseExchange = CurrencyDescriptors[CURRENCY_POUNDS].rate; ft = Formatter::Common(); ft.Add(baseExchange); gfx_draw_string_left( - dpi, STR_CUSTOM_CURRENCY_EQUIVALENCY, gCommonFormatArgs, w->colours[1], screenCoords.x + 200, screenCoords.y); + dpi, STR_CUSTOM_CURRENCY_EQUIVALENCY, gCommonFormatArgs, w->colours[1], screenCoords + ScreenCoordsXY{ 200, 0 }); screenCoords.y += 20; - gfx_draw_string_left(dpi, STR_CURRENCY_SYMBOL_TEXT, nullptr, w->colours[1], screenCoords.x, screenCoords.y); + gfx_draw_string_left(dpi, STR_CURRENCY_SYMBOL_TEXT, nullptr, w->colours[1], screenCoords); - screenCoords.x = w->windowPos.x + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1; - screenCoords.y = w->windowPos.y + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1, + window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top }; gfx_draw_string(dpi, CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, w->colours[1], screenCoords); if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CURRENCY_PREFIX) { gfx_draw_string_left( - dpi, STR_PREFIX, w, w->colours[1], w->windowPos.x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, - w->windowPos.y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top); + dpi, STR_PREFIX, w, w->colours[1], + w->windowPos + + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top }); } else { gfx_draw_string_left( - dpi, STR_SUFFIX, w, w->colours[1], w->windowPos.x + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, - w->windowPos.y + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top); + dpi, STR_SUFFIX, w, w->colours[1], + w->windowPos + + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, + window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].top }); } } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 40c458f4b0..1fafee4099 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -557,12 +557,12 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo // Pre-researched items label screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_PRE_RESEARCHED_SCROLL].left, w->widgets[WIDX_PRE_RESEARCHED_SCROLL].top - 11 }; - gfx_draw_string_left(dpi, STR_INVENTION_PREINVENTED_ITEMS, nullptr, COLOUR_BLACK, screenPos.x, screenPos.y - 1); + gfx_draw_string_left(dpi, STR_INVENTION_PREINVENTED_ITEMS, nullptr, COLOUR_BLACK, screenPos - ScreenCoordsXY{ 0, 1 }); // Research order label screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_RESEARCH_ORDER_SCROLL].left, w->widgets[WIDX_RESEARCH_ORDER_SCROLL].top - 11 }; - gfx_draw_string_left(dpi, STR_INVENTION_TO_BE_INVENTED_ITEMS, nullptr, COLOUR_BLACK, screenPos.x, screenPos.y - 1); + gfx_draw_string_left(dpi, STR_INVENTION_TO_BE_INVENTED_ITEMS, nullptr, COLOUR_BLACK, screenPos - ScreenCoordsXY{ 0, 1 }); // Preview background widget = &w->widgets[WIDX_PREVIEW]; @@ -615,7 +615,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo // Item category screenPos.x = w->windowPos.x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right + 4; stringId = EditorInventionsResearchCategories[researchItem->category]; - gfx_draw_string_left(dpi, STR_INVENTION_RESEARCH_GROUP, &stringId, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_INVENTION_RESEARCH_GROUP, &stringId, COLOUR_BLACK, screenPos); } /** @@ -815,12 +815,10 @@ static void window_editor_inventions_list_drag_moved(rct_window* w, const Screen static void window_editor_inventions_list_drag_paint(rct_window* w, rct_drawpixelinfo* dpi) { rct_string_id drawString; - int32_t x, y; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 0, 2 }; - x = w->windowPos.x; - y = w->windowPos.y + 2; drawString = window_editor_inventions_list_prepare_name(&_editorInventionsListDraggedItem, true); - gfx_draw_string_left(dpi, drawString, gCommonFormatArgs, COLOUR_BLACK | COLOUR_FLAG_OUTLINE, x, y); + gfx_draw_string_left(dpi, drawString, gCommonFormatArgs, COLOUR_BLACK | COLOUR_FLAG_OUTLINE, screenCoords); } static rct_string_id window_editor_inventions_list_prepare_name(const ResearchItem* researchItem, bool withGap) diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 299734fd57..7551712121 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1017,8 +1017,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf auto ft = Formatter::Common(); ft.Add(numSelected); ft.Add(totalSelectable); - gfx_draw_string_left( - dpi, STR_OBJECT_SELECTION_SELECTION_SIZE, gCommonFormatArgs, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_OBJECT_SELECTION_SELECTION_SIZE, gCommonFormatArgs, COLOUR_BLACK, screenPos); } // Draw sort button text diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index deeccd5b28..cd259c418a 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -858,7 +858,7 @@ static void window_editor_objective_options_main_invalidate(rct_window* w) */ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y, width; + int32_t width; rct_string_id stringId; uint32_t arg; @@ -866,21 +866,18 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi window_editor_objective_options_draw_tab_images(w, dpi); // Objective label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE].top; - gfx_draw_string_left(dpi, STR_OBJECTIVE_WINDOW, nullptr, COLOUR_BLACK, x, y); + auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_OBJECTIVE].top }; + gfx_draw_string_left(dpi, STR_OBJECTIVE_WINDOW, nullptr, COLOUR_BLACK, screenCoords); // Objective value - x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE].top; + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_OBJECTIVE].left + 1, w->widgets[WIDX_OBJECTIVE].top }; stringId = ObjectiveDropdownOptionNames[gScenarioObjectiveType]; - gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, screenCoords); if (w->widgets[WIDX_OBJECTIVE_ARG_1].type != WWT_EMPTY) { // Objective argument 1 label - x = w->windowPos.x + 28; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_1].top; + screenCoords = w->windowPos + ScreenCoordsXY{ 28, w->widgets[WIDX_OBJECTIVE_ARG_1].top }; switch (gScenarioObjectiveType) { case OBJECTIVE_GUESTS_BY: @@ -904,11 +901,11 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi stringId = STR_WINDOW_OBJECTIVE_EXCITEMENT_RATING; break; } - gfx_draw_string_left(dpi, stringId, nullptr, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, stringId, nullptr, COLOUR_BLACK, screenCoords); // Objective argument 1 value - x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE_ARG_1].left + 1; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_1].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_OBJECTIVE_ARG_1].left + 1, w->widgets[WIDX_OBJECTIVE_ARG_1].top }; switch (gScenarioObjectiveType) { case OBJECTIVE_GUESTS_BY: @@ -932,26 +929,24 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi arg = gScenarioObjectiveCurrency; break; } - gfx_draw_string_left(dpi, stringId, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, stringId, &arg, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_OBJECTIVE_ARG_2].type != WWT_EMPTY) { // Objective argument 2 label - x = w->windowPos.x + 28; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_2].top; - gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_DATE, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 28, w->widgets[WIDX_OBJECTIVE_ARG_2].top }; + gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_DATE, nullptr, COLOUR_BLACK, screenCoords); // Objective argument 2 value - x = w->windowPos.x + w->widgets[WIDX_OBJECTIVE_ARG_2].left + 1; - y = w->windowPos.y + w->widgets[WIDX_OBJECTIVE_ARG_2].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_OBJECTIVE_ARG_2].left + 1, w->widgets[WIDX_OBJECTIVE_ARG_2].top }; arg = (gScenarioObjectiveYear * MONTH_COUNT) - 1; - gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_VALUE_DATE, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_WINDOW_OBJECTIVE_VALUE_DATE, &arg, COLOUR_BLACK, screenCoords); } // Park name - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_PARK_NAME].top; + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_PARK_NAME].top }; width = w->widgets[WIDX_PARK_NAME].left - 16; { @@ -961,44 +956,39 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(parkName); - gfx_draw_string_left_clipped(dpi, STR_WINDOW_PARK_NAME, gCommonFormatArgs, COLOUR_BLACK, { x, y }, width); + gfx_draw_string_left_clipped(dpi, STR_WINDOW_PARK_NAME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, width); } // Scenario name - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_SCENARIO_NAME].top; + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_SCENARIO_NAME].top }; width = w->widgets[WIDX_SCENARIO_NAME].left - 16; auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(gS6Info.name); - gfx_draw_string_left_clipped(dpi, STR_WINDOW_SCENARIO_NAME, gCommonFormatArgs, COLOUR_BLACK, { x, y }, width); + gfx_draw_string_left_clipped(dpi, STR_WINDOW_SCENARIO_NAME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, width); // Scenario details label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_DETAILS].top; - gfx_draw_string_left(dpi, STR_WINDOW_PARK_DETAILS, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_DETAILS].top }; + gfx_draw_string_left(dpi, STR_WINDOW_PARK_DETAILS, nullptr, COLOUR_BLACK, screenCoords); // Scenario details value - x = w->windowPos.x + 16; - y = w->windowPos.y + w->widgets[WIDX_DETAILS].top + 10; + screenCoords = w->windowPos + ScreenCoordsXY{ 16, w->widgets[WIDX_DETAILS].top + 10 }; width = w->widgets[WIDX_DETAILS].left - 4; ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(gS6Info.details); - gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, { x, y }, width, STR_BLACK_STRING, COLOUR_BLACK); + gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, screenCoords, width, STR_BLACK_STRING, COLOUR_BLACK); // Scenario category label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_CATEGORY].top; - gfx_draw_string_left(dpi, STR_WINDOW_SCENARIO_GROUP, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CATEGORY].top }; + gfx_draw_string_left(dpi, STR_WINDOW_SCENARIO_GROUP, nullptr, COLOUR_BLACK, screenCoords); // Scenario category value - x = w->windowPos.x + w->widgets[WIDX_CATEGORY].left + 1; - y = w->windowPos.y + w->widgets[WIDX_CATEGORY].top; + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_CATEGORY].left + 1, w->widgets[WIDX_CATEGORY].top }; stringId = ScenarioCategoryStringIds[gS6Info.category]; - gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, screenCoords); } /** @@ -1139,8 +1129,8 @@ static void window_editor_objective_options_rides_paint(rct_window* w, rct_drawp window_editor_objective_options_draw_tab_images(w, dpi); gfx_draw_string_left( - dpi, STR_WINDOW_PRESERVATION_ORDER, nullptr, COLOUR_BLACK, w->windowPos.x + 6, - w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + 3); + dpi, STR_WINDOW_PRESERVATION_ORDER, nullptr, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_PAGE_BACKGROUND].top + 3 }); } /** @@ -1184,7 +1174,7 @@ static void window_editor_objective_options_rides_scrollpaint(rct_window* w, rct // Ride name uint32_t args[32]{}; ride->FormatNameTo(args); - gfx_draw_string_left(dpi, stringId, args, COLOUR_BLACK, 15, y); + gfx_draw_string_left(dpi, stringId, args, COLOUR_BLACK, { 15, y }); } } } diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index 494d89fd21..db5a65935c 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -742,55 +742,51 @@ static void window_editor_scenario_options_financial_invalidate(rct_window* w) */ static void window_editor_scenario_options_financial_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y; + ScreenCoordsXY screenCoords{}; window_draw_widgets(w, dpi); window_editor_scenario_options_draw_tab_images(w, dpi); if (w->widgets[WIDX_INITIAL_CASH].type != WWT_EMPTY) { - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_INITIAL_CASH].top; - gfx_draw_string_left(dpi, STR_INIT_CASH_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_INITIAL_CASH].top }; + gfx_draw_string_left(dpi, STR_INIT_CASH_LABEL, nullptr, COLOUR_BLACK, screenCoords); - x = w->windowPos.x + w->widgets[WIDX_INITIAL_CASH].left + 1; - y = w->windowPos.y + w->widgets[WIDX_INITIAL_CASH].top; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gInitialCash, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_INITIAL_CASH].left + 1, w->widgets[WIDX_INITIAL_CASH].top }; + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gInitialCash, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_INITIAL_LOAN].type != WWT_EMPTY) { - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_INITIAL_LOAN].top; - gfx_draw_string_left(dpi, STR_INIT_LOAN_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_INITIAL_LOAN].top }; + gfx_draw_string_left(dpi, STR_INIT_LOAN_LABEL, nullptr, COLOUR_BLACK, screenCoords); - x = w->windowPos.x + w->widgets[WIDX_INITIAL_LOAN].left + 1; - y = w->windowPos.y + w->widgets[WIDX_INITIAL_LOAN].top; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gBankLoan, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_INITIAL_LOAN].left + 1, w->widgets[WIDX_INITIAL_LOAN].top }; + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gBankLoan, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_MAXIMUM_LOAN].type != WWT_EMPTY) { - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_MAXIMUM_LOAN].top; - gfx_draw_string_left(dpi, STR_MAX_LOAN_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_MAXIMUM_LOAN].top }; + gfx_draw_string_left(dpi, STR_MAX_LOAN_LABEL, nullptr, COLOUR_BLACK, screenCoords); - x = w->windowPos.x + w->widgets[WIDX_MAXIMUM_LOAN].left + 1; - y = w->windowPos.y + w->widgets[WIDX_MAXIMUM_LOAN].top; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gMaxBankLoan, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_MAXIMUM_LOAN].left + 1, w->widgets[WIDX_MAXIMUM_LOAN].top }; + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &gMaxBankLoan, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_INTEREST_RATE].type != WWT_EMPTY) { - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_INTEREST_RATE].top; - gfx_draw_string_left(dpi, STR_INTEREST_RATE_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_INTEREST_RATE].top }; + gfx_draw_string_left(dpi, STR_INTEREST_RATE_LABEL, nullptr, COLOUR_BLACK, screenCoords); - x = w->windowPos.x + w->widgets[WIDX_INTEREST_RATE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_INTEREST_RATE].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_INTEREST_RATE].left + 1, w->widgets[WIDX_INTEREST_RATE].top }; int16_t interestRate = std::clamp(static_cast(gBankLoanInterestRate), INT16_MIN, INT16_MAX); - gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &interestRate, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &interestRate, COLOUR_BLACK, screenCoords); } } @@ -1022,7 +1018,8 @@ static void window_editor_scenario_options_guests_invalidate(rct_window* w) */ static void window_editor_scenario_options_guests_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y, arg; + int32_t arg; + ScreenCoordsXY screenCoords{}; window_draw_widgets(w, dpi); window_editor_scenario_options_draw_tab_images(w, dpi); @@ -1030,49 +1027,46 @@ static void window_editor_scenario_options_guests_paint(rct_window* w, rct_drawp if (w->widgets[WIDX_CASH_PER_GUEST].type != WWT_EMPTY) { // Cash per guest label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_CASH_PER_GUEST].top; - gfx_draw_string_left(dpi, STR_CASH_PER_GUEST_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CASH_PER_GUEST].top }; + gfx_draw_string_left(dpi, STR_CASH_PER_GUEST_LABEL, nullptr, COLOUR_BLACK, screenCoords); // Cash per guest value - x = w->windowPos.x + w->widgets[WIDX_CASH_PER_GUEST].left + 1; - y = w->windowPos.y + w->widgets[WIDX_CASH_PER_GUEST].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_CASH_PER_GUEST].left + 1, w->widgets[WIDX_CASH_PER_GUEST].top }; arg = gGuestInitialCash; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); } // Guest initial happiness label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top; - gfx_draw_string_left(dpi, STR_GUEST_INIT_HAPPINESS, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top }; + gfx_draw_string_left(dpi, STR_GUEST_INIT_HAPPINESS, nullptr, COLOUR_BLACK, screenCoords); // Guest initial happiness value - x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].left + 1; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].left + 1, + w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HAPPINESS].top }; arg = (gGuestInitialHappiness * 100) / 255; - gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); // Guest initial hunger label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top; - gfx_draw_string_left(dpi, STR_GUEST_INIT_HUNGER, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_GUEST_INITIAL_HUNGER].top }; + gfx_draw_string_left(dpi, STR_GUEST_INIT_HUNGER, nullptr, COLOUR_BLACK, screenCoords); // Guest initial hunger value - x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_HUNGER].left + 1; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_HUNGER].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GUEST_INITIAL_HUNGER].left + 1, w->widgets[WIDX_GUEST_INITIAL_HUNGER].top }; arg = ((255 - gGuestInitialHunger) * 100) / 255; - gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); // Guest initial thirst label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top; - gfx_draw_string_left(dpi, STR_GUEST_INIT_THIRST, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_GUEST_INITIAL_THIRST].top }; + gfx_draw_string_left(dpi, STR_GUEST_INIT_THIRST, nullptr, COLOUR_BLACK, screenCoords); // Guest initial thirst value - x = w->windowPos.x + w->widgets[WIDX_GUEST_INITIAL_THIRST].left + 1; - y = w->windowPos.y + w->widgets[WIDX_GUEST_INITIAL_THIRST].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GUEST_INITIAL_THIRST].left + 1, w->widgets[WIDX_GUEST_INITIAL_THIRST].top }; arg = ((255 - gGuestInitialThirst) * 100) / 255; - gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_PERCENT_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); } #pragma endregion @@ -1386,7 +1380,8 @@ static void window_editor_scenario_options_park_invalidate(rct_window* w) */ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y, arg; + int32_t arg; + ScreenCoordsXY screenCoords{}; rct_string_id stringId; window_draw_widgets(w, dpi); @@ -1395,37 +1390,35 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix if (w->widgets[WIDX_LAND_COST].type != WWT_EMPTY) { // Cost to buy land label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_LAND_COST].top; - gfx_draw_string_left(dpi, STR_LAND_COST_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_LAND_COST].top }; + gfx_draw_string_left(dpi, STR_LAND_COST_LABEL, nullptr, COLOUR_BLACK, screenCoords); // Cost to buy land value - x = w->windowPos.x + w->widgets[WIDX_LAND_COST].left + 1; - y = w->windowPos.y + w->widgets[WIDX_LAND_COST].top; + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LAND_COST].left + 1, w->widgets[WIDX_LAND_COST].top }; arg = gLandPrice; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].type != WWT_EMPTY) { // Cost to buy construction rights label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top; - gfx_draw_string_left(dpi, STR_RIGHTS_COST_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top }; + gfx_draw_string_left(dpi, STR_RIGHTS_COST_LABEL, nullptr, COLOUR_BLACK, screenCoords); // Cost to buy construction rights value - x = w->windowPos.x + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].left + 1; - y = w->windowPos.y + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].left + 1, + w->widgets[WIDX_CONSTRUCTION_RIGHTS_COST].top }; arg = gConstructionRightsPrice; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].type != WWT_EMPTY) { // Pay for park or rides label - x = w->windowPos.x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].left + 1; - y = w->windowPos.y + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].top; - gfx_draw_string_left(dpi, STR_FREE_PARK_ENTER, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].left + 1, w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].top }; + gfx_draw_string_left(dpi, STR_FREE_PARK_ENTER, nullptr, COLOUR_BLACK, screenCoords); // Pay for park and/or rides value if (gParkFlags & PARK_FLAGS_UNLOCK_ALL_PRICES) @@ -1435,33 +1428,30 @@ static void window_editor_scenario_options_park_paint(rct_window* w, rct_drawpix else stringId = STR_PAY_PARK_ENTER; - gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, screenCoords); } if (w->widgets[WIDX_ENTRY_PRICE].type != WWT_EMPTY) { // Entry price label - x = w->windowPos.x + w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].right + 8; - y = w->windowPos.y + w->widgets[WIDX_ENTRY_PRICE].top; - gfx_draw_string_left(dpi, STR_ENTRY_PRICE_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_PAY_FOR_PARK_OR_RIDES].right + 8, w->widgets[WIDX_ENTRY_PRICE].top }; + gfx_draw_string_left(dpi, STR_ENTRY_PRICE_LABEL, nullptr, COLOUR_BLACK, screenCoords); // Entry price value - x = w->windowPos.x + w->widgets[WIDX_ENTRY_PRICE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_ENTRY_PRICE].top; + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_ENTRY_PRICE].left + 1, w->widgets[WIDX_ENTRY_PRICE].top }; arg = gParkEntranceFee; - gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_CURRENCY_FORMAT_LABEL, &arg, COLOUR_BLACK, screenCoords); } // Climate label - x = w->windowPos.x + 8; - y = w->windowPos.y + w->widgets[WIDX_CLIMATE].top; - gfx_draw_string_left(dpi, STR_CLIMATE_LABEL, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CLIMATE].top }; + gfx_draw_string_left(dpi, STR_CLIMATE_LABEL, nullptr, COLOUR_BLACK, screenCoords); // Climate value - x = w->windowPos.x + w->widgets[WIDX_CLIMATE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_CLIMATE].top; + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_CLIMATE].left + 1, w->widgets[WIDX_CLIMATE].top }; stringId = ClimateNames[gClimate]; - gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, &stringId, COLOUR_BLACK, screenCoords); } #pragma endregion diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 0bf597e2c0..dc23c5a91f 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -667,7 +667,7 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); window_finances_draw_tab_images(dpi, w); - auto screenCoords = ScreenCoordsXY{ w->windowPos.x + 8, w->windowPos.y + 51 }; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, 51 }; // Expenditure / Income heading draw_string_left_underline(dpi, STR_FINANCES_SUMMARY_EXPENDITURE_INCOME, nullptr, COLOUR_BLACK, screenCoords); @@ -683,7 +683,7 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi) ColourMapA[w->colours[1]].lighter | 0x1000000); gfx_draw_string_left( - dpi, window_finances_summary_row_labels[i], nullptr, COLOUR_BLACK, screenCoords.x, screenCoords.y - 1); + dpi, window_finances_summary_row_labels[i], nullptr, COLOUR_BLACK, screenCoords - ScreenCoordsXY{ 0, 1 }); screenCoords.y += TABLE_CELL_HEIGHT; } @@ -693,15 +693,15 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi) INSET_RECT_FLAG_BORDER_INSET); // Loan and interest rate - gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_LOAN, nullptr, COLOUR_BLACK, w->windowPos.x + 8, w->windowPos.y + 279); + gfx_draw_string_left(dpi, STR_FINANCES_SUMMARY_LOAN, nullptr, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 8, 279 }); auto ft = Formatter::Common(); ft.Add(gBankLoanInterestRate); gfx_draw_string_left( - dpi, STR_FINANCES_SUMMARY_AT_X_PER_YEAR, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 167, w->windowPos.y + 279); + dpi, STR_FINANCES_SUMMARY_AT_X_PER_YEAR, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 167, 279 }); // Current cash rct_string_id stringId = gCash >= 0 ? STR_CASH_LABEL : STR_CASH_NEGATIVE_LABEL; - gfx_draw_string_left(dpi, stringId, &gCash, COLOUR_BLACK, w->windowPos.x + 8, w->windowPos.y + 294); + gfx_draw_string_left(dpi, stringId, &gCash, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 8, 294 }); // Objective related financial information if (gScenarioObjectiveType == OBJECTIVE_MONTHLY_FOOD_INCOME) @@ -711,14 +711,14 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(lastMonthProfit); gfx_draw_string_left( dpi, STR_LAST_MONTH_PROFIT_FROM_FOOD_DRINK_MERCHANDISE_SALES_LABEL, gCommonFormatArgs, COLOUR_BLACK, - w->windowPos.x + 280, w->windowPos.y + 279); + w->windowPos + ScreenCoordsXY{ 280, 279 }); } else { // Park value and company value - gfx_draw_string_left(dpi, STR_PARK_VALUE_LABEL, &gParkValue, COLOUR_BLACK, w->windowPos.x + 280, w->windowPos.y + 279); + gfx_draw_string_left(dpi, STR_PARK_VALUE_LABEL, &gParkValue, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 280, 279 }); gfx_draw_string_left( - dpi, STR_COMPANY_VALUE_LABEL, &gCompanyValue, COLOUR_BLACK, w->windowPos.x + 280, w->windowPos.y + 294); + dpi, STR_COMPANY_VALUE_LABEL, &gCompanyValue, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 280, 294 }); } } @@ -858,7 +858,7 @@ static void window_finances_financial_graph_paint(rct_window* w, rct_drawpixelin dpi, cashLessLoan >= 0 ? STR_FINANCES_FINANCIAL_GRAPH_CASH_LESS_LOAN_POSITIVE : STR_FINANCES_FINANCIAL_GRAPH_CASH_LESS_LOAN_NEGATIVE, - &cashLessLoan, COLOUR_BLACK, graphLeft, graphTop - 11); + &cashLessLoan, COLOUR_BLACK, { graphLeft, graphTop - 11 }); // Graph gfx_fill_rect_inset(dpi, graphLeft, graphTop, graphRight, graphBottom, w->colours[1], INSET_RECT_F_30); @@ -961,7 +961,7 @@ static void window_finances_park_value_graph_paint(rct_window* w, rct_drawpixeli // Park value money32 parkValue = gParkValue; - gfx_draw_string_left(dpi, STR_FINANCES_PARK_VALUE, &parkValue, COLOUR_BLACK, graphLeft, graphTop - 11); + gfx_draw_string_left(dpi, STR_FINANCES_PARK_VALUE, &parkValue, COLOUR_BLACK, { graphLeft, graphTop - 11 }); // Graph gfx_fill_rect_inset(dpi, graphLeft, graphTop, graphRight, graphBottom, w->colours[1], INSET_RECT_F_30); @@ -1065,7 +1065,7 @@ static void window_finances_profit_graph_paint(rct_window* w, rct_drawpixelinfo* money32 weeklyPofit = gCurrentProfit; gfx_draw_string_left( dpi, weeklyPofit >= 0 ? STR_FINANCES_WEEKLY_PROFIT_POSITIVE : STR_FINANCES_WEEKLY_PROFIT_LOSS, &weeklyPofit, - COLOUR_BLACK, graphLeft, graphTop - 11); + COLOUR_BLACK, { graphLeft, graphTop - 11 }); // Graph gfx_fill_rect_inset(dpi, graphLeft, graphTop, graphRight, graphBottom, w->colours[1], INSET_RECT_F_30); @@ -1187,8 +1187,7 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp window_draw_widgets(w, dpi); window_finances_draw_tab_images(dpi, w); - int32_t x = w->windowPos.x + 8; - int32_t y = w->windowPos.y + 62; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, 62 }; int32_t noCampaignsActive = 1; for (int32_t i = 0; i < ADVERTISING_CAMPAIGN_COUNT; i++) { @@ -1229,22 +1228,24 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp } // Advertisement - gfx_draw_string_left_clipped(dpi, MarketingCampaignNames[i][1], gCommonFormatArgs, COLOUR_BLACK, { x + 4, y }, 296); + gfx_draw_string_left_clipped( + dpi, MarketingCampaignNames[i][1], gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 4, 0 }, 296); // Duration uint16_t weeksRemaining = campaign->WeeksLeft; gfx_draw_string_left( - dpi, weeksRemaining == 1 ? STR_1_WEEK_REMAINING : STR_X_WEEKS_REMAINING, &weeksRemaining, COLOUR_BLACK, x + 304, y); + dpi, weeksRemaining == 1 ? STR_1_WEEK_REMAINING : STR_X_WEEKS_REMAINING, &weeksRemaining, COLOUR_BLACK, + screenCoords + ScreenCoordsXY{ 304, 0 }); - y += LIST_ROW_HEIGHT; + screenCoords.y += LIST_ROW_HEIGHT; } if (noCampaignsActive) { - gfx_draw_string_left(dpi, STR_MARKETING_CAMPAIGNS_NONE, nullptr, COLOUR_BLACK, x + 4, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_MARKETING_CAMPAIGNS_NONE, nullptr, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 4, 0 }); + screenCoords.y += LIST_ROW_HEIGHT; } - y += 34; + screenCoords.y += 34; // Draw campaign button text for (int32_t i = 0; i < ADVERTISING_CAMPAIGN_COUNT; i++) @@ -1254,10 +1255,12 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp { // Draw button text money32 pricePerWeek = AdvertisingCampaignPricePerWeek[i]; - gfx_draw_string_left(dpi, MarketingCampaignNames[i][0], nullptr, COLOUR_BLACK, x + 4, y); - gfx_draw_string_left(dpi, STR_MARKETING_PER_WEEK, &pricePerWeek, COLOUR_BLACK, x + WH_SUMMARY, y); + gfx_draw_string_left( + dpi, MarketingCampaignNames[i][0], nullptr, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 4, 0 }); + gfx_draw_string_left( + dpi, STR_MARKETING_PER_WEEK, &pricePerWeek, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ WH_SUMMARY, 0 }); - y += BUTTON_FACE_HEIGHT + 2; + screenCoords.y += BUTTON_FACE_HEIGHT + 2; } } } diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 92d0e1caa1..3f48cddf80 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -543,7 +543,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi, } ft = Formatter::Common(); ft.Add(temperature); - gfx_draw_string_left(dpi, format, gCommonFormatArgs, COLOUR_BLACK, screenCoords.x, screenCoords.y + 6); + gfx_draw_string_left(dpi, format, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 0, 6 }); screenCoords.x += 30; // Current weather diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 0d1951ba3f..fe1a1ebfb4 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -644,6 +644,8 @@ void FASTCALL void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords); void gfx_draw_string_left(rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, int32_t x, int32_t y); +void gfx_draw_string_left( + rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords); void gfx_draw_string_centred( rct_drawpixelinfo* dpi, rct_string_id format, const ScreenCoordsXY& coords, uint8_t colour, const void* args); void gfx_draw_string_right( diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 3a5ae5fd9a..7364c23658 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -153,7 +153,13 @@ void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t co // Basic void gfx_draw_string_left(rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, int32_t x, int32_t y) { - DrawTextCompat(dpi, x, y, format, args, colour, TextAlignment::LEFT); + gfx_draw_string_left(dpi, format, args, colour, { x, y }); +} + +void gfx_draw_string_left( + rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords) +{ + DrawTextCompat(dpi, coords.x, coords.y, format, args, colour, TextAlignment::LEFT); } void gfx_draw_string_centred(