FIx #12017 - Create gfx_draw_sprite overload (#12049)

Second and final part. replaces the rest of the calls and removes the old function.
This commit is contained in:
TomasZilinek 2020-06-24 17:48:17 +02:00 committed by GitHub
parent f330a22df1
commit cd6076b5bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 199 additions and 198 deletions

View File

@ -684,14 +684,18 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
i += g_peep_animation_entries[PEEP_SPRITE_TYPE_NORMAL].sprite_animation->base_image + 1;
i |= 0xA1600000;
gfx_draw_sprite(
dpi, i, (window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2 + w->windowPos.x,
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 + w->windowPos.y, 0);
dpi, i,
w->windowPos
+ ScreenCoordsXY{ (window_guest_list_widgets[WIDX_TAB_1].left + window_guest_list_widgets[WIDX_TAB_1].right) / 2,
window_guest_list_widgets[WIDX_TAB_1].bottom - 6 },
0);
// Tab 2 image
i = (_window_guest_list_selected_tab == 1 ? w->list_information_type / 4 : 0);
gfx_draw_sprite(
dpi, SPR_TAB_GUESTS_0 + i, window_guest_list_widgets[WIDX_TAB_2].left + w->windowPos.x,
window_guest_list_widgets[WIDX_TAB_2].top + w->windowPos.y, 0);
dpi, SPR_TAB_GUESTS_0 + i,
w->windowPos + ScreenCoordsXY{ window_guest_list_widgets[WIDX_TAB_2].left, window_guest_list_widgets[WIDX_TAB_2].top },
0);
// Filter description
auto screenCoords = w->windowPos + ScreenCoordsXY{ 6, window_guest_list_widgets[WIDX_TAB_CONTENT_PANEL].top + 3 };
@ -775,11 +779,11 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
{
case VIEW_ACTIONS:
// Guest face
gfx_draw_sprite(dpi, get_peep_face_sprite_small(peep), 118, y + 1, 0);
gfx_draw_sprite(dpi, get_peep_face_sprite_small(peep), { 118, y + 1 }, 0);
// Tracking icon
if (peep->PeepFlags & PEEP_FLAGS_TRACKING)
gfx_draw_sprite(dpi, STR_ENTER_SELECTION_SIZE, 112, y + 1, 0);
gfx_draw_sprite(dpi, STR_ENTER_SELECTION_SIZE, { 112, y + 1 }, 0);
// Action
ft = Formatter::Common();
@ -838,7 +842,7 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
for (uint32_t j = 0; j < 56 && j < numGuests; j++)
gfx_draw_sprite(
dpi, _window_guest_list_groups_guest_faces[i * 56 + j] + SPR_PEEP_SMALL_FACE_VERY_VERY_UNHAPPY,
j * 8, y + 12, 0);
{ static_cast<int32_t>(j) * 8, y + 12 }, 0);
// Draw action
std::memcpy(

View File

@ -236,7 +236,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
g1temp.flags = G1_FLAG_BMP;
gfx_set_g1_element(SPR_TEMP, &g1temp);
drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, screenPos.x, screenPos.y, 0);
gfx_draw_sprite(dpi, SPR_TEMP, screenPos, 0);
screenPos = w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->bottom - 12 };

View File

@ -358,7 +358,7 @@ static void window_land_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
screenCoords = { w->windowPos.x + previewWidget->left, w->windowPos.y + previewWidget->top };
int32_t sprite = gLandToolSize % 2 == 0 ? SPR_G2_MOUNTAIN_TOOL_EVEN : SPR_G2_MOUNTAIN_TOOL_ODD;
gfx_draw_sprite(dpi, sprite, screenCoords.x, screenCoords.y, 0);
gfx_draw_sprite(dpi, sprite, screenCoords, 0);
widget_draw(dpi, w, WIDX_DECREMENT);
widget_draw(dpi, w, WIDX_INCREMENT);
}

View File

