diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 8b8cbf7f1a..54e81ca3f6 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -1051,7 +1051,8 @@ static void window_park_rating_paint(rct_window* w, rct_drawpixelinfo* dpi) // Current value gfx_draw_string_left( - dpi, STR_PARK_RATING_LABEL, &gParkRating, COLOUR_BLACK, screenPos.x + widget->left + 3, screenPos.y + widget->top + 2); + dpi, STR_PARK_RATING_LABEL, &gParkRating, COLOUR_BLACK, + screenPos + ScreenCoordsXY{ widget->left + 3, widget->top + 2 }); // Graph border gfx_fill_rect_inset( @@ -1181,8 +1182,8 @@ static void window_park_guests_paint(rct_window* w, rct_drawpixelinfo* dpi) // Current value gfx_draw_string_left( - dpi, STR_GUESTS_IN_PARK_LABEL, &gNumGuestsInPark, COLOUR_BLACK, screenPos.x + widget->left + 3, - screenPos.y + widget->top + 2); + dpi, STR_GUESTS_IN_PARK_LABEL, &gNumGuestsInPark, COLOUR_BLACK, + screenPos + ScreenCoordsXY{ widget->left + 3, widget->top + 2 }); // Graph border gfx_fill_rect_inset( @@ -1321,15 +1322,14 @@ static void window_park_price_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); window_park_draw_tab_images(dpi, w); - auto x = w->windowPos.x + w->widgets[WIDX_PAGE_BACKGROUND].left + 4; - auto y = w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + 30; - gfx_draw_string_left(dpi, STR_INCOME_FROM_ADMISSIONS, &gTotalIncomeFromAdmissions, COLOUR_BLACK, x, y); + auto screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_PAGE_BACKGROUND].left + 4, w->widgets[WIDX_PAGE_BACKGROUND].top + 30 }; + gfx_draw_string_left(dpi, STR_INCOME_FROM_ADMISSIONS, &gTotalIncomeFromAdmissions, COLOUR_BLACK, screenCoords); money32 parkEntranceFee = park_get_entrance_fee(); auto stringId = parkEntranceFee == 0 ? STR_FREE : STR_BOTTOM_TOOLBAR_CASH; - x = w->windowPos.x + w->widgets[WIDX_PRICE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_PRICE].top + 1; - gfx_draw_string_left(dpi, stringId, &parkEntranceFee, w->colours[1], x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_PRICE].left + 1, w->widgets[WIDX_PRICE].top + 1 }; + gfx_draw_string_left(dpi, stringId, &parkEntranceFee, w->colours[1], screenCoords); } #pragma endregion @@ -1413,13 +1413,14 @@ static void window_park_stats_invalidate(rct_window* w) */ static void window_park_stats_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y, parkSize, stringIndex; + int32_t parkSize, stringIndex; window_draw_widgets(w, dpi); window_park_draw_tab_images(dpi, w); - x = w->windowPos.x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4; - y = w->windowPos.y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4 }; // Draw park size parkSize = gParkSize * 10; @@ -1431,31 +1432,31 @@ static void window_park_stats_paint(rct_window* w, rct_drawpixelinfo* dpi) } auto ft = Formatter::Common(); ft.Add(parkSize); - gfx_draw_string_left(dpi, stringIndex, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringIndex, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Draw number of rides / attractions if (w->list_information_type != 0xFFFF) { ft = Formatter::Common(); ft.Add(w->list_information_type); - gfx_draw_string_left(dpi, STR_NUMBER_OF_RIDES_LABEL, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_NUMBER_OF_RIDES_LABEL, gCommonFormatArgs, COLOUR_BLACK, screenCoords); } - y += LIST_ROW_HEIGHT; + screenCoords.y += LIST_ROW_HEIGHT; // Draw number of staff if (w->numberOfStaff != -1) { ft = Formatter::Common(); ft.Add(w->numberOfStaff); - gfx_draw_string_left(dpi, STR_STAFF_LABEL, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_STAFF_LABEL, gCommonFormatArgs, COLOUR_BLACK, screenCoords); } - y += LIST_ROW_HEIGHT; + screenCoords.y += LIST_ROW_HEIGHT; // Draw number of guests in park - gfx_draw_string_left(dpi, STR_GUESTS_IN_PARK_LABEL, &gNumGuestsInPark, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; - gfx_draw_string_left(dpi, STR_TOTAL_ADMISSIONS, &gTotalAdmissions, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_GUESTS_IN_PARK_LABEL, &gNumGuestsInPark, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_TOTAL_ADMISSIONS, &gTotalAdmissions, COLOUR_BLACK, screenCoords); } #pragma endregion @@ -1591,23 +1592,22 @@ static void window_park_objective_invalidate(rct_window* w) */ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y; - window_draw_widgets(w, dpi); window_park_draw_tab_images(dpi, w); // Scenario description - x = w->windowPos.x + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].left + 4; - y = w->windowPos.y + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].top + 7; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_park_objective_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].top + 7 }; auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(gScenarioDetails.c_str()); - y += gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, { x, y }, 222, STR_BLACK_STRING, COLOUR_BLACK); - y += 5; + screenCoords.y += gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, screenCoords, 222, STR_BLACK_STRING, COLOUR_BLACK); + screenCoords.y += 5; // Your objective: - gfx_draw_string_left(dpi, STR_OBJECTIVE_LABEL, nullptr, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_OBJECTIVE_LABEL, nullptr, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Objective ft = Formatter::Common(); @@ -1615,9 +1615,9 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(date_get_total_months(MONTH_OCTOBER, gScenarioObjectiveYear)); ft.Add(gScenarioObjectiveCurrency); - y += gfx_draw_string_left_wrapped( - dpi, gCommonFormatArgs, { x, y }, 221, ObjectiveNames[gScenarioObjectiveType], COLOUR_BLACK); - y += 5; + screenCoords.y += gfx_draw_string_left_wrapped( + dpi, gCommonFormatArgs, screenCoords, 221, ObjectiveNames[gScenarioObjectiveType], COLOUR_BLACK); + screenCoords.y += 5; // Objective outcome if (gScenarioCompletedCompanyValue != MONEY32_UNDEFINED) @@ -1625,14 +1625,14 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) if (gScenarioCompletedCompanyValue == COMPANY_VALUE_ON_FAILED_OBJECTIVE) { // Objective failed - gfx_draw_string_left_wrapped(dpi, nullptr, { x, y }, 222, STR_OBJECTIVE_FAILED, COLOUR_BLACK); + gfx_draw_string_left_wrapped(dpi, nullptr, screenCoords, 222, STR_OBJECTIVE_FAILED, COLOUR_BLACK); } else { // Objective completed ft = Formatter::Common(); ft.Add(gScenarioCompletedCompanyValue); - gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, { x, y }, 222, STR_OBJECTIVE_ACHIEVED, COLOUR_BLACK); + gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, screenCoords, 222, STR_OBJECTIVE_ACHIEVED, COLOUR_BLACK); } } } @@ -1736,8 +1736,9 @@ static void window_park_awards_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); window_park_draw_tab_images(dpi, w); - int32_t x = w->windowPos.x + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4; - int32_t y = w->windowPos.y + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_park_awards_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_park_awards_widgets[WIDX_PAGE_BACKGROUND].top + 4 }; int32_t count = 0; for (int32_t i = 0; i < MAX_AWARDS; i++) { @@ -1745,15 +1746,16 @@ static void window_park_awards_paint(rct_window* w, rct_drawpixelinfo* dpi) if (award->Time == 0) continue; - gfx_draw_sprite(dpi, ParkAwards[award->Type].sprite, x, y, 0); - gfx_draw_string_left_wrapped(dpi, nullptr, { x + 34, y + 6 }, 180, ParkAwards[award->Type].text, COLOUR_BLACK); + gfx_draw_sprite(dpi, ParkAwards[award->Type].sprite, screenCoords.x, screenCoords.y, 0); + gfx_draw_string_left_wrapped( + dpi, nullptr, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text, COLOUR_BLACK); - y += 32; + screenCoords.y += 32; count++; } if (count == 0) - gfx_draw_string_left(dpi, STR_NO_RECENT_AWARDS, nullptr, COLOUR_BLACK, x + 6, y + 6); + gfx_draw_string_left(dpi, STR_NO_RECENT_AWARDS, nullptr, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 6, 6 }); } #pragma endregion diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 17ad88b4f7..862faf2921 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -384,17 +384,17 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) } // Draw ping - auto screenCoords = ScreenCoordsXY{ w->windowPos.x + 90, w->windowPos.y + 24 }; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 90, 24 }; auto ft = Formatter::Common(); ft.Add(STR_PING); - gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, 0, screenCoords.x, screenCoords.y); + gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, 0, screenCoords); char ping[64]; snprintf(ping, 64, "%d ms", network_get_player_ping(player)); gfx_draw_string(dpi, ping, w->colours[2], screenCoords + ScreenCoordsXY(30, 0)); // Draw last action - screenCoords = { w->windowPos.x + (w->width / 2), w->windowPos.y + w->height - 13 }; + screenCoords = w->windowPos + ScreenCoordsXY{ w->width / 2, w->height - 13 }; int32_t width = w->width - 8; int32_t lastaction = network_get_player_last_action(player, 0); ft = Formatter::Common(); @@ -549,18 +549,19 @@ void window_player_statistics_paint(rct_window* w, rct_drawpixelinfo* dpi) return; } - int32_t x = w->windowPos.x + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].left + 4; - int32_t y = w->windowPos.y + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_player_overview_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_player_overview_widgets[WIDX_PAGE_BACKGROUND].top + 4 }; auto ft = Formatter::Common(); ft.Add(network_get_player_commands_ran(player)); - gfx_draw_string_left(dpi, STR_COMMANDS_RAN, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_COMMANDS_RAN, gCommonFormatArgs, COLOUR_BLACK, screenCoords); - y += LIST_ROW_HEIGHT; + screenCoords.y += LIST_ROW_HEIGHT; ft = Formatter::Common(); ft.Add(network_get_player_money_spent(player)); - gfx_draw_string_left(dpi, STR_MONEY_SPENT, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_MONEY_SPENT, gCommonFormatArgs, COLOUR_BLACK, screenCoords); } static void window_player_set_page(rct_window* w, int32_t page) diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index b0711e0367..974ded5125 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -341,24 +341,26 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp { baseWidgetIndex = baseWidgetIndex - WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP; - int32_t x = w->windowPos.x + 10; - int32_t y = w->windowPos.y + w->widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ 10, w->widgets[WIDX_CURRENTLY_IN_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12 }; rct_string_id stringId; if (gResearchProgressStage == RESEARCH_STAGE_FINISHED_ALL) { stringId = STR_RESEARCH_UNKNOWN; - gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 296, STR_RESEARCH_TYPE_LABEL, COLOUR_BLACK); - y += 25; + gfx_draw_string_left_wrapped( + dpi, &stringId, screenCoords.x, screenCoords.y, 296, STR_RESEARCH_TYPE_LABEL, COLOUR_BLACK); + screenCoords.y += 25; // Progress stringId = STR_RESEARCH_COMPLETED_AL; - gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); - y += 15; + gfx_draw_string_left_wrapped( + dpi, &stringId, screenCoords.x, screenCoords.y, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); + screenCoords.y += 15; auto ft = Formatter::Common(); ft.Add(STR_RESEARCH_STAGE_UNKNOWN); - gfx_draw_string_left(dpi, STR_RESEARCH_EXPECTED_LABEL, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_RESEARCH_EXPECTED_LABEL, gCommonFormatArgs, COLOUR_BLACK, screenCoords); } else { @@ -389,13 +391,14 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp } } } - gfx_draw_string_left_wrapped(dpi, &strings, x, y, 296, label, COLOUR_BLACK); - y += 25; + gfx_draw_string_left_wrapped(dpi, &strings, screenCoords.x, screenCoords.y, 296, label, COLOUR_BLACK); + screenCoords.y += 25; // Progress stringId = ResearchStageNames[gResearchProgressStage]; - gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); - y += 15; + gfx_draw_string_left_wrapped( + dpi, &stringId, screenCoords.x, screenCoords.y, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); + screenCoords.y += 15; // Expected auto ft = Formatter::Common(); @@ -410,12 +413,11 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp { ft.Add(STR_RESEARCH_STAGE_UNKNOWN); } - gfx_draw_string_left(dpi, STR_RESEARCH_EXPECTED_LABEL, gCommonFormatArgs, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_RESEARCH_EXPECTED_LABEL, gCommonFormatArgs, COLOUR_BLACK, screenCoords); } // Last development - x = w->windowPos.x + 10; - y = w->windowPos.y + w->widgets[WIDX_LAST_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12; + screenCoords = w->windowPos + ScreenCoordsXY{ 10, w->widgets[WIDX_LAST_DEVELOPMENT_GROUP + baseWidgetIndex].top + 12 }; if (gResearchLastItem.has_value()) { @@ -444,7 +446,7 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp } } - gfx_draw_string_left_wrapped(dpi, &strings, x, y, 266, lastDevelopmentFormat, COLOUR_BLACK); + gfx_draw_string_left_wrapped(dpi, &strings, screenCoords.x, screenCoords.y, 266, lastDevelopmentFormat, COLOUR_BLACK); } } @@ -613,7 +615,7 @@ void window_research_funding_page_paint(rct_window* w, rct_drawpixelinfo* dpi, r int32_t currentResearchLevel = gResearchFundingLevel; money32 currentResearchCostPerWeek = research_cost_table[currentResearchLevel]; gfx_draw_string_left( - dpi, STR_RESEARCH_COST_PER_MONTH, ¤tResearchCostPerWeek, COLOUR_BLACK, w->windowPos.x + 10, w->windowPos.y + 77); + dpi, STR_RESEARCH_COST_PER_MONTH, ¤tResearchCostPerWeek, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ 10, 77 }); } #pragma endregion diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index af9fe574ce..73e903b3ab 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -3188,22 +3188,22 @@ static void window_ride_vehicle_paint(rct_window* w, rct_drawpixelinfo* dpi) if (rideEntry == nullptr) return; - int32_t x = w->windowPos.x + 8; - int32_t y = w->windowPos.y + 64; + auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, 64 }; // Description - y += gfx_draw_string_left_wrapped(dpi, &rideEntry->naming.Description, x, y, 300, STR_BLACK_STRING, COLOUR_BLACK); - y += 2; + screenCoords.y += gfx_draw_string_left_wrapped( + dpi, &rideEntry->naming.Description, screenCoords.x, screenCoords.y, 300, STR_BLACK_STRING, COLOUR_BLACK); + screenCoords.y += 2; // Capacity - gfx_draw_string_left(dpi, STR_CAPACITY, &rideEntry->capacity, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_CAPACITY, &rideEntry->capacity, COLOUR_BLACK, screenCoords); // Excitement Factor auto factor = static_cast(rideEntry->excitement_multiplier); if (factor > 0) { - y += LIST_ROW_HEIGHT; - gfx_draw_string_left(dpi, STR_EXCITEMENT_FACTOR, &factor, COLOUR_BLACK, x, y); + screenCoords.y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_EXCITEMENT_FACTOR, &factor, COLOUR_BLACK, screenCoords); } // Intensity Factor @@ -3212,22 +3212,22 @@ static void window_ride_vehicle_paint(rct_window* w, rct_drawpixelinfo* dpi) { int32_t lineHeight = font_get_line_height(FONT_SPRITE_BASE_MEDIUM); if (lineHeight != 10) - x += 150; + screenCoords.x += 150; else - y += LIST_ROW_HEIGHT; + screenCoords.y += LIST_ROW_HEIGHT; - gfx_draw_string_left(dpi, STR_INTENSITY_FACTOR, &factor, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_INTENSITY_FACTOR, &factor, COLOUR_BLACK, screenCoords); if (lineHeight != 10) - x -= 150; + screenCoords.x -= 150; } // Nausea Factor factor = rideEntry->nausea_multiplier; if (factor > 0) { - y += LIST_ROW_HEIGHT; - gfx_draw_string_left(dpi, STR_NAUSEA_FACTOR, &factor, COLOUR_BLACK, x, y); + screenCoords.y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_NAUSEA_FACTOR, &factor, COLOUR_BLACK, screenCoords); } } @@ -3927,8 +3927,8 @@ static void window_ride_operating_paint(rct_window* w, rct_drawpixelinfo* dpi) { auto blockSections = ride->num_block_brakes + ride->num_stations; gfx_draw_string_left( - dpi, STR_BLOCK_SECTIONS, &blockSections, COLOUR_BLACK, w->windowPos.x + 21, - ride->mode == RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED ? w->windowPos.y + 89 : w->windowPos.y + 61); + dpi, STR_BLOCK_SECTIONS, &blockSections, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ 21, ride->mode == RIDE_MODE_POWERED_LAUNCH_BLOCK_SECTIONED ? 89 : 61 }); } } @@ -4315,30 +4315,30 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) // Locate mechanic button image rct_widget* widget = &window_ride_maintenance_widgets[WIDX_LOCATE_MECHANIC]; - int32_t x = w->windowPos.x + widget->left; - int32_t y = w->windowPos.y + widget->top; - gfx_draw_sprite(dpi, (gStaffMechanicColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | SPR_MECHANIC, x, y, 0); + auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; + gfx_draw_sprite( + dpi, (gStaffMechanicColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | SPR_MECHANIC, screenCoords.x, + screenCoords.y, 0); // Inspection label widget = &window_ride_maintenance_widgets[WIDX_INSPECTION_INTERVAL]; - x = w->windowPos.x + 4; - y = w->windowPos.y + widget->top + 1; - gfx_draw_string_left(dpi, STR_INSPECTION, nullptr, COLOUR_BLACK, x, y); + screenCoords = w->windowPos + ScreenCoordsXY{ 4, widget->top + 1 }; + gfx_draw_string_left(dpi, STR_INSPECTION, nullptr, COLOUR_BLACK, screenCoords); // Reliability widget = &window_ride_maintenance_widgets[WIDX_PAGE_BACKGROUND]; - x = w->windowPos.x + widget->left + 4; - y = w->windowPos.y + widget->top + 4; + screenCoords = w->windowPos + ScreenCoordsXY{ widget->left + 4, widget->top + 4 }; uint16_t reliability = ride->reliability_percentage; - gfx_draw_string_left(dpi, STR_RELIABILITY_LABEL_1757, &reliability, COLOUR_BLACK, x, y); - window_ride_maintenance_draw_bar(w, dpi, x + 103, y, std::max(10, reliability), COLOUR_BRIGHT_GREEN); - y += 11; + gfx_draw_string_left(dpi, STR_RELIABILITY_LABEL_1757, &reliability, COLOUR_BLACK, screenCoords); + window_ride_maintenance_draw_bar( + w, dpi, screenCoords.x + 103, screenCoords.y, std::max(10, reliability), COLOUR_BRIGHT_GREEN); + screenCoords.y += 11; uint16_t downTime = ride->downtime; - gfx_draw_string_left(dpi, STR_DOWN_TIME_LABEL_1889, &downTime, COLOUR_BLACK, x, y); - window_ride_maintenance_draw_bar(w, dpi, x + 103, y, downTime, COLOUR_BRIGHT_RED); - y += 26; + gfx_draw_string_left(dpi, STR_DOWN_TIME_LABEL_1889, &downTime, COLOUR_BLACK, screenCoords); + window_ride_maintenance_draw_bar(w, dpi, screenCoords.x + 103, screenCoords.y, downTime, COLOUR_BRIGHT_RED); + screenCoords.y += 26; // Last inspection uint16_t lastInspection = ride->last_inspection; @@ -4352,8 +4352,8 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) else stringId = STR_TIME_SINCE_LAST_INSPECTION_MORE_THAN_4_HOURS; - gfx_draw_string_left(dpi, stringId, &lastInspection, COLOUR_BLACK, x, y); - y += 12; + gfx_draw_string_left(dpi, stringId, &lastInspection, COLOUR_BLACK, screenCoords); + screenCoords.y += 12; // Last / current breakdown if (ride->breakdown_reason == BREAKDOWN_NONE) @@ -4361,8 +4361,8 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) stringId = (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN) ? STR_CURRENT_BREAKDOWN : STR_LAST_BREAKDOWN; rct_string_id breakdownMessage = RideBreakdownReasonNames[ride->breakdown_reason]; - gfx_draw_string_left(dpi, stringId, &breakdownMessage, COLOUR_BLACK, x, y); - y += 10; + gfx_draw_string_left(dpi, stringId, &breakdownMessage, COLOUR_BLACK, screenCoords); + screenCoords.y += 10; // Mechanic status if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN) @@ -4399,7 +4399,7 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) { if (stringId == STR_CALLING_MECHANIC || stringId == STR_NO_MECHANICS_ARE_HIRED_MESSAGE) { - gfx_draw_string_left_wrapped(dpi, nullptr, x + 4, y, 280, stringId, COLOUR_BLACK); + gfx_draw_string_left_wrapped(dpi, nullptr, screenCoords.x + 4, screenCoords.y, 280, stringId, COLOUR_BLACK); } else { @@ -4407,7 +4407,8 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) if (peep != nullptr && peep->IsMechanic()) { peep->FormatNameTo(gCommonFormatArgs); - gfx_draw_string_left_wrapped(dpi, gCommonFormatArgs, x + 4, y, 280, stringId, COLOUR_BLACK); + gfx_draw_string_left_wrapped( + dpi, gCommonFormatArgs, screenCoords.x + 4, screenCoords.y, 280, stringId, COLOUR_BLACK); } } } @@ -5784,8 +5785,9 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi if (ride == nullptr) return; - int32_t x = w->windowPos.x + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].left + 4; - int32_t y = w->windowPos.y + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND].top + 4 }; if (ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED) { @@ -5796,8 +5798,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(ratingName); rct_string_id stringId = ride->excitement == RIDE_RATING_UNDEFINED ? STR_EXCITEMENT_RATING_NOT_YET_AVAILABLE : STR_EXCITEMENT_RATING; - gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Intensity ratingName = get_rating_name(ride->intensity); @@ -5811,8 +5813,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi else if (ride->intensity >= RIDE_RATING(10, 00)) stringId = STR_INTENSITY_RATING_RED; - gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Nausea ratingName = get_rating_name(ride->nausea); @@ -5820,11 +5822,13 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(ride->nausea); ft.Add(ratingName); stringId = ride->excitement == RIDE_RATING_UNDEFINED ? STR_NAUSEA_RATING_NOT_YET_AVAILABLE : STR_NAUSEA_RATING; - gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += 2 * LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += 2 * LIST_ROW_HEIGHT; // Horizontal rule - gfx_fill_rect_inset(dpi, x, y - 6, x + 303, y - 5, w->colours[1], INSET_RECT_FLAG_BORDER_INSET); + gfx_fill_rect_inset( + dpi, screenCoords.x, screenCoords.y - 6, screenCoords.x + 303, screenCoords.y - 5, w->colours[1], + INSET_RECT_FLAG_BORDER_INSET); if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_NO_RAW_STATS)) { @@ -5832,20 +5836,20 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi { // Holes holes = ride->holes; - gfx_draw_string_left(dpi, STR_HOLES, &holes, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_HOLES, &holes, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } else { // Max speed maxSpeed = (ride->max_speed * 9) >> 18; - gfx_draw_string_left(dpi, STR_MAX_SPEED, &maxSpeed, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_MAX_SPEED, &maxSpeed, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Average speed averageSpeed = (ride->average_speed * 9) >> 18; - gfx_draw_string_left(dpi, STR_AVERAGE_SPEED, &averageSpeed, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_AVERAGE_SPEED, &averageSpeed, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Ride time ft = Formatter::Common(); @@ -5880,8 +5884,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(0); ft.Add(0); ft.Add(0); - gfx_draw_string_left_clipped(dpi, STR_RIDE_TIME, gCommonFormatArgs, COLOUR_BLACK, { x, y }, 308); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left_clipped(dpi, STR_RIDE_TIME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, 308); + screenCoords.y += LIST_ROW_HEIGHT; } // Ride length @@ -5918,8 +5922,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(0); ft.Add(0); ft.Add(0); - gfx_draw_string_left_clipped(dpi, STR_RIDE_LENGTH, gCommonFormatArgs, COLOUR_BLACK, { x, y }, 308); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left_clipped(dpi, STR_RIDE_LENGTH, gCommonFormatArgs, COLOUR_BLACK, screenCoords, 308); + screenCoords.y += LIST_ROW_HEIGHT; if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_G_FORCES)) { @@ -5927,39 +5931,39 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi maxPositiveVerticalGs = ride->max_positive_vertical_g; stringId = maxPositiveVerticalGs >= RIDE_G_FORCES_RED_POS_VERTICAL ? STR_MAX_POSITIVE_VERTICAL_G_RED : STR_MAX_POSITIVE_VERTICAL_G; - gfx_draw_string_left(dpi, stringId, &maxPositiveVerticalGs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &maxPositiveVerticalGs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Max. negative vertical G's maxNegativeVerticalGs = ride->max_negative_vertical_g; stringId = maxNegativeVerticalGs <= RIDE_G_FORCES_RED_NEG_VERTICAL ? STR_MAX_NEGATIVE_VERTICAL_G_RED : STR_MAX_NEGATIVE_VERTICAL_G; - gfx_draw_string_left(dpi, stringId, &maxNegativeVerticalGs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &maxNegativeVerticalGs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Max lateral G's maxLateralGs = ride->max_lateral_g; stringId = maxLateralGs >= RIDE_G_FORCES_RED_LATERAL ? STR_MAX_LATERAL_G_RED : STR_MAX_LATERAL_G; - gfx_draw_string_left(dpi, stringId, &maxLateralGs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &maxLateralGs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Total 'air' time totalAirTime = ride->total_air_time * 3; - gfx_draw_string_left(dpi, STR_TOTAL_AIR_TIME, &totalAirTime, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_TOTAL_AIR_TIME, &totalAirTime, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_DROPS)) { // Drops drops = ride->drops & 0x3F; - gfx_draw_string_left(dpi, STR_DROPS, &drops, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_DROPS, &drops, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Highest drop height highestDropHeight = (ride->highest_drop_height * 3) / 4; - gfx_draw_string_left(dpi, STR_HIGHEST_DROP_HEIGHT, &highestDropHeight, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_HIGHEST_DROP_HEIGHT, &highestDropHeight, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } if (ride->type != RIDE_TYPE_MINI_GOLF) @@ -5968,15 +5972,15 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi inversions = ride->inversions; if (inversions != 0) { - gfx_draw_string_left(dpi, STR_INVERSIONS, &inversions, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_INVERSIONS, &inversions, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } } } } else { - gfx_draw_string_left(dpi, STR_NO_TEST_RESULTS_YET, nullptr, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_NO_TEST_RESULTS_YET, nullptr, COLOUR_BLACK, screenCoords); } } } @@ -6303,7 +6307,7 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi if (listType == GRAPH_ALTITUDE) scaled_yUnit /= 2; - gfx_draw_string_left(dpi, stringID, &scaled_yUnit, COLOUR_BLACK, w->scrolls[0].h_left + 1, y - 4); + gfx_draw_string_left(dpi, stringID, &scaled_yUnit, COLOUR_BLACK, { w->scrolls[0].h_left + 1, y - 4 }); } // Time marks @@ -6311,7 +6315,7 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi for (int32_t x = 0; x < dpi->x + dpi->width; x += 80) { if (x + 80 >= dpi->x) - gfx_draw_string_left(dpi, STR_RIDE_STATS_TIME, &time, COLOUR_BLACK, x + 2, 1); + gfx_draw_string_left(dpi, STR_RIDE_STATS_TIME, &time, COLOUR_BLACK, { x + 2, 1 }); time += 5; } @@ -6831,7 +6835,7 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) { rct_string_id stringId; money32 profit, costPerHour; - int32_t x, y, primaryItem, secondaryItem; + int32_t primaryItem, secondaryItem; window_draw_widgets(w, dpi); window_ride_draw_tab_images(dpi, w); @@ -6844,8 +6848,9 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) if (rideEntry == nullptr) return; - x = w->windowPos.x + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].left + 4; - y = w->windowPos.y + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].top + 33; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_ride_income_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].top + 33 }; // Primary item profit / loss per item sold primaryItem = rideEntry->shop_item[0]; @@ -6861,9 +6866,9 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) stringId = STR_LOSS_PER_ITEM_SOLD; } - gfx_draw_string_left(dpi, stringId, &profit, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, stringId, &profit, COLOUR_BLACK, screenCoords); } - y += 44; + screenCoords.y += 44; // Secondary item profit / loss per item sold secondaryItem = RideTypeDescriptors[ride->type].PhotoItem; @@ -6882,33 +6887,33 @@ static void window_ride_income_paint(rct_window* w, rct_drawpixelinfo* dpi) stringId = STR_LOSS_PER_ITEM_SOLD; } - gfx_draw_string_left(dpi, stringId, &profit, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, stringId, &profit, COLOUR_BLACK, screenCoords); } - y += 18; + screenCoords.y += 18; // Income per hour if (ride->income_per_hour != MONEY32_UNDEFINED) { - gfx_draw_string_left(dpi, STR_INCOME_PER_HOUR, &ride->income_per_hour, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_INCOME_PER_HOUR, &ride->income_per_hour, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } // Running cost per hour costPerHour = ride->upkeep_cost * 16; stringId = ride->upkeep_cost == MONEY16_UNDEFINED ? STR_RUNNING_COST_UNKNOWN : STR_RUNNING_COST_PER_HOUR; - gfx_draw_string_left(dpi, stringId, &costPerHour, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &costPerHour, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Profit per hour if (ride->profit != MONEY32_UNDEFINED) { - gfx_draw_string_left(dpi, STR_PROFIT_PER_HOUR, &ride->profit, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_PROFIT_PER_HOUR, &ride->profit, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } - y += 5; + screenCoords.y += 5; // Total profit - gfx_draw_string_left(dpi, STR_TOTAL_PROFIT, &ride->total_profit, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, STR_TOTAL_PROFIT, &ride->total_profit, COLOUR_BLACK, screenCoords); } #pragma endregion @@ -7039,7 +7044,6 @@ static void window_ride_customer_invalidate(rct_window* w) */ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) { - int32_t x, y; uint8_t shopItem; int16_t popularity, satisfaction, queueTime; int32_t customersPerHour; @@ -7052,21 +7056,22 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) if (ride == nullptr) return; - x = w->windowPos.x + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].left + 4; - y = w->windowPos.y + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].left + 4, + window_ride_customer_widgets[WIDX_PAGE_BACKGROUND].top + 4 }; // Customers currently on ride if (ride->IsRide()) { int16_t customersOnRide = ride->num_riders; - gfx_draw_string_left(dpi, STR_CUSTOMERS_ON_RIDE, &customersOnRide, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_CUSTOMERS_ON_RIDE, &customersOnRide, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } // Customers per hour customersPerHour = ride_customers_per_hour(ride); - gfx_draw_string_left(dpi, STR_CUSTOMERS_PER_HOUR, &customersPerHour, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_CUSTOMERS_PER_HOUR, &customersPerHour, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Popularity popularity = ride->popularity; @@ -7079,8 +7084,8 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) stringId = STR_POPULARITY_PERCENT; popularity *= 4; } - gfx_draw_string_left(dpi, stringId, &popularity, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &popularity, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Satisfaction satisfaction = ride->satisfaction; @@ -7093,16 +7098,17 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) stringId = STR_SATISFACTION_PERCENT; satisfaction *= 5; } - gfx_draw_string_left(dpi, stringId, &satisfaction, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &satisfaction, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Queue time if (ride->IsRide()) { queueTime = ride->GetMaxQueueTime(); stringId = queueTime == 1 ? STR_QUEUE_TIME_MINUTE : STR_QUEUE_TIME_MINUTES; - y += gfx_draw_string_left_wrapped(dpi, &queueTime, x, y, 308, stringId, COLOUR_BLACK); - y += 5; + screenCoords.y += gfx_draw_string_left_wrapped( + dpi, &queueTime, screenCoords.x, screenCoords.y, 308, stringId, COLOUR_BLACK); + screenCoords.y += 5; } // Primary shop items sold @@ -7112,8 +7118,8 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(ShopItems[shopItem].Naming.Plural); ft.Add(ride->no_primary_items_sold); - gfx_draw_string_left(dpi, STR_ITEMS_SOLD, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_ITEMS_SOLD, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } // Secondary shop items sold / on-ride photos sold @@ -7124,28 +7130,28 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(ShopItems[shopItem].Naming.Plural); ft.Add(ride->no_secondary_items_sold); - gfx_draw_string_left(dpi, STR_ITEMS_SOLD, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_ITEMS_SOLD, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } // Total customers - gfx_draw_string_left(dpi, STR_TOTAL_CUSTOMERS, &ride->total_customers, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_TOTAL_CUSTOMERS, &ride->total_customers, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; // Guests favourite if (ride->IsRide()) { stringId = ride->guests_favourite == 1 ? STR_FAVOURITE_RIDE_OF_GUEST : STR_FAVOURITE_RIDE_OF_GUESTS; - gfx_draw_string_left(dpi, stringId, &ride->guests_favourite, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &ride->guests_favourite, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } - y += 2; + screenCoords.y += 2; // Age // If the ride has a build date that is in the future, show it as built this year. int16_t age = std::max(date_get_year(ride->GetAge()), 0); stringId = age == 0 ? STR_BUILT_THIS_YEAR : age == 1 ? STR_BUILT_LAST_YEAR : STR_BUILT_YEARS_AGO; - gfx_draw_string_left(dpi, stringId, &age, COLOUR_BLACK, x, y); + gfx_draw_string_left(dpi, stringId, &age, COLOUR_BLACK, screenCoords); } #pragma endregion diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index f07399c7c9..12a823a74a 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -576,8 +576,8 @@ static void window_ride_list_paint(rct_window* w, rct_drawpixelinfo* dpi) // Draw number of attractions on bottom gfx_draw_string_left( - dpi, ride_list_statusbar_count_strings[w->page], &w->no_list_items, COLOUR_BLACK, w->windowPos.x + 4, - w->widgets[WIDX_LIST].bottom + w->windowPos.y + 2); + dpi, ride_list_statusbar_count_strings[w->page], &w->no_list_items, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ 4, w->widgets[WIDX_LIST].bottom + 2 }); } /** diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 446b3490bb..d1fb649d8d 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -409,19 +409,19 @@ static void window_server_list_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); gfx_draw_string_left( - dpi, STR_PLAYER_NAME, nullptr, COLOUR_WHITE, w->windowPos.x + 6, - w->windowPos.y + w->widgets[WIDX_PLAYER_NAME_INPUT].top); + dpi, STR_PLAYER_NAME, nullptr, COLOUR_WHITE, + w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_PLAYER_NAME_INPUT].top }); // Draw version number std::string version = network_get_version(); const char* versionCStr = version.c_str(); gfx_draw_string_left( - dpi, STR_NETWORK_VERSION, static_cast(&versionCStr), COLOUR_WHITE, w->windowPos.x + 324, - w->windowPos.y + w->widgets[WIDX_START_SERVER].top + 1); + dpi, STR_NETWORK_VERSION, static_cast(&versionCStr), COLOUR_WHITE, + w->windowPos + ScreenCoordsXY{ 324, w->widgets[WIDX_START_SERVER].top + 1 }); gfx_draw_string_left( - dpi, _statusText, static_cast(&_numPlayersOnline), COLOUR_WHITE, w->windowPos.x + 8, - w->windowPos.y + w->height - 15); + dpi, _statusText, static_cast(&_numPlayersOnline), COLOUR_WHITE, + w->windowPos + ScreenCoordsXY{ 8, w->height - 15 }); } static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex) diff --git a/src/openrct2-ui/windows/ServerStart.cpp b/src/openrct2-ui/windows/ServerStart.cpp index 4b78caa9a1..8c1e67f0b9 100644 --- a/src/openrct2-ui/windows/ServerStart.cpp +++ b/src/openrct2-ui/windows/ServerStart.cpp @@ -341,19 +341,19 @@ static void window_server_start_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); gfx_draw_string_left( - dpi, STR_PORT, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_PORT_INPUT].top); + dpi, STR_PORT, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_PORT_INPUT].top }); gfx_draw_string_left( - dpi, STR_SERVER_NAME, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_NAME_INPUT].top); + dpi, STR_SERVER_NAME, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_NAME_INPUT].top }); gfx_draw_string_left( - dpi, STR_SERVER_DESCRIPTION, nullptr, w->colours[1], w->windowPos.x + 6, - w->windowPos.y + w->widgets[WIDX_DESCRIPTION_INPUT].top); + dpi, STR_SERVER_DESCRIPTION, nullptr, w->colours[1], + w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_DESCRIPTION_INPUT].top }); gfx_draw_string_left( - dpi, STR_SERVER_GREETING, nullptr, w->colours[1], w->windowPos.x + 6, - w->windowPos.y + w->widgets[WIDX_GREETING_INPUT].top); + dpi, STR_SERVER_GREETING, nullptr, w->colours[1], + w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_GREETING_INPUT].top }); gfx_draw_string_left( - dpi, STR_PASSWORD, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_PASSWORD_INPUT].top); + dpi, STR_PASSWORD, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_PASSWORD_INPUT].top }); gfx_draw_string_left( - dpi, STR_MAX_PLAYERS, nullptr, w->colours[1], w->windowPos.x + 6, w->windowPos.y + w->widgets[WIDX_MAXPLAYERS].top); + dpi, STR_MAX_PLAYERS, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 6, w->widgets[WIDX_MAXPLAYERS].top }); } #endif diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index f709bef568..4b63a8f504 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -1095,39 +1095,42 @@ void window_staff_stats_paint(rct_window* w, rct_drawpixelinfo* dpi) Peep* peep = GET_PEEP(w->number); - int32_t x = w->windowPos.x + window_staff_stats_widgets[WIDX_RESIZE].left + 4; - int32_t y = w->windowPos.y + window_staff_stats_widgets[WIDX_RESIZE].top + 4; + auto screenCoords = w->windowPos + + ScreenCoordsXY{ window_staff_stats_widgets[WIDX_RESIZE].left + 4, window_staff_stats_widgets[WIDX_RESIZE].top + 4 }; if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) { Formatter::Common().Add(gStaffWageTable[peep->StaffType]); - gfx_draw_string_left(dpi, STR_STAFF_STAT_WAGES, gCommonFormatArgs, COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_STAFF_STAT_WAGES, gCommonFormatArgs, COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; } - gfx_draw_string_left(dpi, STR_STAFF_STAT_EMPLOYED_FOR, static_cast(&peep->TimeInPark), COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + gfx_draw_string_left(dpi, STR_STAFF_STAT_EMPLOYED_FOR, static_cast(&peep->TimeInPark), COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; switch (peep->StaffType) { case STAFF_TYPE_HANDYMAN: - gfx_draw_string_left(dpi, STR_STAFF_STAT_LAWNS_MOWN, static_cast(&peep->StaffLawnsMown), COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; gfx_draw_string_left( - dpi, STR_STAFF_STAT_GARDENS_WATERED, static_cast(&peep->StaffGardensWatered), COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + dpi, STR_STAFF_STAT_LAWNS_MOWN, static_cast(&peep->StaffLawnsMown), COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; gfx_draw_string_left( - dpi, STR_STAFF_STAT_LITTER_SWEPT, static_cast(&peep->StaffLitterSwept), COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + dpi, STR_STAFF_STAT_GARDENS_WATERED, static_cast(&peep->StaffGardensWatered), COLOUR_BLACK, + screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; gfx_draw_string_left( - dpi, STR_STAFF_STAT_BINS_EMPTIED, static_cast(&peep->StaffBinsEmptied), COLOUR_BLACK, x, y); + dpi, STR_STAFF_STAT_LITTER_SWEPT, static_cast(&peep->StaffLitterSwept), COLOUR_BLACK, screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; + gfx_draw_string_left( + dpi, STR_STAFF_STAT_BINS_EMPTIED, static_cast(&peep->StaffBinsEmptied), COLOUR_BLACK, screenCoords); break; case STAFF_TYPE_MECHANIC: gfx_draw_string_left( - dpi, STR_STAFF_STAT_RIDES_INSPECTED, static_cast(&peep->StaffRidesInspected), COLOUR_BLACK, x, y); - y += LIST_ROW_HEIGHT; + dpi, STR_STAFF_STAT_RIDES_INSPECTED, static_cast(&peep->StaffRidesInspected), COLOUR_BLACK, + screenCoords); + screenCoords.y += LIST_ROW_HEIGHT; gfx_draw_string_left( - dpi, STR_STAFF_STAT_RIDES_FIXED, static_cast(&peep->StaffRidesFixed), COLOUR_BLACK, x, y); + dpi, STR_STAFF_STAT_RIDES_FIXED, static_cast(&peep->StaffRidesFixed), COLOUR_BLACK, screenCoords); break; } } diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index b4e811ef2a..0b6df5e32c 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -623,14 +623,14 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { Formatter::Common().Add(gStaffWageTable[selectedTab]); gfx_draw_string_left( - dpi, STR_COST_PER_MONTH, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + w->width - 155, w->windowPos.y + 0x20); + dpi, STR_COST_PER_MONTH, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ w->width - 155, 0x20 }); } if (selectedTab < 3) { gfx_draw_string_left( - dpi, STR_UNIFORM_COLOUR, w, COLOUR_BLACK, w->windowPos.x + 6, - window_staff_list_widgets[WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER].top + w->windowPos.y + 1); + dpi, STR_UNIFORM_COLOUR, w, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ 6, window_staff_list_widgets[WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER].top + 1 }); } int32_t staffTypeStringId = StaffNamingConvention[selectedTab].plural; @@ -645,8 +645,8 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(staffTypeStringId); gfx_draw_string_left( - dpi, STR_STAFF_LIST_COUNTER, gCommonFormatArgs, COLOUR_BLACK, w->windowPos.x + 4, - window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + w->windowPos.y + 2); + dpi, STR_STAFF_LIST_COUNTER, gCommonFormatArgs, COLOUR_BLACK, + w->windowPos + ScreenCoordsXY{ 4, window_staff_list_widgets[WIDX_STAFF_LIST_LIST].bottom + 2 }); } /** rct2: 0x00992A08 */ diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 9145e3dd5e..0a73fc7ff4 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -838,12 +838,13 @@ void window_themes_paint(rct_window* w, rct_drawpixelinfo* dpi) const utf8* activeThemeName = theme_manager_get_available_theme_name(activeAvailableThemeIndex); Formatter::Common().Add(activeThemeName); gfx_draw_string_left( - dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->windowPos.x + 10, - w->windowPos.y + window_themes_widgets[WIDX_THEMES_PRESETS].top + 1); + dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], + w->windowPos + ScreenCoordsXY{ 10, window_themes_widgets[WIDX_THEMES_PRESETS].top + 1 }); gfx_draw_string_left_clipped( dpi, STR_STRING, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS].left + 1, - w->windowPos.y + window_themes_widgets[WIDX_THEMES_PRESETS].top }, + w->windowPos + + ScreenCoordsXY{ window_themes_widgets[WIDX_THEMES_PRESETS].left + 1, + window_themes_widgets[WIDX_THEMES_PRESETS].top }, w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS_DROPDOWN].left - window_themes_widgets[WIDX_THEMES_PRESETS].left - 4); } @@ -904,7 +905,7 @@ void window_themes_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t sc int32_t numColours = theme_desc_get_num_colours(wc); for (uint8_t j = 0; j < numColours; j++) { - gfx_draw_string_left(dpi, theme_desc_get_name(wc), nullptr, w->colours[1], 2, screenCoords.y + 4); + gfx_draw_string_left(dpi, theme_desc_get_name(wc), nullptr, w->colours[1], { 2, screenCoords.y + 4 }); uint8_t colour = theme_get_colour(wc, j); uint32_t image = SPRITE_ID_PALETTE_COLOUR_1(colour & ~COLOUR_FLAG_TRANSLUCENT) | SPR_PALETTE_BTN; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 05de3431f2..69edad24f5 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1802,8 +1802,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) if (windowTileInspectorSelectedIndex != -1) { // X and Y of first element in detail box - int32_t x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - int32_t y = w->windowPos.y + w->widgets[WIDX_GROUPBOX_DETAILS].top + 14; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_GROUPBOX_DETAILS].top + 14 }; // Get map element TileElement* const tileElement = window_tile_inspector_get_selected_element(w); @@ -1815,7 +1815,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Details // Terrain texture name rct_string_id terrainNameId = TerrainTypeStringIds[tileElement->AsSurface()->GetSurfaceStyle()]; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_TERAIN, &terrainNameId, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_TERAIN, &terrainNameId, COLOUR_WHITE, screenCoords); // Edge texture name uint32_t idx = tileElement->AsSurface()->GetEdgeStyle(); @@ -1823,7 +1823,9 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) idx < std::size(TerrainEdgeTypeStringIds), "Tried accessing invalid entry %d in terrainEdgeTypeStringIds", idx); rct_string_id terrainEdgeNameId = TerrainEdgeTypeStringIds[tileElement->AsSurface()->GetEdgeStyle()]; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_EDGE, &terrainEdgeNameId, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_SURFACE_EDGE, &terrainEdgeNameId, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); // Land ownership rct_string_id landOwnership; @@ -1837,27 +1839,31 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) landOwnership = STR_CONSTRUCTION_RIGHTS_SALE; else landOwnership = STR_TILE_INSPECTOR_LAND_NOT_OWNED_AND_NOT_AVAILABLE; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_OWNERSHIP, &landOwnership, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_SURFACE_OWNERSHIP, &landOwnership, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); // Water level uint32_t waterLevel = tileElement->AsSurface()->GetWaterHeight(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_WATER_LEVEL, &waterLevel, COLOUR_WHITE, x, y + 33); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_SURFACE_WATER_LEVEL, &waterLevel, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 33 }); // Properties // Raise / lower label - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_SURFACE_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); // Raised corners - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_SURFACE_CHECK_CORNER_E].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_CORNERS, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_SURFACE_CHECK_CORNER_E].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SURFACE_CORNERS, nullptr, COLOUR_WHITE, screenCoords); break; } @@ -1866,7 +1872,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Details // Path name rct_string_id pathNameId = tileElement->AsPath()->GetSurfaceEntry()->string_idx; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_NAME, &pathNameId, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_NAME, &pathNameId, COLOUR_WHITE, screenCoords); // Path addition if (tileElement->AsPath()->HasAddition()) @@ -1876,26 +1882,30 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) rct_string_id additionNameId = sceneryElement != nullptr ? sceneryElement->name : static_cast(STR_UNKNOWN_OBJECT_TYPE); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_ADDITIONS, &additionNameId, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_PATH_ADDITIONS, &additionNameId, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } else - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_ADDITIONS_NONE, nullptr, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_PATH_ADDITIONS_NONE, nullptr, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); // Properties // Raise / lower label - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_PATH_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_PATH_SPINNER_HEIGHT].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_PATH_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_PATH_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); // Path connections - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_PATH_CHECK_EDGE_W].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_CONNECTED_EDGES, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_PATH_CHECK_EDGE_W].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_PATH_CONNECTED_EDGES, nullptr, COLOUR_WHITE, screenCoords); break; } @@ -1909,26 +1919,34 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) if (ride != nullptr) { auto rideType = RideTypeDescriptors[ride->type].Naming.Name; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_TYPE, &rideType, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_TYPE, &rideType, COLOUR_WHITE, screenCoords); } - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_ID, &rideId, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_TRACK_RIDE_ID, &rideId, COLOUR_WHITE, screenCoords + ScreenCoordsXY{ 0, 11 }); if (ride != nullptr) { ride->FormatNameTo(gCommonFormatArgs); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_RIDE_NAME, gCommonFormatArgs, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_TRACK_RIDE_NAME, gCommonFormatArgs, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); } // Track int16_t trackType = trackElement->GetTrackType(); int16_t sequenceNumber = trackElement->GetSequenceIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_PIECE_ID, &trackType, COLOUR_WHITE, x, y + 33); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_TRACK_SEQUENCE, &sequenceNumber, COLOUR_WHITE, x, y + 44); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_TRACK_PIECE_ID, &trackType, COLOUR_WHITE, screenCoords + ScreenCoordsXY{ 0, 33 }); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_TRACK_SEQUENCE, &sequenceNumber, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 44 }); if (trackElement->IsStation()) { int16_t stationIndex = trackElement->GetStationIndex(); auto ft = Formatter::Common(); ft.Add(STR_COMMA16); ft.Add(stationIndex); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, x, y + 55); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 55 }); } else { @@ -1936,21 +1954,24 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(stationNone); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, x, y + 55); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 55 }); } rct_string_id colourScheme = ColourSchemeNames[trackElement->GetColourScheme()]; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_COLOUR_SCHEME, &colourScheme, COLOUR_WHITE, x, y + 66); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_COLOUR_SCHEME, &colourScheme, COLOUR_WHITE, screenCoords + ScreenCoordsXY{ 0, 66 }); // Properties // Raise / lower label - y = w->windowPos.y + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_TRACK_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); break; } @@ -1959,7 +1980,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Details // Age int16_t age = tileElement->AsSmallScenery()->GetAge(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_AGE, &age, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_AGE, &age, COLOUR_WHITE, screenCoords); // Quadrant value const rct_scenery_entry* sceneryEntry = get_small_scenery_entry(tileElement->AsSmallScenery()->GetEntryIndex()); @@ -1971,31 +1992,34 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) STR_TILE_INSPECTOR_SCENERY_QUADRANT_NE, STR_TILE_INSPECTOR_SCENERY_QUADRANT_SE }; gfx_draw_string_left( - dpi, STR_TILE_INSPECTOR_SCENERY_QUADRANT, &quadrant_string_idx[quadrant], COLOUR_WHITE, x, y + 11); + dpi, STR_TILE_INSPECTOR_SCENERY_QUADRANT, &quadrant_string_idx[quadrant], COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } // Scenery ID int16_t idx = tileElement->AsSmallScenery()->GetEntryIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_ENTRY_IDX, &idx, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_SCENERY_ENTRY_IDX, &idx, COLOUR_WHITE, screenCoords + ScreenCoordsXY{ 0, 22 }); // Properties // Raise / Lower - y = w->windowPos.y + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_SCENERY_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); // Quarter tile - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_SCENERY_CHECK_QUARTER_E].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_QUADRANT_LABEL, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, + w->widgets[WIDX_SCENERY_CHECK_QUARTER_E].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_SCENERY_QUADRANT_LABEL, nullptr, COLOUR_WHITE, screenCoords); // Collision - y = w->windowPos.y + w->widgets[WIDX_SCENERY_CHECK_COLLISION_E].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_COLLISSION, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_SCENERY_CHECK_COLLISION_E].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_COLLISSION, nullptr, COLOUR_WHITE, screenCoords); break; } @@ -2004,7 +2028,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Details // Entrance type rct_string_id entranceType = EntranceTypeStringIds[tileElement->AsEntrance()->GetEntranceType()]; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRANCE_TYPE, &entranceType, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRANCE_TYPE, &entranceType, COLOUR_WHITE, screenCoords); if (tileElement->AsEntrance()->GetEntranceType() == ENTRANCE_TYPE_PARK_ENTRANCE) { @@ -2012,7 +2036,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) int16_t parkEntranceIndex = park_entrance_get_index( { windowTileInspectorToolMap, tileElement->GetBaseZ() }); gfx_draw_string_left( - dpi, STR_TILE_INSPECTOR_ENTRANCE_ENTRANCE_ID, &parkEntranceIndex, COLOUR_WHITE, x, y + 11); + dpi, STR_TILE_INSPECTOR_ENTRANCE_ENTRANCE_ID, &parkEntranceIndex, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } else { @@ -2021,13 +2046,15 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Ride entrance ID gfx_draw_string_left( - dpi, STR_TILE_INSPECTOR_ENTRANCE_ENTRANCE_ID, &rideEntranceIndex, COLOUR_WHITE, x, y + 11); + dpi, STR_TILE_INSPECTOR_ENTRANCE_ENTRANCE_ID, &rideEntranceIndex, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } else { // Ride exit ID gfx_draw_string_left( - dpi, STR_TILE_INSPECTOR_ENTRANCE_EXIT_ID, &rideEntranceIndex, COLOUR_WHITE, x, y + 11); + dpi, STR_TILE_INSPECTOR_ENTRANCE_EXIT_ID, &rideEntranceIndex, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } } @@ -2035,30 +2062,36 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Entrance part rct_string_id entrancePart = ParkEntrancePartStringIds[tileElement->AsEntrance()->GetSequenceIndex()]; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRANCE_PART, &entrancePart, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRANCE_PART, &entrancePart, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); } else { // Ride ID int16_t rideId = tileElement->AsEntrance()->GetRideIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRANCE_RIDE_ID, &rideId, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRANCE_RIDE_ID, &rideId, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); // Station index int16_t stationIndex = tileElement->AsEntrance()->GetStationIndex(); auto ft = Formatter::Common(); ft.Add(STR_COMMA16); ft.Add(stationIndex); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, x, y + 33); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_STATION_INDEX, gCommonFormatArgs, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 33 }); } // Properties // Raise / Lower - y = w->windowPos.y + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_ENTRANCE_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); break; } @@ -2067,7 +2100,7 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Details // Type int16_t wallType = tileElement->AsWall()->GetEntryIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_TYPE, &wallType, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_TYPE, &wallType, COLOUR_WHITE, screenCoords); // Banner info rct_wall_scenery_entry wallEntry = get_wall_entry(wallType)->wall; @@ -2078,32 +2111,36 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { uint8_t args[32]{}; banner->FormatTextTo(args); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } } else { - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, nullptr, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, nullptr, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); } // Properties // Raise / lower label - y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); // Slope label - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - y = w->windowPos.y + w->widgets[WIDX_WALL_DROPDOWN_SLOPE].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_SLOPE, nullptr, COLOUR_WHITE, x, y); + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_GROUPBOX_DETAILS].left + 7, w->widgets[WIDX_WALL_DROPDOWN_SLOPE].top }; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_SLOPE, nullptr, COLOUR_WHITE, screenCoords); // Animation frame label - y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_ANIMATION_FRAME, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_ANIMATION_FRAME, nullptr, COLOUR_WHITE, screenCoords); // Current animation frame uint8_t colour = COLOUR_WHITE; @@ -2111,9 +2148,9 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { colour = w->colours[0] | COLOUR_FLAG_INSET; } - x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].left + 3; int32_t animationFrame = tileElement->AsWall()->GetAnimationFrame(); - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &animationFrame, colour, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &animationFrame, colour, screenCoords); break; } @@ -2123,11 +2160,13 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) // Type auto sceneryElement = tileElement->AsLargeScenery(); int16_t largeSceneryType = sceneryElement->GetEntryIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_TYPE, &largeSceneryType, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_TYPE, &largeSceneryType, COLOUR_WHITE, screenCoords); // Part ID int16_t pieceID = sceneryElement->GetSequenceIndex(); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_PIECE_ID, &pieceID, COLOUR_WHITE, x, y + 11); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_LARGE_SCENERY_PIECE_ID, &pieceID, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 11 }); // Banner info rct_scenery_entry* largeSceneryEntry = get_large_scenery_entry(largeSceneryType); @@ -2138,23 +2177,27 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { uint8_t args[32]{}; banner->FormatTextTo(args); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); } } else { - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, nullptr, COLOUR_WHITE, x, y + 22); + gfx_draw_string_left( + dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_NONE, nullptr, COLOUR_WHITE, + screenCoords + ScreenCoordsXY{ 0, 22 }); } // Properties // Raise / lower label - y = w->windowPos.y + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_LARGE_SCENERY_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); break; } @@ -2167,23 +2210,23 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { uint8_t args[32]{}; banner->FormatTextTo(args); - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_ENTRY_BANNER_TEXT, args, COLOUR_WHITE, screenCoords); } // Properties // Raise / lower label - y = w->windowPos.y + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_BANNER_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); // Blocked paths - y += 28; - x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BANNER_BLOCKED_PATHS, nullptr, COLOUR_WHITE, x, y); + screenCoords.y += 28; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BANNER_BLOCKED_PATHS, nullptr, COLOUR_WHITE, screenCoords); break; } @@ -2191,13 +2234,13 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Properties // Raise / lower label - y = w->windowPos.y + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].top; - gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, x, y); + screenCoords.y = w->windowPos.y + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].top; + gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_FULL, nullptr, COLOUR_WHITE, screenCoords); // Current base height - x = w->windowPos.x + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].left + 3; + screenCoords.x = w->windowPos.x + w->widgets[WIDX_CORRUPT_SPINNER_HEIGHT].left + 3; int32_t baseHeight = tileElement->base_height; - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, x, y); + gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &baseHeight, COLOUR_WHITE, screenCoords); break; } } // switch page @@ -2209,7 +2252,8 @@ static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* const int32_t listWidth = w->widgets[WIDX_LIST].right - w->widgets[WIDX_LIST].left; gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); - int32_t y = SCROLLABLE_ROW_HEIGHT * (windowTileInspectorElementCount - 1); + ScreenCoordsXY screenCoords{}; + screenCoords.y = SCROLLABLE_ROW_HEIGHT * (windowTileInspectorElementCount - 1); int32_t i = 0; char buffer[256]; @@ -2230,16 +2274,22 @@ static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* if (selectedRow) { - gfx_fill_rect(dpi, 0, y, listWidth, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); + gfx_fill_rect( + dpi, 0, screenCoords.y, listWidth, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, + ColourMapA[w->colours[1]].mid_dark); } else if (hoveredRow) { - gfx_fill_rect(dpi, 0, y, listWidth, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark | 0x1000000); + gfx_fill_rect( + dpi, 0, screenCoords.y, listWidth, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, + ColourMapA[w->colours[1]].mid_dark | 0x1000000); } else if (((windowTileInspectorElementCount - i) & 1) == 0) { // Zebra stripes - gfx_fill_rect(dpi, 0, y, listWidth, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].light | 0x1000000); + gfx_fill_rect( + dpi, 0, screenCoords.y, listWidth, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, + ColourMapA[w->colours[1]].light | 0x1000000); } switch (type) @@ -2293,24 +2343,25 @@ static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* const rct_string_id stringFormat = (selectedRow || hoveredRow) ? STR_WHITE_STRING : STR_WINDOW_COLOUR_2_STRINGID; // Undo relative scroll offset, but keep the 3 pixel padding - const int32_t x = -w->widgets[WIDX_LIST].left; + screenCoords.x = -w->widgets[WIDX_LIST].left; auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(typeName); gfx_draw_string_left_clipped( - dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, { x + COL_X_TYPE + 3, y }, COL_X_BH); // 3px padding + dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_TYPE + 3, 0 }, + COL_X_BH); // 3px padding // Base height ft = Formatter::Common(); ft.Add(STR_FORMAT_INTEGER); ft.Add(baseHeight); - gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, x + COL_X_BH, y); + gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_BH, 0 }); // Clearance height ft = Formatter::Common(); ft.Add(STR_FORMAT_INTEGER); ft.Add(clearanceHeight); - gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, x + COL_X_CH, y); + gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_CH, 0 }); // Checkmarks for ghost and last for tile ft = Formatter::Common(); @@ -2318,14 +2369,16 @@ static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* ft.Add(CheckBoxMarkString); if (ghost) { - gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, x + COL_X_GF, y); + gfx_draw_string_left( + dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_GF, 0 }); } if (last) { - gfx_draw_string_left(dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, x + COL_X_LF, y); + gfx_draw_string_left( + dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_LF, 0 }); } - y -= SCROLLABLE_ROW_HEIGHT; + screenCoords.y -= SCROLLABLE_ROW_HEIGHT; i++; } while (!(tileElement++)->IsLastForTile()); } diff --git a/src/openrct2-ui/windows/TitleCommandEditor.cpp b/src/openrct2-ui/windows/TitleCommandEditor.cpp index b1bfdaff3f..dadcaf3638 100644 --- a/src/openrct2-ui/windows/TitleCommandEditor.cpp +++ b/src/openrct2-ui/windows/TitleCommandEditor.cpp @@ -748,7 +748,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* // "Command:" label gfx_draw_string_left( - dpi, STR_TITLE_COMMAND_EDITOR_COMMAND_LABEL, nullptr, w->colours[1], w->windowPos.x + WS, w->windowPos.y + BY - 14); + dpi, STR_TITLE_COMMAND_EDITOR_COMMAND_LABEL, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ WS, BY - 14 }); // Command dropdown name gfx_draw_string_left_clipped( @@ -757,8 +757,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4); // Label (e.g. "Location:") - gfx_draw_string_left( - dpi, command_info.descStringId, nullptr, w->colours[1], w->windowPos.x + WS, w->windowPos.y + BY2 - 14); + gfx_draw_string_left(dpi, command_info.descStringId, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ WS, BY2 - 14 }); if (command.Type == TITLE_SCRIPT_SPEED) { diff --git a/src/openrct2-ui/windows/TitleEditor.cpp b/src/openrct2-ui/windows/TitleEditor.cpp index 8aab3c9089..59fa4ffa6a 100644 --- a/src/openrct2-ui/windows/TitleEditor.cpp +++ b/src/openrct2-ui/windows/TitleEditor.cpp @@ -836,8 +836,8 @@ static void window_title_editor_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(_sequenceName); gfx_draw_string_left( - dpi, STR_TITLE_SEQUENCE, nullptr, w->colours[1], w->windowPos.x + 10, - w->windowPos.y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top + 1); + dpi, STR_TITLE_SEQUENCE, nullptr, w->colours[1], + w->windowPos + ScreenCoordsXY{ 10, window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top + 1 }); gfx_draw_string_left_clipped( dpi, STR_STRING, gCommonFormatArgs, w->colours[1], { w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left + 1, @@ -870,30 +870,33 @@ static void window_title_editor_scrollpaint(rct_window* w, rct_drawpixelinfo* dp static void window_title_editor_scrollpaint_saves(rct_window* w, rct_drawpixelinfo* dpi) { int32_t currentSaveIndex = -1; - int32_t x = 0; - int32_t y = 0; + auto screenCoords = ScreenCoordsXY{ 0, 0 }; if (_editingTitleSequence == nullptr) return; - for (int32_t i = 0; i < static_cast(_editingTitleSequence->NumSaves); i++, y += SCROLLABLE_ROW_HEIGHT) + for (int32_t i = 0; i < static_cast(_editingTitleSequence->NumSaves); i++, screenCoords.y += SCROLLABLE_ROW_HEIGHT) { bool selected = false; bool hover = false; if (i == w->selected_list_item) { selected = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); + gfx_fill_rect( + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); } else if (i == _window_title_editor_highlighted_index || i == currentSaveIndex) { hover = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); + gfx_fill_rect( + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); } else if (i & 1) { gfx_fill_rect( - dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, - ColourMapA[w->colours[1]].lighter | 0x1000000); + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); } char buffer[256]; @@ -910,7 +913,7 @@ static void window_title_editor_scrollpaint_saves(rct_window* w, rct_drawpixelin } ft = Formatter::Common(); ft.Add(&buffer); - gfx_draw_string_left(dpi, STR_STRING, gCommonFormatArgs, w->colours[1], x + 5, y); + gfx_draw_string_left(dpi, STR_STRING, gCommonFormatArgs, w->colours[1], screenCoords + ScreenCoordsXY{ 5, 0 }); } } @@ -923,9 +926,9 @@ static void window_title_editor_scrollpaint_commands(rct_window* w, rct_drawpixe position = player->GetCurrentPosition(); } - int32_t x = 0; - int32_t y = 0; - for (int32_t i = 0; i < static_cast(_editingTitleSequence->NumCommands); i++, y += SCROLLABLE_ROW_HEIGHT) + auto screenCoords = ScreenCoordsXY{ 0, 0 }; + for (int32_t i = 0; i < static_cast(_editingTitleSequence->NumCommands); + i++, screenCoords.y += SCROLLABLE_ROW_HEIGHT) { TitleCommand* command = &_editingTitleSequence->Commands[i]; bool selected = false; @@ -934,18 +937,22 @@ static void window_title_editor_scrollpaint_commands(rct_window* w, rct_drawpixe if (i == w->selected_list_item) { selected = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); + gfx_fill_rect( + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].dark); } else if (i == static_cast(_window_title_editor_highlighted_index) || i == position) { hover = true; - gfx_fill_rect(dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); + gfx_fill_rect( + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].mid_dark); } else if (i & 1) { gfx_fill_rect( - dpi, x, y, x + SCROLL_WIDTH + 100, y + SCROLLABLE_ROW_HEIGHT - 1, - ColourMapA[w->colours[1]].lighter | 0x1000000); + dpi, screenCoords.x, screenCoords.y, screenCoords.x + SCROLL_WIDTH + 100, + screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, ColourMapA[w->colours[1]].lighter | 0x1000000); } auto ft = Formatter::Common(); @@ -1038,7 +1045,7 @@ static void window_title_editor_scrollpaint_commands(rct_window* w, rct_drawpixe } ft = Formatter::Common(); ft.Add(&buffer); - gfx_draw_string_left(dpi, STR_STRING, gCommonFormatArgs, w->colours[1], x + 5, y); + gfx_draw_string_left(dpi, STR_STRING, gCommonFormatArgs, w->colours[1], screenCoords + ScreenCoordsXY{ 5, 0 }); } } diff --git a/src/openrct2-ui/windows/TitleScenarioSelect.cpp b/src/openrct2-ui/windows/TitleScenarioSelect.cpp index 6fbb8ff3da..947f3f9abb 100644 --- a/src/openrct2-ui/windows/TitleScenarioSelect.cpp +++ b/src/openrct2-ui/windows/TitleScenarioSelect.cpp @@ -494,8 +494,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) const utf8* pathPtr = path; gfx_draw_string_left( - dpi, STR_STRING, static_cast(&pathPtr), w->colours[1], w->windowPos.x + 3, - w->windowPos.y + w->height - 3 - 11); + dpi, STR_STRING, static_cast(&pathPtr), w->colours[1], + w->windowPos + ScreenCoordsXY{ 3, w->height - 3 - 11 }); } // Scenario name diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 80f60c891d..067ca3577c 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -582,15 +582,15 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) // Stats fixed32_2dp rating = _loadedTrackDesign->excitement * 10; - gfx_draw_string_left(dpi, STR_TRACK_LIST_EXCITEMENT_RATING, &rating, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TRACK_LIST_EXCITEMENT_RATING, &rating, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; rating = _loadedTrackDesign->intensity * 10; - gfx_draw_string_left(dpi, STR_TRACK_LIST_INTENSITY_RATING, &rating, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TRACK_LIST_INTENSITY_RATING, &rating, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; rating = _loadedTrackDesign->nausea * 10; - gfx_draw_string_left(dpi, STR_TRACK_LIST_NAUSEA_RATING, &rating, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TRACK_LIST_NAUSEA_RATING, &rating, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT + 4; // Information for tracked rides. @@ -602,19 +602,19 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Holes uint16_t holes = _loadedTrackDesign->holes & 0x1F; - gfx_draw_string_left(dpi, STR_HOLES, &holes, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_HOLES, &holes, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } else { // Maximum speed uint16_t speed = ((_loadedTrackDesign->max_speed << 16) * 9) >> 18; - gfx_draw_string_left(dpi, STR_MAX_SPEED, &speed, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_MAX_SPEED, &speed, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; // Average speed speed = ((_loadedTrackDesign->average_speed << 16) * 9) >> 18; - gfx_draw_string_left(dpi, STR_AVERAGE_SPEED, &speed, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_AVERAGE_SPEED, &speed, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } @@ -630,24 +630,24 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Maximum positive vertical Gs int32_t gForces = _loadedTrackDesign->max_positive_vertical_g * 32; - gfx_draw_string_left(dpi, STR_MAX_POSITIVE_VERTICAL_G, &gForces, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_MAX_POSITIVE_VERTICAL_G, &gForces, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; // Maximum negative vertical Gs gForces = _loadedTrackDesign->max_negative_vertical_g * 32; - gfx_draw_string_left(dpi, STR_MAX_NEGATIVE_VERTICAL_G, &gForces, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_MAX_NEGATIVE_VERTICAL_G, &gForces, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; // Maximum lateral Gs gForces = _loadedTrackDesign->max_lateral_g * 32; - gfx_draw_string_left(dpi, STR_MAX_LATERAL_G, &gForces, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_MAX_LATERAL_G, &gForces, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; if (_loadedTrackDesign->total_air_time != 0) { // Total air time int32_t airTime = _loadedTrackDesign->total_air_time * 25; - gfx_draw_string_left(dpi, STR_TOTAL_AIR_TIME, &airTime, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TOTAL_AIR_TIME, &airTime, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } } @@ -656,12 +656,12 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Drops uint16_t drops = _loadedTrackDesign->drops & 0x3F; - gfx_draw_string_left(dpi, STR_DROPS, &drops, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_DROPS, &drops, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; // Drop height is multiplied by 0.75 uint16_t highestDropHeight = (_loadedTrackDesign->highest_drop_height * 3) / 4; - gfx_draw_string_left(dpi, STR_HIGHEST_DROP_HEIGHT, &highestDropHeight, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_HIGHEST_DROP_HEIGHT, &highestDropHeight, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } @@ -671,7 +671,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) if (inversions != 0) { // Inversions - gfx_draw_string_left(dpi, STR_INVERSIONS, &inversions, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_INVERSIONS, &inversions, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } } @@ -684,14 +684,14 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(_loadedTrackDesign->space_required_x); ft.Add(_loadedTrackDesign->space_required_y); - gfx_draw_string_left(dpi, STR_TRACK_LIST_SPACE_REQUIRED, gCommonFormatArgs, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TRACK_LIST_SPACE_REQUIRED, gCommonFormatArgs, COLOUR_BLACK, screenPos); screenPos.y += LIST_ROW_HEIGHT; } if (_loadedTrackDesign->cost != 0) { Formatter::Common().Add(_loadedTrackDesign->cost); - gfx_draw_string_left(dpi, STR_TRACK_LIST_COST_AROUND, gCommonFormatArgs, COLOUR_BLACK, screenPos.x, screenPos.y); + gfx_draw_string_left(dpi, STR_TRACK_LIST_COST_AROUND, gCommonFormatArgs, COLOUR_BLACK, screenPos); } } @@ -704,15 +704,15 @@ static void window_track_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, uint8_t paletteIndex = ColourMapA[w->colours[0]].mid_light; gfx_clear(dpi, paletteIndex); - int32_t x = 0; - int32_t y = 0; + auto screenCoords = ScreenCoordsXY{ 0, 0 }; size_t listIndex = 0; if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { if (_trackDesigns.empty()) { // No track designs - gfx_draw_string_left(dpi, STR_NO_TRACK_DESIGNS_OF_THIS_TYPE, nullptr, COLOUR_BLACK, x, y - 1); + gfx_draw_string_left( + dpi, STR_NO_TRACK_DESIGNS_OF_THIS_TYPE, nullptr, COLOUR_BLACK, screenCoords - ScreenCoordsXY{ 0, 1 }); return; } } @@ -723,7 +723,8 @@ static void window_track_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, if (listIndex == static_cast(w->selected_list_item)) { // Highlight - gfx_filter_rect(dpi, x, y, w->width, y + SCROLLABLE_ROW_HEIGHT - 1, PALETTE_DARKEN_1); + gfx_filter_rect( + dpi, screenCoords.x, screenCoords.y, w->width, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, PALETTE_DARKEN_1); stringId = STR_WINDOW_COLOUR_2_STRINGID; } else @@ -732,20 +733,22 @@ static void window_track_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, } rct_string_id stringId2 = STR_BUILD_CUSTOM_DESIGN; - gfx_draw_string_left(dpi, stringId, &stringId2, COLOUR_BLACK, x, y - 1); - y += SCROLLABLE_ROW_HEIGHT; + gfx_draw_string_left(dpi, stringId, &stringId2, COLOUR_BLACK, screenCoords - ScreenCoordsXY{ 0, 1 }); + screenCoords.y += SCROLLABLE_ROW_HEIGHT; listIndex++; } for (auto i : _filteredTrackIds) { - if (y + SCROLLABLE_ROW_HEIGHT >= dpi->y && y < dpi->y + dpi->height) + if (screenCoords.y + SCROLLABLE_ROW_HEIGHT >= dpi->y && screenCoords.y < dpi->y + dpi->height) { rct_string_id stringId; if (listIndex == static_cast(w->selected_list_item)) { // Highlight - gfx_filter_rect(dpi, x, y, w->width, y + SCROLLABLE_ROW_HEIGHT - 1, PALETTE_DARKEN_1); + gfx_filter_rect( + dpi, screenCoords.x, screenCoords.y, w->width, screenCoords.y + SCROLLABLE_ROW_HEIGHT - 1, + PALETTE_DARKEN_1); stringId = STR_WINDOW_COLOUR_2_STRINGID; } else @@ -757,10 +760,10 @@ static void window_track_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, auto ft = Formatter::Common(); ft.Add(STR_TRACK_LIST_NAME_FORMAT); ft.Add(_trackDesigns[i].name); - gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, x, y - 1); + gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, screenCoords - ScreenCoordsXY{ 0, 1 }); } - y += SCROLLABLE_ROW_HEIGHT; + screenCoords.y += SCROLLABLE_ROW_HEIGHT; listIndex++; } } diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 459e3171ec..188ff649fc 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -397,12 +397,11 @@ static void window_view_clipping_paint(rct_window* w, rct_drawpixelinfo* dpi) window_draw_widgets(w, dpi); // Clip height value - int32_t x = w->windowPos.x + 8; - int32_t y = w->windowPos.y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top; - gfx_draw_string_left(dpi, STR_VIEW_CLIPPING_HEIGHT_VALUE, nullptr, w->colours[0], x, y); + auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CLIP_HEIGHT_VALUE].top }; + gfx_draw_string_left(dpi, STR_VIEW_CLIPPING_HEIGHT_VALUE, nullptr, w->colours[0], screenCoords); - x = w->windowPos.x + w->widgets[WIDX_CLIP_HEIGHT_VALUE].left + 1; - y = w->windowPos.y + w->widgets[WIDX_CLIP_HEIGHT_VALUE].top; + screenCoords = w->windowPos + + ScreenCoordsXY{ w->widgets[WIDX_CLIP_HEIGHT_VALUE].left + 1, w->widgets[WIDX_CLIP_HEIGHT_VALUE].top }; fixed16_1dp clipHeightValueInUnits; fixed32_2dp clipHeightValueInMeters; @@ -412,7 +411,8 @@ static void window_view_clipping_paint(rct_window* w, rct_drawpixelinfo* dpi) { case DISPLAY_TYPE::DISPLAY_RAW: default: - gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &clipHeightRawValue, w->colours[0], x, y); // Printing the raw value. + gfx_draw_string_left( + dpi, STR_FORMAT_INTEGER, &clipHeightRawValue, w->colours[0], screenCoords); // Printing the raw value. break; case DISPLAY_TYPE::DISPLAY_UNITS: @@ -422,8 +422,8 @@ static void window_view_clipping_paint(rct_window* w, rct_drawpixelinfo* dpi) // Height label is Units. clipHeightValueInUnits = static_cast(FIXED_1DP(gClipHeight, 0) / 2 - FIXED_1DP(7, 0)); gfx_draw_string_left( - dpi, STR_UNIT1DP_NO_SUFFIX, &clipHeightValueInUnits, w->colours[0], x, - y); // Printing the value in Height Units. + dpi, STR_UNIT1DP_NO_SUFFIX, &clipHeightValueInUnits, w->colours[0], + screenCoords); // Printing the value in Height Units. } else { @@ -435,13 +435,14 @@ static void window_view_clipping_paint(rct_window* w, rct_drawpixelinfo* dpi) case MEASUREMENT_FORMAT_SI: clipHeightValueInMeters = static_cast( FIXED_2DP(gClipHeight, 0) / 2 * 1.5f - FIXED_2DP(10, 50)); - gfx_draw_string_left(dpi, STR_UNIT2DP_SUFFIX_METRES, &clipHeightValueInMeters, w->colours[0], x, y); + gfx_draw_string_left( + dpi, STR_UNIT2DP_SUFFIX_METRES, &clipHeightValueInMeters, w->colours[0], screenCoords); break; case MEASUREMENT_FORMAT_IMPERIAL: default: clipHeightValueInFeet = static_cast( FIXED_1DP(gClipHeight, 0) / 2.0f * 5 - FIXED_1DP(35, 0)); - gfx_draw_string_left(dpi, STR_UNIT1DP_SUFFIX_FEET, &clipHeightValueInFeet, w->colours[0], x, y); + gfx_draw_string_left(dpi, STR_UNIT1DP_SUFFIX_FEET, &clipHeightValueInFeet, w->colours[0], screenCoords); break; } } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index fe1a1ebfb4..07f095c7ac 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -643,7 +643,6 @@ void FASTCALL // string 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( diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 7364c23658..f249806a3d 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -151,11 +151,6 @@ 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) -{ - 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) {