@ -834,7 +834,7 @@ static void window_map_paint(rct_window* w, rct_drawpixelinfo* dpi)
w->widgets[WIDX_PEOPLE_STARTING_POSITION].top + 18 };
gfx_draw_sprite(
dpi, IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | (COLOUR_LIGHT_BROWN << 24) | (COLOUR_BRIGHT_RED << 19) | SPR_6410,
screenCoords.x, screenCoords.y, 0);
screenCoords, 0);
}
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) && !gCheatsSandboxMode)
@ -886,7 +886,7 @@ static void window_map_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
g1temp.y_offset = -8;
gfx_set_g1_element(SPR_TEMP, &g1temp);
drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, 0, 0, 0);
gfx_draw_sprite(dpi, SPR_TEMP, { 0, 0 }, 0);
if (w->selected_tab == PAGE_PEEPS)
{
@ -1007,7 +1007,7 @@ static void window_map_draw_tab_images(rct_window* w, rct_drawpixelinfo* dpi)
image += w->list_information_type / 4;
gfx_draw_sprite(
dpi, image, w->windowPos.x + w->widgets[WIDX_PEOPLE_TAB].left, w->windowPos.y + w->widgets[WIDX_PEOPLE_TAB].top, 0);
dpi, image, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_PEOPLE_TAB].left, w->widgets[WIDX_PEOPLE_TAB].top }, 0);
// Ride/stall tab image (animated)
image = SPR_TAB_RIDE_0;
@ -1015,7 +1015,7 @@ static void window_map_draw_tab_images(rct_window* w, rct_drawpixelinfo* dpi)
image += w->list_information_type / 4;
gfx_draw_sprite(
dpi, image, w->windowPos.x + w->widgets[WIDX_RIDES_TAB].left, w->windowPos.y + w->widgets[WIDX_RIDES_TAB].top, 0);
dpi, image, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_RIDES_TAB].left, w->widgets[WIDX_RIDES_TAB].top }, 0);
}
/**

View File

@ -1399,7 +1399,7 @@ static void window_mapgen_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w,
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -1078,7 +1078,7 @@ static void window_multiplayer_draw_tab_image(rct_window* w, rct_drawpixelinfo*
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -476,7 +476,7 @@ static void window_network_draw_tab_image(rct_window* w, rct_drawpixelinfo* dpi,
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -659,7 +659,7 @@ static void window_new_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
spriteIndex |= w->colours[1] << 19;
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -271,8 +271,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
// Subject button
if ((news_type_properties[newsItem.Type] & NEWS_TYPE_HAS_SUBJECT) && !(newsItem.Flags & NEWS_FLAG_HAS_BUTTON))
{
int32_t x = 328;
int32_t yy = y + lineHeight + 4;
auto screenCoords = ScreenCoordsXY{ 328, y + lineHeight + 4 };
int32_t press = 0;
if (w->news.var_480 != -1)
@ -281,18 +280,19 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
if (i == w->news.var_480 && w->news.var_482 == 1)
press = INSET_RECT_FLAG_BORDER_INSET;
}
gfx_fill_rect_inset(dpi, x, yy, x + 23, yy + 23, w->colours[2], press);
gfx_fill_rect_inset(
dpi, screenCoords.x, screenCoords.y, screenCoords.x + 23, screenCoords.y + 23, w->colours[2], press);
switch (newsItem.Type)
{
case NEWS_ITEM_RIDE:
gfx_draw_sprite(dpi, SPR_RIDE, x, yy, 0);
gfx_draw_sprite(dpi, SPR_RIDE, screenCoords, 0);
break;
case NEWS_ITEM_PEEP:
case NEWS_ITEM_PEEP_ON_RIDE:
{
rct_drawpixelinfo cliped_dpi;
if (!clip_drawpixelinfo(&cliped_dpi, dpi, x + 1, yy + 1, 22, 22))
if (!clip_drawpixelinfo(&cliped_dpi, dpi, screenCoords.x + 1, screenCoords.y + 1, 22, 22))
{
break;
}
@ -305,7 +305,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
if (peep == nullptr)
break;
int32_t clip_x = 10, clip_y = 19;
auto clipCoords = ScreenCoordsXY{ 10, 19 };
// If normal peep set sprite to normal (no food)
// If staff set sprite to staff sprite
@ -315,7 +315,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
sprite_type = peep->SpriteType;
if (peep->StaffType == STAFF_TYPE_ENTERTAINER)
{
clip_y += 3;
clipCoords.y += 3;
}
}
@ -323,23 +323,23 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
image_id += 0xA0000001;
image_id |= (peep->TshirtColour << 19) | (peep->TrousersColour << 24);
gfx_draw_sprite(&cliped_dpi, image_id, clip_x, clip_y, 0);
gfx_draw_sprite(&cliped_dpi, image_id, clipCoords, 0);
break;
}
case NEWS_ITEM_MONEY:
gfx_draw_sprite(dpi, SPR_FINANCE, x, yy, 0);
gfx_draw_sprite(dpi, SPR_FINANCE, screenCoords, 0);
break;
case NEWS_ITEM_RESEARCH:
gfx_draw_sprite(dpi, newsItem.Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE, x, yy, 0);
gfx_draw_sprite(dpi, newsItem.Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE, screenCoords, 0);
break;
case NEWS_ITEM_PEEPS:
gfx_draw_sprite(dpi, SPR_GUESTS, x, yy, 0);
gfx_draw_sprite(dpi, SPR_GUESTS, screenCoords, 0);
break;
case NEWS_ITEM_AWARD:
gfx_draw_sprite(dpi, SPR_AWARD, x, yy, 0);
gfx_draw_sprite(dpi, SPR_AWARD, screenCoords, 0);
break;
case NEWS_ITEM_GRAPH:
gfx_draw_sprite(dpi, SPR_GRAPH, x, yy, 0);
gfx_draw_sprite(dpi, SPR_GRAPH, screenCoords, 0);
break;
}
}
@ -347,8 +347,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
// Location button
if ((news_type_properties[newsItem.Type] & NEWS_TYPE_HAS_LOCATION) && !(newsItem.Flags & NEWS_FLAG_HAS_BUTTON))
{
int32_t x = 352;
int32_t yy = y + lineHeight + 4;
auto screenCoords = ScreenCoordsXY{ 352, y + lineHeight + 4 };
int32_t press = 0;
if (w->news.var_480 != -1)
@ -357,8 +356,9 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
if (i == w->news.var_480 && w->news.var_482 == 2)
press = 0x20;
}
gfx_fill_rect_inset(dpi, x, yy, x + 23, yy + 23, w->colours[2], press);
gfx_draw_sprite(dpi, SPR_LOCATE, x, yy, 0);
gfx_fill_rect_inset(
dpi, screenCoords.x, screenCoords.y, screenCoords.x + 23, screenCoords.y + 23, w->colours[2], press);
gfx_draw_sprite(dpi, SPR_LOCATE, screenCoords, 0);
}
y += itemHeight;

View File

@ -291,7 +291,7 @@ static void window_news_options_draw_tab_image(rct_window* w, rct_drawpixelinfo*
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -2175,7 +2175,7 @@ static void window_options_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w,
}
// Draw normal, enabled sprite.
gfx_draw_sprite(dpi, spriteIndex, screenCoords.x, screenCoords.y, 0);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
}
else
{

View File

@ -867,7 +867,7 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0);
}
// Draw park closed / open label
@ -1746,7 +1746,7 @@ 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, screenCoords.x, screenCoords.y, 0);
gfx_draw_sprite(dpi, ParkAwards[award->Type].sprite, screenCoords, 0);
gfx_draw_string_left_wrapped(
dpi, nullptr, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text, COLOUR_BLACK);
@ -1829,8 +1829,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
// Entrance tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_1)))
gfx_draw_sprite(
dpi, SPR_TAB_PARK_ENTRANCE, w->windowPos.x + w->widgets[WIDX_TAB_1].left,
w->windowPos.y + w->widgets[WIDX_TAB_1].top, 0);
dpi, SPR_TAB_PARK_ENTRANCE,
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top }, 0);
// Rating tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
@ -1839,13 +1839,13 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_RATING)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_2].left, w->windowPos.y + w->widgets[WIDX_TAB_2].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left, w->widgets[WIDX_TAB_2].top }, 0);
gfx_draw_sprite(
dpi, SPR_RATING_HIGH, w->windowPos.x + w->widgets[WIDX_TAB_2].left + 7,
w->windowPos.y + w->widgets[WIDX_TAB_2].top + 1, 0);
dpi, SPR_RATING_HIGH,
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 7, w->widgets[WIDX_TAB_2].top + 1 }, 0);
gfx_draw_sprite(
dpi, SPR_RATING_LOW, w->windowPos.x + w->widgets[WIDX_TAB_2].left + 16,
w->windowPos.y + w->widgets[WIDX_TAB_2].top + 12, 0);
dpi, SPR_RATING_LOW,
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 16, w->widgets[WIDX_TAB_2].top + 12 }, 0);
}
// Guests tab
@ -1855,7 +1855,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_GUESTS)
sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_3].left, w->windowPos.y + w->widgets[WIDX_TAB_3].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].left, w->widgets[WIDX_TAB_3].top }, 0);
sprite_idx = g_peep_animation_entries[PEEP_SPRITE_TYPE_NORMAL].sprite_animation->base_image + 1;
if (w->page == WINDOW_PARK_PAGE_GUESTS)
@ -1863,8 +1863,11 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx |= 0xA9E00000;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
w->windowPos.y + w->widgets[WIDX_TAB_3].bottom - 9, 0);
dpi, sprite_idx,
w->windowPos
+ ScreenCoordsXY{ (w->widgets[WIDX_TAB_3].left + w->widgets[WIDX_TAB_3].right) / 2,
w->widgets[WIDX_TAB_3].bottom - 9 },
0);
}
// Price tab
@ -1874,7 +1877,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_PRICE)
sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_4].left, w->windowPos.y + w->widgets[WIDX_TAB_4].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_4].left, w->widgets[WIDX_TAB_4].top }, 0);
}
// Statistics tab
@ -1884,7 +1887,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_STATS)
sprite_idx += (w->frame_no / 4) % 7;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_5].left, w->windowPos.y + w->widgets[WIDX_TAB_5].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_5].left, w->widgets[WIDX_TAB_5].top }, 0);
}
// Objective tab
@ -1894,13 +1897,13 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_OBJECTIVE)
sprite_idx += (w->frame_no / 4) % 16;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_6].left, w->windowPos.y + w->widgets[WIDX_TAB_6].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_6].left, w->widgets[WIDX_TAB_6].top }, 0);
}
// Awards tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_7)))
gfx_draw_sprite(
dpi, SPR_TAB_AWARDS, w->windowPos.x + w->widgets[WIDX_TAB_7].left, w->windowPos.y + w->widgets[WIDX_TAB_7].top, 0);
dpi, SPR_TAB_AWARDS, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_7].left, w->widgets[WIDX_TAB_7].top }, 0);
}
#pragma endregion

View File

@ -613,24 +613,22 @@ static void window_player_set_page(rct_window* w, int32_t page)
static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
{
rct_widget* widget;
int32_t x, y, imageId;
int32_t imageId;
// Tab 1
if (!widget_is_disabled(w, WIDX_TAB_1))
{
widget = &w->widgets[WIDX_TAB_1];
x = widget->left + w->windowPos.x;
y = widget->top + w->windowPos.y;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
imageId = SPR_PEEP_LARGE_FACE_NORMAL;
gfx_draw_sprite(dpi, imageId, x, y, 0);
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
}
// Tab 2
if (!widget_is_disabled(w, WIDX_TAB_2))
{
widget = &w->widgets[WIDX_TAB_2];
x = widget->left + w->windowPos.x;
y = widget->top + w->windowPos.y;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
imageId = SPR_TAB_FINANCES_SUMMARY_0;
if (w->page == WINDOW_PLAYER_PAGE_STATISTICS)
@ -638,7 +636,7 @@ static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
imageId += (w->frame_no / 2) & 7;
}
gfx_draw_sprite(dpi, imageId, x, y, 0);
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
}
}

View File

@ -681,7 +681,7 @@ static void window_research_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}

View File

@ -1258,7 +1258,7 @@ static void window_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w, in
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0);
}
}
@ -1294,7 +1294,7 @@ static void window_ride_draw_tab_main(rct_drawpixelinfo* dpi, rct_window* w)
break;
}
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + w->widgets[widgetIndex].left, w->windowPos.y + w->widgets[widgetIndex].top,
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top },
0);
}
}
@ -1311,24 +1311,21 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
if (!(w->disabled_widgets & (1LL << widgetIndex)))
{
int32_t x = widget->left + 1;
int32_t y = widget->top + 1;
int32_t width = widget->right - x;
int32_t height = widget->bottom - 3 - y;
auto screenCoords = ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
int32_t width = widget->right - screenCoords.x;
int32_t height = widget->bottom - 3 - screenCoords.y;
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
height += 4;
x += w->windowPos.x;
y += w->windowPos.y;
screenCoords += w->windowPos;
rct_drawpixelinfo clipDPI;
if (!clip_drawpixelinfo(&clipDPI, dpi, x, y, width, height))
if (!clip_drawpixelinfo(&clipDPI, dpi, screenCoords.x, screenCoords.y, width, height))
{
return;
}
x = (widget->right - widget->left) / 2;
y = (widget->bottom - widget->top) - 12;
screenCoords = ScreenCoordsXY{ (widget->right - widget->left) / 2, (widget->bottom - widget->top) - 12 };
auto ride = get_ride(w->number);
if (ride == nullptr)
@ -1343,8 +1340,8 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
clipDPI.zoom_level = 1;
clipDPI.width *= 2;
clipDPI.height *= 2;
x *= 2;
y *= 2;
screenCoords.x *= 2;
screenCoords.y *= 2;
clipDPI.x *= 2;
clipDPI.y *= 2;
}
@ -1352,7 +1349,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
// For any suspended rides, move image higher in the vehicle tab on the rides window
if (RideTypeDescriptors[ride->type].HasFlag(RIDE_TYPE_FLAG_IS_SUSPENDED))
{
y /= 4;
screenCoords.y /= 4;
}
const uint8_t vehicle = ride_entry_get_vehicle_at_position(
@ -1371,7 +1368,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
gfx_draw_sprite(&clipDPI, spriteIndex, x, y, vehicleColour.additional_2);
gfx_draw_sprite(&clipDPI, spriteIndex, screenCoords, vehicleColour.additional_2);
}
}
@ -1395,7 +1392,7 @@ static void window_ride_draw_tab_customer(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex |= 0xA9E00000;
gfx_draw_sprite(
dpi, spriteIndex, w->windowPos.x + (widget->left + widget->right) / 2, w->windowPos.y + widget->bottom - 6, 0);
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->bottom - 6 }, 0);
}
}
@ -2916,7 +2913,7 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0);
}
// View dropdown
@ -3324,7 +3321,7 @@ static void window_ride_vehicle_scrollpaint(rct_window* w, rct_drawpixelinfo* dp
rct_vehicle_paintinfo* current = nextSpriteToDraw;
while (--current >= _sprites_to_draw)
gfx_draw_sprite(dpi, current->sprite_index, current->x, current->y, current->tertiary_colour);
gfx_draw_sprite(dpi, current->sprite_index, { current->x, current->y }, current->tertiary_colour);
startX += 36;
}
@ -4317,8 +4314,7 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_widget* widget = &window_ride_maintenance_widgets[WIDX_LOCATE_MECHANIC];
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);
dpi, (gStaffMechanicColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | SPR_MECHANIC, screenCoords, 0);
// Inspection label
widget = &window_ride_maintenance_widgets[WIDX_INSPECTION_INTERVAL];
@ -5069,14 +5065,13 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
auto rideEntry = ride->GetRideEntry();
if (rideEntry == nullptr || rideEntry->shop_item[0] == SHOP_ITEM_NONE)
{
int32_t x = w->windowPos.x + widget->left;
int32_t y = w->windowPos.y + widget->top;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
// Track
if (ride->type == RIDE_TYPE_MAZE)
{
int32_t spriteIndex = MazeOptions[trackColour.supports].sprite;
gfx_draw_sprite(dpi, spriteIndex, x, y, 0);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
}
else
{
@ -5084,7 +5079,7 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (spriteIndex != 0)
{
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_2(trackColour.main, trackColour.additional);
gfx_draw_sprite(dpi, spriteIndex, x, y, 0);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
}
// Supports
@ -5092,20 +5087,20 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (spriteIndex != 0)
{
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_1(trackColour.supports);
gfx_draw_sprite(dpi, spriteIndex, x, y, 0);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
}
}
}
else
{
int32_t x = w->windowPos.x + (widget->left + widget->right) / 2 - 8;
int32_t y = w->windowPos.y + (widget->bottom + widget->top) / 2 - 6;
auto screenCoords = w->windowPos
+ ScreenCoordsXY{ (widget->left + widget->right) / 2 - 8, (widget->bottom + widget->top) / 2 - 6 };
uint8_t shopItem = rideEntry->shop_item[1] == SHOP_ITEM_NONE ? rideEntry->shop_item[0] : rideEntry->shop_item[1];
int32_t spriteIndex = ShopItems[shopItem].Image;
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_1(ride->track_colour[0].main);
gfx_draw_sprite(dpi, spriteIndex, x, y, 0);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
}
// Entrance preview
@ -5132,14 +5127,14 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
spriteIndex += stationObj->BaseImageId;
// Back
gfx_draw_sprite(&clippedDpi, spriteIndex, 34, 20, terniaryColour);
gfx_draw_sprite(&clippedDpi, spriteIndex, { 34, 20 }, terniaryColour);
// Front
gfx_draw_sprite(&clippedDpi, spriteIndex + 4, 34, 20, terniaryColour);
gfx_draw_sprite(&clippedDpi, spriteIndex + 4, { 34, 20 }, terniaryColour);
// Glass
if (terniaryColour != 0)
gfx_draw_sprite(&clippedDpi, ((spriteIndex + 20) & 0x7FFFF) + terniaryColour, 34, 20, terniaryColour);
gfx_draw_sprite(&clippedDpi, ((spriteIndex + 20) & 0x7FFFF) + terniaryColour, { 34, 20 }, terniaryColour);
}
}
@ -5169,8 +5164,8 @@ static void window_ride_colour_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, PALETTE_INDEX_12);
// ?
int32_t x = (vehiclePreviewWidget->right - vehiclePreviewWidget->left) / 2;
int32_t y = vehiclePreviewWidget->bottom - vehiclePreviewWidget->top - 15;
auto screenCoords = ScreenCoordsXY{ (vehiclePreviewWidget->right - vehiclePreviewWidget->left) / 2,
vehiclePreviewWidget->bottom - vehiclePreviewWidget->top - 15 };
// ?
auto trainCarIndex = (ride->colour_scheme_type & 3) == RIDE_COLOUR_SCHEME_DIFFERENT_PER_CAR ? w->vehicleIndex
@ -5179,7 +5174,7 @@ static void window_ride_colour_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
rct_ride_entry_vehicle* rideVehicleEntry = &rideEntry->vehicles[ride_entry_get_vehicle_at_position(
ride->subtype, ride->num_cars_per_train, trainCarIndex)];
y += rideVehicleEntry->tab_height;
screenCoords.y += rideVehicleEntry->tab_height;
// Draw the coloured spinning vehicle
uint32_t spriteIndex = (rideVehicleEntry->flags & VEHICLE_ENTRY_FLAG_11) ? w->frame_no / 4 : w->frame_no / 2;
@ -5188,7 +5183,7 @@ static void window_ride_colour_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
spriteIndex += rideVehicleEntry->base_image_id;
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
gfx_draw_sprite(dpi, spriteIndex, x, y, vehicleColour.additional_2);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, vehicleColour.additional_2);
}
#pragma endregion

View File

@ -765,21 +765,21 @@ static void window_ride_list_draw_tab_images(rct_drawpixelinfo* dpi, rct_window*
if (w->page == PAGE_RIDES)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_1].left, w->windowPos.y + w->widgets[WIDX_TAB_1].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top }, 0);
// Shops and stalls tab
sprite_idx = SPR_TAB_SHOPS_AND_STALLS_0;
if (w->page == PAGE_SHOPS_AND_STALLS)
sprite_idx += w->frame_no / 4;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_2].left, w->windowPos.y + w->widgets[WIDX_TAB_2].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left, w->widgets[WIDX_TAB_2].top }, 0);
// Information kiosks and facilities tab
sprite_idx = SPR_TAB_KIOSKS_AND_FACILITIES_0;
if (w->page == PAGE_KIOSKS_AND_FACILITIES)
sprite_idx += (w->frame_no / 4) % 8;
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_TAB_3].left, w->windowPos.y + w->widgets[WIDX_TAB_3].top, 0);
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].left, w->widgets[WIDX_TAB_3].top }, 0);
}
/**

View File

@ -1124,8 +1124,10 @@ void window_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi)
uint32_t imageId = ((w->colours[1] << 19) | window_scenery_widgets[selectedWidgetId].image) + 1ul;
gfx_draw_sprite(
dpi, imageId, w->windowPos.x + window_scenery_widgets[selectedWidgetId].left,
w->windowPos.y + window_scenery_widgets[selectedWidgetId].top, selectedWidgetId);
dpi, imageId,
w->windowPos
+ ScreenCoordsXY{ window_scenery_widgets[selectedWidgetId].left, window_scenery_widgets[selectedWidgetId].top },
selectedWidgetId);
ScenerySelection selectedSceneryEntry = w->scenery.SelectedScenery;
if (selectedSceneryEntry.IsUndefined())
@ -1245,8 +1247,8 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
uint32_t imageId = sceneryEntry->image + gWindowSceneryRotation * 2;
imageId |= (gWindowSceneryPrimaryColour << 19) | IMAGE_TYPE_REMAP;
gfx_draw_sprite(&clipdpi, imageId, 0x21, 0x28, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId + 1, 0x21, 0x28, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x21, 0x28 }, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId + 1, { 0x21, 0x28 }, w->colours[1]);
}
else if (currentSceneryGlobal.SceneryType == SCENERY_TYPE_LARGE)
{
@ -1255,7 +1257,7 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
imageId |= (gWindowSceneryPrimaryColour << 19) | IMAGE_TYPE_REMAP;
imageId |= (gWindowScenerySecondaryColour << 24) | IMAGE_TYPE_REMAP_2_PLUS;
gfx_draw_sprite(&clipdpi, imageId, 0x21, 0, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x21, 0 }, w->colours[1]);
}
else if (currentSceneryGlobal.SceneryType == SCENERY_TYPE_WALL)
{
@ -1272,10 +1274,10 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
{
imageId |= (gWindowScenerySecondaryColour << 24) | IMAGE_TYPE_REMAP_2_PLUS;
}
gfx_draw_sprite(&clipdpi, imageId, 0x2F, spriteTop, tertiaryColour);
gfx_draw_sprite(&clipdpi, imageId, { 0x2F, spriteTop }, tertiaryColour);
imageId = (sceneryEntry->image + 0x40000006) | (GlassPaletteIds[gWindowSceneryPrimaryColour] << 19);
gfx_draw_sprite(&clipdpi, imageId, 0x2F, spriteTop, tertiaryColour);
gfx_draw_sprite(&clipdpi, imageId, { 0x2F, spriteTop }, tertiaryColour);
}
else
{
@ -1291,11 +1293,11 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
tertiaryColour = gWindowSceneryTertiaryColour;
}
}
gfx_draw_sprite(&clipdpi, imageId, 0x2F, spriteTop, tertiaryColour);
gfx_draw_sprite(&clipdpi, imageId, { 0x2F, spriteTop }, tertiaryColour);
if (sceneryEntry->wall.flags & WALL_SCENERY_IS_DOOR)
{
gfx_draw_sprite(&clipdpi, imageId + 1, 0x2F, spriteTop, tertiaryColour);
gfx_draw_sprite(&clipdpi, imageId + 1, { 0x2F, spriteTop }, tertiaryColour);
}
}
}
@ -1304,7 +1306,7 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
sceneryEntry = get_footpath_item_entry(currentSceneryGlobal.EntryIndex);
uint32_t imageId = sceneryEntry->image;
gfx_draw_sprite(&clipdpi, imageId, 0x0B, 0x10, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x0B, 0x10 }, w->colours[1]);
}
else
{
@ -1329,20 +1331,20 @@ void window_scenery_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t s
spriteTop -= 0x0C;
}
gfx_draw_sprite(&clipdpi, imageId, 0x20, spriteTop, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x20, spriteTop }, w->colours[1]);
if (scenery_small_entry_has_flag(sceneryEntry, SMALL_SCENERY_FLAG_HAS_GLASS))
{
imageId = ((sceneryEntry->image + gWindowSceneryRotation) + 0x40000004)
+ (GlassPaletteIds[gWindowSceneryPrimaryColour] << 19);
gfx_draw_sprite(&clipdpi, imageId, 0x20, spriteTop, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x20, spriteTop }, w->colours[1]);
}
if (scenery_small_entry_has_flag(sceneryEntry, SMALL_SCENERY_FLAG_ANIMATED_FG))
{
imageId = (sceneryEntry->image + gWindowSceneryRotation) + 4;
gfx_draw_sprite(&clipdpi, imageId, 0x20, spriteTop, w->colours[1]);
gfx_draw_sprite(&clipdpi, imageId, { 0x20, spriteTop }, w->colours[1]);
}
}
}

View File

@ -489,14 +489,14 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
bool correctVersion = serverDetails.Version == network_get_version();
compatibilitySpriteId = correctVersion ? SPR_G2_RCT1_OPEN_BUTTON_2 : SPR_G2_RCT1_CLOSE_BUTTON_2;
}
gfx_draw_sprite(dpi, compatibilitySpriteId, right, screenCoords.y + 1, 0);
gfx_draw_sprite(dpi, compatibilitySpriteId, { right, screenCoords.y + 1 }, 0);
right -= 4;
// Draw lock icon
right -= 8;
if (serverDetails.RequiresPassword)
{
gfx_draw_sprite(dpi, SPR_G2_LOCKED, right, screenCoords.y + 4, 0);
gfx_draw_sprite(dpi, SPR_G2_LOCKED, { right, screenCoords.y + 4 }, 0);
}
right -= 6;

View File

@ -943,7 +943,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_viewport* viewport = w->viewport;
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
{
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos.x + 2, w->windowPos.y + 2, 0);
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0);
}
}
@ -967,8 +967,6 @@ void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_2];
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_STAFF_OPTIONS_0;
@ -977,7 +975,8 @@ void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
image_id += (w->frame_no / 2) % 7;
}
gfx_draw_sprite(dpi, image_id, x, y, 0);
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
}
/**
@ -990,8 +989,6 @@ void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
return;
rct_widget* widget = &w->widgets[WIDX_TAB_3];
int32_t x = widget->left + w->windowPos.x;
int32_t y = widget->top + w->windowPos.y;
int32_t image_id = SPR_TAB_STATS_0;
@ -1000,7 +997,8 @@ void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
image_id += (w->frame_no / 4) % 7;
}
gfx_draw_sprite(dpi, image_id, x, y, 0);
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
}
/**
@ -1014,24 +1012,22 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_widget* widget = &w->widgets[WIDX_TAB_1];
int32_t width = widget->right - widget->left - 1;
int32_t height = widget->bottom - widget->top - 1;
int32_t x = widget->left + 1 + w->windowPos.x;
int32_t y = widget->top + 1 + w->windowPos.y;
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 };
if (w->page == WINDOW_STAFF_OVERVIEW)
height++;
rct_drawpixelinfo clip_dpi;
if (!clip_drawpixelinfo(&clip_dpi, dpi, x, y, width, height))
if (!clip_drawpixelinfo(&clip_dpi, dpi, screenCoords.x, screenCoords.y, width, height))
{
return;
}
x = 14;
y = 20;
screenCoords = ScreenCoordsXY{ 20, 14 };
Peep* peep = GET_PEEP(w->number);
if (peep->AssignedPeepType == PEEP_TYPE_STAFF && peep->StaffType == STAFF_TYPE_ENTERTAINER)
y++;
screenCoords.y++;
int32_t ebx = g_peep_animation_entries[peep->SpriteType].sprite_animation->base_image + 1;
@ -1045,14 +1041,14 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
ebx += eax;
int32_t sprite_id = ebx | SPRITE_ID_PALETTE_COLOUR_2(peep->TshirtColour, peep->TrousersColour);
gfx_draw_sprite(&clip_dpi, sprite_id, x, y, 0);
gfx_draw_sprite(&clip_dpi, sprite_id, screenCoords, 0);
// If holding a balloon
if (ebx >= 0x2A1D && ebx < 0x2A3D)
{
ebx += 32;
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
gfx_draw_sprite(&clip_dpi, ebx, x, y, 0);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
}
// If holding umbrella
@ -1060,7 +1056,7 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
ebx += 32;
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
gfx_draw_sprite(&clip_dpi, ebx, x, y, 0);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
}
// If wearing hat
@ -1068,7 +1064,7 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
ebx += 32;
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
gfx_draw_sprite(&clip_dpi, ebx, x, y, 0);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
}
}

View File

@ -574,11 +574,12 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
i |= SPRITE_ID_PALETTE_COLOUR_1(gStaffHandymanColour);
gfx_draw_sprite(
dpi, i,
(window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].right)
/ 2
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].bottom - 6 + w->windowPos.y, 0);
w->windowPos
+ ScreenCoordsXY{ (window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].right)
/ 2,
window_staff_list_widgets[WIDX_STAFF_LIST_HANDYMEN_TAB].bottom - 6 },
0);
// Mechanic tab image
i = (selectedTab == 1 ? (w->list_information_type & ~3) : 0);
@ -586,11 +587,12 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
i |= SPRITE_ID_PALETTE_COLOUR_1(gStaffMechanicColour);
gfx_draw_sprite(
dpi, i,
(window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].right)
/ 2
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].bottom - 6 + w->windowPos.y, 0);
w->windowPos
+ ScreenCoordsXY{ (window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].right)
/ 2,
window_staff_list_widgets[WIDX_STAFF_LIST_MECHANICS_TAB].bottom - 6 },
0);
// Security tab image
i = (selectedTab == 2 ? (w->list_information_type & ~3) : 0);
@ -598,11 +600,12 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
i |= SPRITE_ID_PALETTE_COLOUR_1(gStaffSecurityColour);
gfx_draw_sprite(
dpi, i,
(window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].right)
/ 2
+ w->windowPos.x,
window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].bottom - 6 + w->windowPos.y, 0);
w->windowPos
+ ScreenCoordsXY{ (window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].left
+ window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].right)
/ 2,
window_staff_list_widgets[WIDX_STAFF_LIST_SECURITY_TAB].bottom - 6 },
0);
rct_drawpixelinfo sprite_dpi;
if (clip_drawpixelinfo(
@ -616,7 +619,7 @@ void window_staff_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Entertainers tab image
i = (selectedTab == 3 ? (w->list_information_type & ~3) : 0);
i += g_peep_animation_entries[PEEP_SPRITE_TYPE_ENTERTAINER_ELEPHANT].sprite_animation->base_image + 1;
gfx_draw_sprite(&sprite_dpi, i, 0x0F, 0x17, 0);
gfx_draw_sprite(&sprite_dpi, i, { 0x0F, 0x17 }, 0);
}
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
@ -708,7 +711,7 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
// True if a patrol path is set for the worker
if (gStaffModes[peep->StaffId] & 2)
{
gfx_draw_sprite(dpi, SPR_STAFF_PATROL_PATH, nameColumnSize + 5, y, 0);
gfx_draw_sprite(dpi, SPR_STAFF_PATROL_PATH, { nameColumnSize + 5, y }, 0);
}
auto staffOrderIcon_x = nameColumnSize + 20;
@ -721,7 +724,7 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
{
if (staffOrders & 1)
{
gfx_draw_sprite(dpi, staffOrderSprite, staffOrderIcon_x, y, 0);
gfx_draw_sprite(dpi, staffOrderSprite, { staffOrderIcon_x, y }, 0);
}
staffOrders = staffOrders >> 1;
staffOrderIcon_x += 9;
@ -731,7 +734,7 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
}
else
{
gfx_draw_sprite(dpi, staffCostumeSprites[peep->SpriteType - 4], staffOrderIcon_x, y, 0);
gfx_draw_sprite(dpi, staffCostumeSprites[peep->SpriteType - 4], { staffOrderIcon_x, y }, 0);
}
}

View File

@ -316,8 +316,10 @@ static void window_themes_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (_selected_tab == i)
sprite_idx += w->frame_no / window_themes_tab_animation_divisor[_selected_tab];
gfx_draw_sprite(
dpi, sprite_idx, w->windowPos.x + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].left,
w->windowPos.y + w->widgets[WIDX_THEMES_SETTINGS_TAB + i].top, 0);
dpi, sprite_idx,
w->windowPos
+ ScreenCoordsXY{ w->widgets[WIDX_THEMES_SETTINGS_TAB + i].left, w->widgets[WIDX_THEMES_SETTINGS_TAB + i].top },
0);
}
}
@ -913,7 +915,7 @@ void window_themes_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t sc
{
image = SPRITE_ID_PALETTE_COLOUR_1(colour & ~COLOUR_FLAG_TRANSLUCENT) | SPR_PALETTE_BTN_PRESSED;
}
gfx_draw_sprite(dpi, image, _button_offset_x + 12 * j, screenCoords.y + _button_offset_y, 0);
gfx_draw_sprite(dpi, image, { _button_offset_x + 12 * j, screenCoords.y + _button_offset_y }, 0);
gfx_fill_rect_inset(
dpi, _button_offset_x + 12 * j, screenCoords.y + _check_offset_y, _button_offset_x + 12 * j + 9,

View File

@ -1053,8 +1053,7 @@ static void window_title_editor_draw_tab_images(rct_drawpixelinfo* dpi, rct_wind
{
for (int32_t i = 0; i < WINDOW_TITLE_EDITOR_TAB_COUNT; i++)
{
int32_t x = 0;
int32_t y = 0;
auto screenCoords = ScreenCoordsXY{ 0, 0 };
int32_t spriteId = window_title_editor_tab_sprites[i];
if (w->selected_tab == i)
{
@ -1062,12 +1061,14 @@ static void window_title_editor_draw_tab_images(rct_drawpixelinfo* dpi, rct_wind
}
if (i == 1)
{
x = 4;
y = 1;
screenCoords = ScreenCoordsXY{ 4, 1 };
}
gfx_draw_sprite(
dpi, spriteId, w->windowPos.x + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left + x,
w->windowPos.y + w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top + y, 0);
dpi, spriteId,
w->windowPos + screenCoords
+ ScreenCoordsXY{ w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left,
w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top },
0);
}
}

View File

@ -97,8 +97,7 @@ static void window_title_menu_mouseup(rct_window* w, rct_widgetindex widgetIndex
*/
static void window_title_logo_paint(rct_window* w, rct_drawpixelinfo* dpi)
{
int32_t x = 2;
int32_t y = 2;
gfx_draw_sprite(dpi, SPR_G2_LOGO, w->windowPos.x + x, w->windowPos.y + y, 0);
gfx_draw_sprite(dpi, SPR_G2_TITLE, w->windowPos.x + x + 104, w->windowPos.y + y + 18, 0);
auto screenCoords = w->windowPos + ScreenCoordsXY{ 2, 2 };
gfx_draw_sprite(dpi, SPR_G2_LOGO, screenCoords, 0);
gfx_draw_sprite(dpi, SPR_G2_TITLE, screenCoords + ScreenCoordsXY{ 104, 18 }, 0);
}

View File

@ -615,7 +615,7 @@ static void window_scenarioselect_scrollpaint(rct_window* w, rct_drawpixelinfo*
if (isCompleted)
{
// Draw completion tick
gfx_draw_sprite(dpi, SPR_MENU_CHECKMARK, wide ? 500 : 395, y + 1, 0);
gfx_draw_sprite(dpi, SPR_MENU_CHECKMARK, { wide ? 500 : 395, y + 1 }, 0);
// Draw completion score
const utf8* completedByName = "???";

View File

@ -856,7 +856,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (widget_is_pressed(w, WIDX_STAFF))
imgId++;
imgId |= SPRITE_ID_PALETTE_COLOUR_2(gStaffHandymanColour, gStaffMechanicColour);
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 0);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
}
// Draw fast forward button
@ -867,27 +867,28 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (widget_is_pressed(w, WIDX_FASTFORWARD))
screenPos.y++;
imgId = SPR_G2_FASTFORWARD;
gfx_draw_sprite(dpi, imgId, screenPos.x + 6, screenPos.y + 3, 0);
gfx_draw_sprite(dpi, imgId, screenPos + ScreenCoordsXY{ 6, 3 }, 0);
for (int32_t i = 0; i < gGameSpeed && gGameSpeed <= 4; i++)
{
gfx_draw_sprite(dpi, SPR_G2_SPEED_ARROW, screenPos.x + 5 + i * 5, screenPos.y + 15, 0);
gfx_draw_sprite(dpi, SPR_G2_SPEED_ARROW, screenPos + ScreenCoordsXY{ 5 + i * 5, 15 }, 0);
}
for (int32_t i = 0; i < 3 && i < gGameSpeed - 4 && gGameSpeed >= 5; i++)
{
gfx_draw_sprite(dpi, SPR_G2_HYPER_ARROW, screenPos.x + 5 + i * 6, screenPos.y + 15, 0);
gfx_draw_sprite(dpi, SPR_G2_HYPER_ARROW, screenPos + ScreenCoordsXY{ 5 + i * 6, 15 }, 0);
}
}
// Draw cheats button
if (window_top_toolbar_widgets[WIDX_CHEATS].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_CHEATS].left - 1,
w->windowPos.y + window_top_toolbar_widgets[WIDX_CHEATS].top - 1 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_CHEATS].left - 1,
window_top_toolbar_widgets[WIDX_CHEATS].top - 1 };
if (widget_is_pressed(w, WIDX_CHEATS))
screenPos.y++;
imgId = SPR_G2_SANDBOX;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 3);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
// Draw an overlay if clearance checks are disabled
if (gCheatsDisableClearanceChecks)
@ -901,69 +902,72 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw chat button
if (window_top_toolbar_widgets[WIDX_CHAT].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_CHAT].left,
w->windowPos.y + window_top_toolbar_widgets[WIDX_CHAT].top - 2 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_CHAT].left, window_top_toolbar_widgets[WIDX_CHAT].top - 2 };
if (widget_is_pressed(w, WIDX_CHAT))
screenPos.y++;
imgId = SPR_G2_CHAT;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 3);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
}
// Draw debug button
if (window_top_toolbar_widgets[WIDX_DEBUG].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_DEBUG].left,
w->windowPos.y + window_top_toolbar_widgets[WIDX_DEBUG].top - 1 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_DEBUG].left, window_top_toolbar_widgets[WIDX_DEBUG].top - 1 };
if (widget_is_pressed(w, WIDX_DEBUG))
screenPos.y++;
imgId = SPR_TAB_GEARS_0;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 3);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
}
// Draw research button
if (window_top_toolbar_widgets[WIDX_RESEARCH].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_RESEARCH].left - 1,
w->windowPos.y + window_top_toolbar_widgets[WIDX_RESEARCH].top };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_RESEARCH].left - 1,
window_top_toolbar_widgets[WIDX_RESEARCH].top };
if (widget_is_pressed(w, WIDX_RESEARCH))
screenPos.y++;
imgId = SPR_TAB_FINANCES_RESEARCH_0;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 0);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
}
// Draw finances button
if (window_top_toolbar_widgets[WIDX_FINANCES].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_FINANCES].left + 3,
w->windowPos.y + window_top_toolbar_widgets[WIDX_FINANCES].top + 1 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_FINANCES].left + 3,
window_top_toolbar_widgets[WIDX_FINANCES].top + 1 };
if (widget_is_pressed(w, WIDX_FINANCES))
screenPos.y++;
imgId = SPR_FINANCE;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 0);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
}
// Draw news button
if (window_top_toolbar_widgets[WIDX_NEWS].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_NEWS].left + 3,
w->windowPos.y + window_top_toolbar_widgets[WIDX_NEWS].top + 0 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_NEWS].left + 3, window_top_toolbar_widgets[WIDX_NEWS].top + 0 };
if (widget_is_pressed(w, WIDX_NEWS))
screenPos.y++;
imgId = SPR_G2_TAB_NEWS;
gfx_draw_sprite(dpi, imgId, screenPos.x, screenPos.y, 0);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
}
// Draw network button
if (window_top_toolbar_widgets[WIDX_NETWORK].type != WWT_EMPTY)
{
screenPos = { w->windowPos.x + window_top_toolbar_widgets[WIDX_NETWORK].left + 3,
w->windowPos.y + window_top_toolbar_widgets[WIDX_NETWORK].top + 0 };
screenPos = w->windowPos
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_NETWORK].left + 3,
window_top_toolbar_widgets[WIDX_NETWORK].top + 0 };
if (widget_is_pressed(w, WIDX_NETWORK))
screenPos.y++;
// Draw (de)sync icon.
imgId = (network_is_desynchronised() ? SPR_G2_MULTIPLAYER_DESYNC : SPR_G2_MULTIPLAYER_SYNC);
gfx_draw_sprite(dpi, imgId, screenPos.x + 3, screenPos.y + 11, 0);
gfx_draw_sprite(dpi, imgId, screenPos + ScreenCoordsXY{ 3, 11 }, 0);
// Draw number of players.
int32_t player_count = network_get_num_players();

View File

@ -522,14 +522,14 @@ static void window_track_place_paint(rct_window* w, rct_drawpixelinfo* dpi)
g1temp.width = TRACK_MINI_PREVIEW_WIDTH;
g1temp.height = TRACK_MINI_PREVIEW_HEIGHT;
gfx_set_g1_element(SPR_TEMP, &g1temp);
gfx_draw_sprite(&clippedDpi, SPR_TEMP | SPRITE_ID_PALETTE_COLOUR_1(NOT_TRANSLUCENT(w->colours[0])), 0, 0, 0);
gfx_draw_sprite(&clippedDpi, SPR_TEMP | SPRITE_ID_PALETTE_COLOUR_1(NOT_TRANSLUCENT(w->colours[0])), { 0, 0 }, 0);
}
// Price
if (_window_track_place_last_cost != MONEY32_UNDEFINED && !(gParkFlags & PARK_FLAGS_NO_MONEY))
{
gfx_draw_string_centred(
dpi, STR_COST_LABEL, { w->windowPos.x + 88, w->windowPos.y + 94 }, COLOUR_BLACK, &_window_track_place_last_cost);
dpi, STR_COST_LABEL, w->windowPos + ScreenCoordsXY{ 88, 94 }, COLOUR_BLACK, &_window_track_place_last_cost);
}
}

View File

@ -549,7 +549,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi)
g1temp.flags = G1_FLAG_BMP;
gfx_set_g1_element(SPR_TEMP, &g1temp);
drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, trackPreview.x, trackPreview.y, 0);
gfx_draw_sprite(dpi, SPR_TEMP, trackPreview, 0);
screenPos.y = w->windowPos.y + widget->bottom - 12;

View File

@ -745,7 +745,7 @@ void gfx_draw_pickedup_peep(rct_drawpixelinfo* dpi)
{
if (gPickupPeepImage != UINT32_MAX)
{
gfx_draw_sprite(dpi, gPickupPeepImage, gPickupPeepX, gPickupPeepY, 0);
gfx_draw_sprite(dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }, 0);
}
}

View File

@ -629,7 +629,6 @@ size_t ImageListGetMaximum();
void FASTCALL gfx_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_bmp_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_rle_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image_id, int32_t x, int32_t y, uint32_t tertiary_colour);
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, uint32_t tertiary_colour);
void FASTCALL gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image_id, int32_t x, int32_t y, const PaletteMap& paletteMap);
void FASTCALL gfx_draw_sprite_raw_masked(rct_drawpixelinfo* dpi, int32_t x, int32_t y, int32_t maskImage, int32_t colourImage);

View File

@ -254,11 +254,6 @@ void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, const Scree
}
}
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, int32_t x, int32_t y, uint32_t tertiary_colour)
{
gfx_draw_sprite(dpi, image, { x, y }, tertiary_colour);
}
void FASTCALL gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image, int32_t x, int32_t y, const PaletteMap& paletteMap)
{
auto drawingEngine = dpi->DrawingEngine;