Allow passing ImageId into gfx_draw_sprite()

This commit is contained in:
Michael Steenbeek 2021-03-23 11:58:09 +01:00 committed by GitHub
parent ccfa22c230
commit a5a63f839a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 183 additions and 214 deletions

View File

@ -135,7 +135,7 @@ static void WidgetFrameDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind
// Draw the resize sprite at the bottom right corner // Draw the resize sprite at the bottom right corner
leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 }; leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 };
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), leftTop, 0); gfx_draw_sprite(dpi, ImageId(SPR_RESIZE, colour & 0x7F), leftTop);
} }
/** /**
@ -166,7 +166,7 @@ static void WidgetResizeDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetin
// Draw the resize sprite at the bottom right corner // Draw the resize sprite at the bottom right corner
leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 }; leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 };
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), leftTop, 0); gfx_draw_sprite(dpi, ImageId(SPR_RESIZE, colour & 0x7F), leftTop);
} }
/** /**
@ -246,7 +246,7 @@ static void WidgetTabDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex
uint32_t image = widget->image + 2; uint32_t image = widget->image + 2;
// Draw disabled image // Draw disabled image
gfx_draw_sprite(dpi, image | (colour << 19), leftTop, 0); gfx_draw_sprite(dpi, ImageId(image, colour), leftTop);
} }
/** /**
@ -835,7 +835,7 @@ static void WidgetDrawImage(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind
else else
image |= colour << 19; image |= colour << 19;
gfx_draw_sprite(dpi, image, screenCoords, 0); gfx_draw_sprite(dpi, ImageId::FromUInt32(image), screenCoords);
} }
} }

View File

@ -866,7 +866,7 @@ namespace OpenRCT2::Ui::Windows
auto imageOffset = frame % tab.imageFrameCount; auto imageOffset = frame % tab.imageFrameCount;
image = image.WithIndex(image.GetIndex() + imageOffset); image = image.WithIndex(image.GetIndex() + imageOffset);
} }
gfx_draw_sprite(&dpi, image.ToUInt32(), leftTop, image.GetTertiary()); gfx_draw_sprite(&dpi, image, leftTop);
} }
tabIndex++; tabIndex++;
} }

View File

@ -227,7 +227,8 @@ namespace OpenRCT2::Scripting
img = img.WithSecondary(*_secondaryColour); img = img.WithSecondary(*_secondaryColour);
} }
} }
gfx_draw_sprite(&_dpi, static_cast<int32_t>(img.ToUInt32()), { x, y }, _ternaryColour.value_or(0));
gfx_draw_sprite(&_dpi, img.WithTertiary(_ternaryColour.value_or(0)), { x, y });
} }
void line(int32_t x1, int32_t y1, int32_t x2, int32_t y2) void line(int32_t x1, int32_t y1, int32_t x2, int32_t y2)

View File

@ -200,7 +200,7 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ lineHeight; + lineHeight;
rct_size16 logoSize = gfx_get_sprite_size(SPR_G2_LOGO); rct_size16 logoSize = gfx_get_sprite_size(SPR_G2_LOGO);
gfx_draw_sprite(dpi, SPR_G2_LOGO, aboutCoords - ScreenCoordsXY{ logoSize.width / 2, 0 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_G2_LOGO), aboutCoords - ScreenCoordsXY{ logoSize.width / 2, 0 });
aboutCoords.y += logoSize.height + lineHeight * 2; aboutCoords.y += logoSize.height + lineHeight * 2;
// About OpenRCT2 text // About OpenRCT2 text
@ -297,7 +297,7 @@ static void window_about_rct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
DrawTextBasic(dpi, screenCoords, STR_LICENSED_TO_INFOGRAMES_INTERACTIVE_INC, {}, { TextAlignment::CENTRE }); DrawTextBasic(dpi, screenCoords, STR_LICENSED_TO_INFOGRAMES_INTERACTIVE_INC, {}, { TextAlignment::CENTRE });
// Images // Images
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, { w->windowPos.x + 92, yPage + 24 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_CREDITS_CHRIS_SAWYER_SMALL), { w->windowPos.x + 92, yPage + 24 });
// Licence // Licence
} }

View File

@ -754,7 +754,7 @@ private:
if (page == WINDOW_CHEATS_PAGE_MONEY) if (page == WINDOW_CHEATS_PAGE_MONEY)
sprite_idx += (frame_no / 2) % 8; sprite_idx += (frame_no / 2) % 8;
gfx_draw_sprite( gfx_draw_sprite(
&dpi, sprite_idx, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_1].left, widgets[WIDX_TAB_1].top }, 0); &dpi, ImageId(sprite_idx), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_1].left, widgets[WIDX_TAB_1].top });
} }
// Guests tab // Guests tab
@ -764,15 +764,14 @@ private:
if (page == WINDOW_CHEATS_PAGE_GUESTS) if (page == WINDOW_CHEATS_PAGE_GUESTS)
sprite_idx += (frame_no / 3) % 8; sprite_idx += (frame_no / 3) % 8;
gfx_draw_sprite( gfx_draw_sprite(
&dpi, sprite_idx, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top }, 0); &dpi, ImageId(sprite_idx), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top });
} }
// Misc tab // Misc tab
if (!IsWidgetDisabled(WIDX_TAB_3)) if (!IsWidgetDisabled(WIDX_TAB_3))
{ {
uint32_t sprite_idx = SPR_TAB_PARK;
gfx_draw_sprite( gfx_draw_sprite(
&dpi, sprite_idx, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_3].left, widgets[WIDX_TAB_3].top }, 0); &dpi, ImageId(SPR_TAB_PARK), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_3].left, widgets[WIDX_TAB_3].top });
} }
// Rides tab // Rides tab
@ -782,7 +781,7 @@ private:
if (page == WINDOW_CHEATS_PAGE_RIDES) if (page == WINDOW_CHEATS_PAGE_RIDES)
sprite_idx += (frame_no / 4) % 16; sprite_idx += (frame_no / 4) % 16;
gfx_draw_sprite( gfx_draw_sprite(
&dpi, sprite_idx, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_4].left, widgets[WIDX_TAB_4].top }, 0); &dpi, ImageId(sprite_idx), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_4].left, widgets[WIDX_TAB_4].top });
} }
} }

View File

@ -345,9 +345,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
image++; image++;
gfx_draw_sprite( gfx_draw_sprite(
dpi, image, dpi, ImageId::FromUInt32(image),
w->windowPos + ScreenCoordsXY{ 2 + (cell_x * _dropdown_item_width), 2 + (cell_y * _dropdown_item_height) }, w->windowPos + ScreenCoordsXY{ 2 + (cell_x * _dropdown_item_width), 2 + (cell_y * _dropdown_item_height) });
0);
} }
else else
{ {

View File

@ -441,11 +441,10 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (drawPreviousButton) if (drawPreviousButton)
{ {
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_PREVIOUS, dpi, ImageId(SPR_PREVIOUS),
w->windowPos w->windowPos
+ ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6, + ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6,
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 }, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 });
0);
colour_t textColour = NOT_TRANSLUCENT(w->colours[1]); colour_t textColour = NOT_TRANSLUCENT(w->colours[1]);
if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR
@ -471,11 +470,10 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EditorStep::RollercoasterDesigner) if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EditorStep::RollercoasterDesigner)
{ {
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_NEXT, dpi, ImageId(SPR_NEXT),
w->windowPos w->windowPos
+ ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29, + ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29,
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 }, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 });
0);
colour_t textColour = NOT_TRANSLUCENT(w->colours[1]); colour_t textColour = NOT_TRANSLUCENT(w->colours[1]);

View File

@ -504,7 +504,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
// Tab image // Tab image
auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top }; auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top };
gfx_draw_sprite(dpi, SPR_TAB_FINANCES_RESEARCH_0 + (w->frame_no / 2) % 8, screenPos, 0); gfx_draw_sprite(dpi, ImageId(SPR_TAB_FINANCES_RESEARCH_0 + (w->frame_no / 2) % 8), screenPos);
// Pre-researched items label // Pre-researched items label
screenPos = w->windowPos screenPos = w->windowPos

View File

@ -953,9 +953,9 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
widget = &w->widgets[WIDX_TAB_1 + i]; widget = &w->widgets[WIDX_TAB_1 + i];
if (widget->type != WindowWidgetType::Empty) if (widget->type != WindowWidgetType::Empty)
{ {
auto image = ObjectSelectionPages[i].Image; auto image = ImageId(ObjectSelectionPages[i].Image);
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, image, screenPos, 0); gfx_draw_sprite(dpi, image, screenPos);
} }
} }
@ -983,7 +983,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
spriteIndex += (i == 4 ? ThrillRidesTabAnimationSequence[frame] : frame); spriteIndex += (i == 4 ? ThrillRidesTabAnimationSequence[frame] : frame);
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, spriteIndex | (w->colours[1] << 19), screenPos, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex, w->colours[1]), screenPos);
} }
} }

View File

@ -267,7 +267,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN) if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN)
spriteIndex += (w->frame_no / 4) % 16; spriteIndex += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
// Tab 2 // Tab 2
if (!(w->disabled_widgets & (1 << WIDX_TAB_2))) if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
@ -277,7 +277,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_RIDES) if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_RIDES)
spriteIndex += (w->frame_no / 4) % 16; spriteIndex += (w->frame_no / 4) % 16;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
} }
} }

View File

@ -376,7 +376,7 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_FINANCIAL) if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_FINANCIAL)
spriteIndex += (w->frame_no / 2) % 8; spriteIndex += (w->frame_no / 2) % 8;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
// Tab 2 // Tab 2
widget = &w->widgets[WIDX_TAB_2]; widget = &w->widgets[WIDX_TAB_2];
@ -384,12 +384,12 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_GUESTS) if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_GUESTS)
spriteIndex += (w->frame_no / 4) % 8; spriteIndex += (w->frame_no / 4) % 8;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
// Tab 3 // Tab 3
widget = &w->widgets[WIDX_TAB_3]; widget = &w->widgets[WIDX_TAB_3];
spriteIndex = SPR_TAB_PARK; spriteIndex = SPR_TAB_PARK;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0); gfx_draw_sprite(dpi, ImageId(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->left, widget->top });
} }
/** /**

View File

@ -1364,7 +1364,8 @@ static void window_finances_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
} }
gfx_draw_sprite( gfx_draw_sprite(
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0); dpi, ImageId(spriteIndex),
w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top });
} }
} }

View File

@ -612,7 +612,7 @@ static void window_footpath_paint(rct_window* w, rct_drawpixelinfo* dpi)
screenCoords = w->windowPos screenCoords = w->windowPos
+ ScreenCoordsXY{ window_footpath_widgets[WIDX_CONSTRUCT].midX(), + ScreenCoordsXY{ window_footpath_widgets[WIDX_CONSTRUCT].midX(),
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60 }; window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60 };
gfx_draw_sprite(dpi, image, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image), screenCoords);
// Draw build this... label // Draw build this... label
screenCoords = w->windowPos screenCoords = w->windowPos

View File

@ -472,8 +472,8 @@ static void window_game_bottom_toolbar_draw_park_rating(
} }
// Draw thumbs on the sides // Draw thumbs on the sides
gfx_draw_sprite(dpi, SPR_RATING_LOW, { x - 14, y }, 0); gfx_draw_sprite(dpi, ImageId(SPR_RATING_LOW), { x - 14, y });
gfx_draw_sprite(dpi, SPR_RATING_HIGH, { x + 114, y }, 0); gfx_draw_sprite(dpi, ImageId(SPR_RATING_HIGH), { x + 114, y });
} }
static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi, rct_window* w) static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi, rct_window* w)
@ -528,7 +528,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
// Current weather // Current weather
auto currentWeatherSpriteId = climate_get_weather_sprite_id(gClimateCurrent); auto currentWeatherSpriteId = climate_get_weather_sprite_id(gClimateCurrent);
gfx_draw_sprite(dpi, currentWeatherSpriteId, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(currentWeatherSpriteId), screenCoords);
// Next weather // Next weather
auto nextWeatherSpriteId = climate_get_weather_sprite_id(gClimateNext); auto nextWeatherSpriteId = climate_get_weather_sprite_id(gClimateNext);
@ -536,8 +536,8 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
{ {
if (gClimateUpdateTimer < 960) if (gClimateUpdateTimer < 960)
{ {
gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, screenCoords + ScreenCoordsXY{ 27, 5 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_NEXT_WEATHER), screenCoords + ScreenCoordsXY{ 27, 5 });
gfx_draw_sprite(dpi, nextWeatherSpriteId, screenCoords + ScreenCoordsXY{ 40, 0 }, 0); gfx_draw_sprite(dpi, ImageId(nextWeatherSpriteId), screenCoords + ScreenCoordsXY{ 40, 0 });
} }
} }
} }
@ -573,7 +573,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
switch (newsItem->Type) switch (newsItem->Type)
{ {
case News::ItemType::Ride: case News::ItemType::Ride:
gfx_draw_sprite(dpi, SPR_RIDE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_RIDE), screenCoords);
break; break;
case News::ItemType::PeepOnRide: case News::ItemType::PeepOnRide:
case News::ItemType::Peep: case News::ItemType::Peep:
@ -602,48 +602,37 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
image_id_base += w->frame_no & 0xFFFFFFFC; image_id_base += w->frame_no & 0xFFFFFFFC;
image_id_base++; image_id_base++;
uint32_t image_id = image_id_base; auto image_id = ImageId(image_id_base, peep->TshirtColour, peep->TrousersColour);
image_id |= SPRITE_ID_PALETTE_COLOUR_2(peep->TshirtColour, peep->TrousersColour); gfx_draw_sprite(&cliped_dpi, image_id, clipCoords);
gfx_draw_sprite(&cliped_dpi, image_id, clipCoords, 0);
if (image_id_base >= 0x2A1D && image_id_base < 0x2A3D) if (image_id_base >= 0x2A1D && image_id_base < 0x2A3D)
{ {
image_id_base += 32; gfx_draw_sprite(&cliped_dpi, ImageId(image_id_base + 32, peep->BalloonColour), clipCoords);
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
} }
else if (image_id_base >= 0x2BBD && image_id_base < 0x2BDD) else if (image_id_base >= 0x2BBD && image_id_base < 0x2BDD)
{ {
image_id_base += 32; gfx_draw_sprite(&cliped_dpi, ImageId(image_id_base + 32, peep->UmbrellaColour), clipCoords);
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
} }
else if (image_id_base >= 0x29DD && image_id_base < 0x29FD) else if (image_id_base >= 0x29DD && image_id_base < 0x29FD)
{ {
image_id_base += 32; gfx_draw_sprite(&cliped_dpi, ImageId(image_id_base + 32, peep->HatColour), clipCoords);
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
} }
break; break;
} }
case News::ItemType::Money: case News::ItemType::Money:
gfx_draw_sprite(dpi, SPR_FINANCE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_FINANCE), screenCoords);
break; break;
case News::ItemType::Research: case News::ItemType::Research:
gfx_draw_sprite(dpi, (newsItem->Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE), screenCoords, 0); gfx_draw_sprite(dpi, ImageId(newsItem->Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE), screenCoords);
break; break;
case News::ItemType::Peeps: case News::ItemType::Peeps:
gfx_draw_sprite(dpi, SPR_GUESTS, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_GUESTS), screenCoords);
break; break;
case News::ItemType::Award: case News::ItemType::Award:
gfx_draw_sprite(dpi, SPR_AWARD, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_AWARD), screenCoords);
break; break;
case News::ItemType::Graph: case News::ItemType::Graph:
gfx_draw_sprite(dpi, SPR_GRAPH, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_GRAPH), screenCoords);
break; break;
case News::ItemType::Null: case News::ItemType::Null:
case News::ItemType::Blank: case News::ItemType::Blank:

View File

@ -772,31 +772,25 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
} }
animationFrame += animationFrameOffset; animationFrame += animationFrameOffset;
int32_t sprite_id = animationFrame | SPRITE_ID_PALETTE_COLOUR_2(peep->TshirtColour, peep->TrousersColour); auto sprite_id = ImageId(animationFrame, peep->TshirtColour, peep->TrousersColour);
gfx_draw_sprite(&clip_dpi, sprite_id, screenCoords, 0); gfx_draw_sprite(&clip_dpi, sprite_id, screenCoords);
// If holding a balloon // If holding a balloon
if (animationFrame >= 0x2A1D && animationFrame < 0x2A3D) if (animationFrame >= 0x2A1D && animationFrame < 0x2A3D)
{ {
animationFrame += 32; gfx_draw_sprite(&clip_dpi, ImageId(animationFrame + 32, peep->BalloonColour), screenCoords);
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
} }
// If holding umbrella // If holding umbrella
if (animationFrame >= 0x2BBD && animationFrame < 0x2BDD) if (animationFrame >= 0x2BBD && animationFrame < 0x2BDD)
{ {
animationFrame += 32; gfx_draw_sprite(&clip_dpi, ImageId(animationFrame + 32, peep->UmbrellaColour), screenCoords);
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
} }
// If wearing hat // If wearing hat
if (animationFrame >= 0x29DD && animationFrame < 0x29FD) if (animationFrame >= 0x29DD && animationFrame < 0x29FD)
{ {
animationFrame += 32; gfx_draw_sprite(&clip_dpi, ImageId(animationFrame + 32, peep->HatColour), screenCoords);
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
} }
} }
@ -835,7 +829,7 @@ static void window_guest_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
break; break;
} }
} }
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -857,7 +851,7 @@ static void window_guest_rides_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
image_id += (w->frame_no / 4) & 0xF; image_id += (w->frame_no / 4) & 0xF;
} }
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -879,7 +873,7 @@ static void window_guest_finance_tab_paint(rct_window* w, rct_drawpixelinfo* dpi
image_id += (w->frame_no / 2) & 0x7; image_id += (w->frame_no / 2) & 0x7;
} }
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -901,7 +895,7 @@ static void window_guest_thoughts_tab_paint(rct_window* w, rct_drawpixelinfo* dp
image_id += (w->frame_no / 2) & 0x7; image_id += (w->frame_no / 2) & 0x7;
} }
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -916,9 +910,7 @@ static void window_guest_inventory_tab_paint(rct_window* w, rct_drawpixelinfo* d
rct_widget* widget = &w->widgets[WIDX_TAB_6]; rct_widget* widget = &w->widgets[WIDX_TAB_6];
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
int32_t image_id = SPR_TAB_GUEST_INVENTORY; gfx_draw_sprite(dpi, ImageId(SPR_TAB_GUEST_INVENTORY), screenCoords);
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
} }
static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi) static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
@ -935,7 +927,7 @@ static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
image_id += (w->frame_no / 2) & 0x3; image_id += (w->frame_no / 2) & 0x3;
} }
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -960,7 +952,7 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_viewport* viewport = w->viewport; rct_viewport* viewport = w->viewport;
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON) if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
{ {
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_HEARING_VIEWPORT), w->windowPos + ScreenCoordsXY{ 2, 2 });
} }
} }

View File

@ -643,12 +643,15 @@ private:
auto i = (_selectedTab == TabId::Individual ? _tabAnimationIndex & ~3 : 0); auto i = (_selectedTab == TabId::Individual ? _tabAnimationIndex & ~3 : 0);
i += GetPeepAnimation(PeepSpriteType::Normal).base_image + 1; i += GetPeepAnimation(PeepSpriteType::Normal).base_image + 1;
i |= 0xA1600000; i |= 0xA1600000;
gfx_draw_sprite(&dpi, i, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_1].midX(), widgets[WIDX_TAB_1].bottom - 6 }, 0); gfx_draw_sprite(
&dpi, ImageId::FromUInt32(i),
windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_1].midX(), widgets[WIDX_TAB_1].bottom - 6 });
// Tab 2 image // Tab 2 image
i = (_selectedTab == TabId::Summarised ? _tabAnimationIndex / 4 : 0); i = (_selectedTab == TabId::Summarised ? _tabAnimationIndex / 4 : 0);
gfx_draw_sprite( gfx_draw_sprite(
&dpi, SPR_TAB_GUESTS_0 + i, windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top }, 0); &dpi, ImageId(SPR_TAB_GUESTS_0 + i),
windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top });
} }
void DrawScrollIndividual(rct_drawpixelinfo& dpi) void DrawScrollIndividual(rct_drawpixelinfo& dpi)
@ -683,11 +686,11 @@ private:
{ {
case GuestViewType::Actions: case GuestViewType::Actions:
// Guest face // Guest face
gfx_draw_sprite(&dpi, get_peep_face_sprite_small(peep), { 118, y + 1 }, 0); gfx_draw_sprite(&dpi, ImageId(get_peep_face_sprite_small(peep)), { 118, y + 1 });
// Tracking icon // Tracking icon
if (peep->PeepFlags & PEEP_FLAGS_TRACKING) if (peep->PeepFlags & PEEP_FLAGS_TRACKING)
gfx_draw_sprite(&dpi, STR_ENTER_SELECTION_SIZE, { 112, y + 1 }, 0); gfx_draw_sprite(&dpi, ImageId(STR_ENTER_SELECTION_SIZE), { 112, y + 1 });
// Action // Action
ft = Formatter(); ft = Formatter();
@ -743,8 +746,8 @@ private:
for (uint32_t j = 0; j < std::size(group.Faces) && j < group.NumGuests; j++) for (uint32_t j = 0; j < std::size(group.Faces) && j < group.NumGuests; j++)
{ {
gfx_draw_sprite( gfx_draw_sprite(
&dpi, group.Faces[j] + SPR_PEEP_SMALL_FACE_VERY_VERY_UNHAPPY, { static_cast<int32_t>(j) * 8, y + 12 }, &dpi, ImageId(group.Faces[j] + SPR_PEEP_SMALL_FACE_VERY_VERY_UNHAPPY),
0); { static_cast<int32_t>(j) * 8, y + 12 });
} }
// Draw action // Draw action

View File

@ -208,7 +208,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi)
g1temp.flags = G1_FLAG_BMP; g1temp.flags = G1_FLAG_BMP;
gfx_set_g1_element(SPR_TEMP, &g1temp); gfx_set_g1_element(SPR_TEMP, &g1temp);
drawing_engine_invalidate_image(SPR_TEMP); drawing_engine_invalidate_image(SPR_TEMP);
gfx_draw_sprite(dpi, SPR_TEMP, screenPos, 0); gfx_draw_sprite(dpi, ImageId(SPR_TEMP), screenPos);
screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 12 }; screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 12 };

View File

@ -272,8 +272,8 @@ public:
else if (gLandMountainMode) else if (gLandMountainMode)
{ {
screenCoords = { windowPos.x + previewWidget->left, windowPos.y + previewWidget->top }; screenCoords = { windowPos.x + previewWidget->left, windowPos.y + previewWidget->top };
int32_t sprite = gLandToolSize % 2 == 0 ? SPR_G2_MOUNTAIN_TOOL_EVEN : SPR_G2_MOUNTAIN_TOOL_ODD; auto sprite = ImageId(gLandToolSize % 2 == 0 ? SPR_G2_MOUNTAIN_TOOL_EVEN : SPR_G2_MOUNTAIN_TOOL_ODD);
gfx_draw_sprite(&dpi, sprite, screenCoords, 0); gfx_draw_sprite(&dpi, sprite, screenCoords);
WidgetDraw(&dpi, this, WIDX_DECREMENT); WidgetDraw(&dpi, this, WIDX_DECREMENT);
WidgetDraw(&dpi, this, WIDX_INCREMENT); WidgetDraw(&dpi, this, WIDX_INCREMENT);
} }

View File

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

View File

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

View File

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

View File

@ -613,10 +613,9 @@ static void window_new_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w
spriteIndex += page == WINDOW_NEW_RIDE_PAGE_THRILL ? ThrillRidesTabAnimationSequence[frame] : frame; spriteIndex += page == WINDOW_NEW_RIDE_PAGE_THRILL ? ThrillRidesTabAnimationSequence[frame] : frame;
spriteIndex |= w->colours[1] << 19;
gfx_draw_sprite( gfx_draw_sprite(
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0); dpi, ImageId(spriteIndex, w->colours[1]),
w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top });
} }
} }

View File

@ -268,7 +268,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
switch (newsItem.Type) switch (newsItem.Type)
{ {
case News::ItemType::Ride: case News::ItemType::Ride:
gfx_draw_sprite(dpi, SPR_RIDE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_RIDE), screenCoords);
break; break;
case News::ItemType::Peep: case News::ItemType::Peep:
case News::ItemType::PeepOnRide: case News::ItemType::PeepOnRide:
@ -301,23 +301,23 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
image_id += 0xA0000001; image_id += 0xA0000001;
image_id |= (peep->TshirtColour << 19) | (peep->TrousersColour << 24); image_id |= (peep->TshirtColour << 19) | (peep->TrousersColour << 24);
gfx_draw_sprite(&cliped_dpi, image_id, clipCoords, 0); gfx_draw_sprite(&cliped_dpi, ImageId::FromUInt32(image_id), clipCoords);
break; break;
} }
case News::ItemType::Money: case News::ItemType::Money:
gfx_draw_sprite(dpi, SPR_FINANCE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_FINANCE), screenCoords);
break; break;
case News::ItemType::Research: case News::ItemType::Research:
gfx_draw_sprite(dpi, newsItem.Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(newsItem.Assoc < 0x10000 ? SPR_NEW_SCENERY : SPR_NEW_RIDE), screenCoords);
break; break;
case News::ItemType::Peeps: case News::ItemType::Peeps:
gfx_draw_sprite(dpi, SPR_GUESTS, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_GUESTS), screenCoords);
break; break;
case News::ItemType::Award: case News::ItemType::Award:
gfx_draw_sprite(dpi, SPR_AWARD, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_AWARD), screenCoords);
break; break;
case News::ItemType::Graph: case News::ItemType::Graph:
gfx_draw_sprite(dpi, SPR_GRAPH, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_GRAPH), screenCoords);
break; break;
case News::ItemType::Null: case News::ItemType::Null:
case News::ItemType::Blank: case News::ItemType::Blank:
@ -339,7 +339,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32
press = 0x20; press = 0x20;
} }
gfx_fill_rect_inset(dpi, { screenCoords, screenCoords + ScreenCoordsXY{ 23, 23 } }, w->colours[2], press); gfx_fill_rect_inset(dpi, { screenCoords, screenCoords + ScreenCoordsXY{ 23, 23 } }, w->colours[2], press);
gfx_draw_sprite(dpi, SPR_LOCATE, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_LOCATE), screenCoords);
} }
y += itemHeight; y += itemHeight;

View File

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

View File

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

View File

@ -719,7 +719,7 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi)
{ {
window_draw_viewport(dpi, w); window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON) if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_HEARING_VIEWPORT), w->windowPos + ScreenCoordsXY{ 2, 2 });
} }
// Draw park closed / open label // Draw park closed / open label
@ -1618,7 +1618,7 @@ static void window_park_awards_paint(rct_window* w, rct_drawpixelinfo* dpi)
if (award->Time == 0) if (award->Time == 0)
continue; continue;
gfx_draw_sprite(dpi, ParkAwards[award->Type].sprite, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(ParkAwards[award->Type].sprite), screenCoords);
DrawTextWrapped(dpi, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text); DrawTextWrapped(dpi, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text);
screenCoords.y += 32; screenCoords.y += 32;
@ -1696,8 +1696,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
// Entrance tab // Entrance tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_1))) if (!(w->disabled_widgets & (1 << WIDX_TAB_1)))
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_TAB_PARK_ENTRANCE, dpi, ImageId(SPR_TAB_PARK_ENTRANCE),
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top }, 0); w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_1].left, w->widgets[WIDX_TAB_1].top });
// Rating tab // Rating tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_2))) if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
@ -1706,13 +1706,13 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_RATING) if (w->page == WINDOW_PARK_PAGE_RATING)
sprite_idx += (w->frame_no / 8) % 8; sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left, w->widgets[WIDX_TAB_2].top }, 0); dpi, ImageId(sprite_idx), w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left, w->widgets[WIDX_TAB_2].top });
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_RATING_HIGH, dpi, ImageId(SPR_RATING_HIGH),
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 7, w->widgets[WIDX_TAB_2].top + 1 }, 0); w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 7, w->widgets[WIDX_TAB_2].top + 1 });
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_RATING_LOW, dpi, ImageId(SPR_RATING_LOW),
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 16, w->widgets[WIDX_TAB_2].top + 12 }, 0); w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_2].left + 16, w->widgets[WIDX_TAB_2].top + 12 });
} }
// Guests tab // Guests tab
@ -1722,7 +1722,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_GUESTS) if (w->page == WINDOW_PARK_PAGE_GUESTS)
sprite_idx += (w->frame_no / 8) % 8; sprite_idx += (w->frame_no / 8) % 8;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].left, w->widgets[WIDX_TAB_3].top }, 0); dpi, ImageId(sprite_idx), w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].left, w->widgets[WIDX_TAB_3].top });
sprite_idx = GetPeepAnimation(PeepSpriteType::Normal).base_image + 1; sprite_idx = GetPeepAnimation(PeepSpriteType::Normal).base_image + 1;
if (w->page == WINDOW_PARK_PAGE_GUESTS) if (w->page == WINDOW_PARK_PAGE_GUESTS)
@ -1730,8 +1730,8 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
sprite_idx |= 0xA9E00000; sprite_idx |= 0xA9E00000;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].midX(), w->widgets[WIDX_TAB_3].bottom - 9 }, dpi, ImageId::FromUInt32(sprite_idx),
0); w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_3].midX(), w->widgets[WIDX_TAB_3].bottom - 9 });
} }
// Price tab // Price tab
@ -1741,7 +1741,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_PRICE) if (w->page == WINDOW_PARK_PAGE_PRICE)
sprite_idx += (w->frame_no / 2) % 8; sprite_idx += (w->frame_no / 2) % 8;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_4].left, w->widgets[WIDX_TAB_4].top }, 0); dpi, ImageId(sprite_idx), w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_4].left, w->widgets[WIDX_TAB_4].top });
} }
// Statistics tab // Statistics tab
@ -1751,7 +1751,7 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_STATS) if (w->page == WINDOW_PARK_PAGE_STATS)
sprite_idx += (w->frame_no / 4) % 7; sprite_idx += (w->frame_no / 4) % 7;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_5].left, w->widgets[WIDX_TAB_5].top }, 0); dpi, ImageId(sprite_idx), w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_5].left, w->widgets[WIDX_TAB_5].top });
} }
// Objective tab // Objective tab
@ -1761,13 +1761,14 @@ static void window_park_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
if (w->page == WINDOW_PARK_PAGE_OBJECTIVE) if (w->page == WINDOW_PARK_PAGE_OBJECTIVE)
sprite_idx += (w->frame_no / 4) % 16; sprite_idx += (w->frame_no / 4) % 16;
gfx_draw_sprite( gfx_draw_sprite(
dpi, sprite_idx, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_6].left, w->widgets[WIDX_TAB_6].top }, 0); dpi, ImageId(sprite_idx), w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_6].left, w->widgets[WIDX_TAB_6].top });
} }
// Awards tab // Awards tab
if (!(w->disabled_widgets & (1 << WIDX_TAB_7))) if (!(w->disabled_widgets & (1 << WIDX_TAB_7)))
gfx_draw_sprite( gfx_draw_sprite(
dpi, SPR_TAB_AWARDS, w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_7].left, w->widgets[WIDX_TAB_7].top }, 0); dpi, ImageId(SPR_TAB_AWARDS),
w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_TAB_7].left, w->widgets[WIDX_TAB_7].top });
} }
#pragma endregion #pragma endregion

View File

@ -567,15 +567,13 @@ 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) static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
{ {
rct_widget* widget; rct_widget* widget;
int32_t imageId;
// Tab 1 // Tab 1
if (!WidgetIsDisabled(w, WIDX_TAB_1)) if (!WidgetIsDisabled(w, WIDX_TAB_1))
{ {
widget = &w->widgets[WIDX_TAB_1]; widget = &w->widgets[WIDX_TAB_1];
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
imageId = SPR_PEEP_LARGE_FACE_NORMAL; gfx_draw_sprite(dpi, ImageId(SPR_PEEP_LARGE_FACE_NORMAL), screenCoords);
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
} }
// Tab 2 // Tab 2
@ -583,14 +581,14 @@ static void window_player_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
{ {
widget = &w->widgets[WIDX_TAB_2]; widget = &w->widgets[WIDX_TAB_2];
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
imageId = SPR_TAB_FINANCES_SUMMARY_0; int32_t imageId = SPR_TAB_FINANCES_SUMMARY_0;
if (w->page == WINDOW_PLAYER_PAGE_STATISTICS) if (w->page == WINDOW_PLAYER_PAGE_STATISTICS)
{ {
imageId += (w->frame_no / 2) & 7; imageId += (w->frame_no / 2) & 7;
} }
gfx_draw_sprite(dpi, imageId, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(imageId), screenCoords);
} }
} }

View File

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

View File

@ -942,7 +942,8 @@ static void window_ride_draw_tab_image(rct_drawpixelinfo* dpi, rct_window* w, in
} }
gfx_draw_sprite( gfx_draw_sprite(
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, 0); dpi, ImageId(spriteIndex),
w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top });
} }
} }
@ -978,8 +979,8 @@ static void window_ride_draw_tab_main(rct_drawpixelinfo* dpi, rct_window* w)
break; break;
} }
gfx_draw_sprite( gfx_draw_sprite(
dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top }, dpi, ImageId(spriteIndex),
0); w->windowPos + ScreenCoordsXY{ w->widgets[widgetIndex].left, w->widgets[widgetIndex].top });
} }
} }
} }
@ -1052,7 +1053,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19); spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS; spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
gfx_draw_sprite(&clipDPI, spriteIndex, screenCoords, vehicleColour.additional_2); gfx_draw_sprite(&clipDPI, ImageId::FromUInt32(spriteIndex, vehicleColour.additional_2), screenCoords);
} }
} }
@ -1075,7 +1076,8 @@ static void window_ride_draw_tab_customer(rct_drawpixelinfo* dpi, rct_window* w)
spriteIndex += 1; spriteIndex += 1;
spriteIndex |= 0xA9E00000; spriteIndex |= 0xA9E00000;
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 6 }, 0); gfx_draw_sprite(
dpi, ImageId::FromUInt32(spriteIndex), w->windowPos + ScreenCoordsXY{ widget->midX(), widget->bottom - 6 });
} }
} }
@ -2604,7 +2606,7 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi)
{ {
window_draw_viewport(dpi, w); window_draw_viewport(dpi, w);
if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON) if (w->viewport->flags & VIEWPORT_FLAG_SOUND_ON)
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_HEARING_VIEWPORT), w->windowPos + ScreenCoordsXY{ 2, 2 });
} }
// View dropdown // View dropdown
@ -4786,8 +4788,7 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Track // Track
if (ride->type == RIDE_TYPE_MAZE) if (ride->type == RIDE_TYPE_MAZE)
{ {
int32_t spriteIndex = MazeOptions[trackColour.supports].sprite; gfx_draw_sprite(dpi, ImageId(MazeOptions[trackColour.supports].sprite), screenCoords);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
} }
else else
{ {
@ -4795,16 +4796,14 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
int32_t spriteIndex = typeDescriptor.ColourPreview.Track; int32_t spriteIndex = typeDescriptor.ColourPreview.Track;
if (spriteIndex != 0) if (spriteIndex != 0)
{ {
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_2(trackColour.main, trackColour.additional); gfx_draw_sprite(dpi, ImageId(spriteIndex, trackColour.main, trackColour.additional), screenCoords);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
} }
// Supports // Supports
spriteIndex = typeDescriptor.ColourPreview.Supports; spriteIndex = typeDescriptor.ColourPreview.Supports;
if (spriteIndex != 0) if (spriteIndex != 0)
{ {
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_1(trackColour.supports); gfx_draw_sprite(dpi, ImageId(spriteIndex, trackColour.supports), screenCoords);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
} }
} }
} }
@ -4814,10 +4813,7 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ ScreenCoordsXY{ (widget->left + widget->right) / 2 - 8, (widget->bottom + widget->top) / 2 - 6 }; + ScreenCoordsXY{ (widget->left + widget->right) / 2 - 8, (widget->bottom + widget->top) / 2 - 6 };
ShopItem shopItem = rideEntry->shop_item[1] == ShopItem::None ? rideEntry->shop_item[0] : rideEntry->shop_item[1]; ShopItem shopItem = rideEntry->shop_item[1] == ShopItem::None ? rideEntry->shop_item[0] : rideEntry->shop_item[1];
int32_t spriteIndex = GetShopItemDescriptor(shopItem).Image; gfx_draw_sprite(dpi, ImageId(GetShopItemDescriptor(shopItem).Image, ride->track_colour[0].main), screenCoords);
spriteIndex |= SPRITE_ID_PALETTE_COLOUR_1(ride->track_colour[0].main);
gfx_draw_sprite(dpi, spriteIndex, screenCoords, 0);
} }
// Entrance preview // Entrance preview
@ -4898,7 +4894,7 @@ static void window_ride_colour_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
spriteIndex += rideVehicleEntry->base_image_id; spriteIndex += rideVehicleEntry->base_image_id;
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19); spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS; spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
gfx_draw_sprite(dpi, spriteIndex, screenCoords, vehicleColour.additional_2); gfx_draw_sprite(dpi, ImageId::FromUInt32(spriteIndex, vehicleColour.additional_2), screenCoords);
} }
#pragma endregion #pragma endregion

View File

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

View File

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

View File

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

View File

@ -492,7 +492,7 @@ private:
} }
const auto& widget = widgets[widgetIndex]; const auto& widget = widgets[widgetIndex];
gfx_draw_sprite(&dpi, imageId, windowPos + ScreenCoordsXY{ widget.left, widget.top }, 0); gfx_draw_sprite(&dpi, ImageId(imageId), windowPos + ScreenCoordsXY{ widget.left, widget.top });
} }
} }
} }

View File

@ -928,7 +928,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
rct_viewport* viewport = w->viewport; rct_viewport* viewport = w->viewport;
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON) if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
{ {
gfx_draw_sprite(dpi, SPR_HEARING_VIEWPORT, w->windowPos + ScreenCoordsXY{ 2, 2 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_HEARING_VIEWPORT), w->windowPos + ScreenCoordsXY{ 2, 2 });
} }
} }
@ -965,7 +965,7 @@ void window_staff_options_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
} }
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -987,7 +987,7 @@ void window_staff_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
} }
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top }; auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
gfx_draw_sprite(dpi, image_id, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(image_id), screenCoords);
} }
/** /**
@ -1033,31 +1033,24 @@ void window_staff_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
} }
ebx += eax; ebx += eax;
int32_t sprite_id = ebx | SPRITE_ID_PALETTE_COLOUR_2(peep->TshirtColour, peep->TrousersColour); gfx_draw_sprite(&clip_dpi, ImageId(ebx, peep->TshirtColour, peep->TrousersColour), screenCoords);
gfx_draw_sprite(&clip_dpi, sprite_id, screenCoords, 0);
// If holding a balloon // If holding a balloon
if (ebx >= 0x2A1D && ebx < 0x2A3D) if (ebx >= 0x2A1D && ebx < 0x2A3D)
{ {
ebx += 32; gfx_draw_sprite(&clip_dpi, ImageId(ebx + 32, peep->BalloonColour), screenCoords);
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
} }
// If holding umbrella // If holding umbrella
if (ebx >= 0x2BBD && ebx < 0x2BDD) if (ebx >= 0x2BBD && ebx < 0x2BDD)
{ {
ebx += 32; gfx_draw_sprite(&clip_dpi, ImageId(ebx + 32, peep->UmbrellaColour), screenCoords);
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
} }
// If wearing hat // If wearing hat
if (ebx >= 0x29DD && ebx < 0x29FD) if (ebx >= 0x29DD && ebx < 0x29FD)
{ {
ebx += 32; gfx_draw_sprite(&clip_dpi, ImageId(ebx + 32, peep->HatColour), screenCoords);
ebx |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
gfx_draw_sprite(&clip_dpi, ebx, screenCoords, 0);
} }
} }

View File

@ -416,7 +416,7 @@ public:
// True if a patrol path is set for the worker // True if a patrol path is set for the worker
if (gStaffModes[peep->StaffId] == StaffMode::Patrol) if (gStaffModes[peep->StaffId] == StaffMode::Patrol)
{ {
gfx_draw_sprite(&dpi, SPR_STAFF_PATROL_PATH, { nameColumnSize + 5, y }, 0); gfx_draw_sprite(&dpi, ImageId(SPR_STAFF_PATROL_PATH), { nameColumnSize + 5, y });
} }
auto staffOrderIcon_x = nameColumnSize + 20; auto staffOrderIcon_x = nameColumnSize + 20;
@ -429,7 +429,7 @@ public:
{ {
if (staffOrders & 1) if (staffOrders & 1)
{ {
gfx_draw_sprite(&dpi, staffOrderSprite, { staffOrderIcon_x, y }, 0); gfx_draw_sprite(&dpi, ImageId(staffOrderSprite), { staffOrderIcon_x, y });
} }
staffOrders = staffOrders >> 1; staffOrders = staffOrders >> 1;
staffOrderIcon_x += 9; staffOrderIcon_x += 9;
@ -439,7 +439,7 @@ public:
} }
else else
{ {
gfx_draw_sprite(&dpi, GetEntertainerCostumeSprite(peep->SpriteType), { staffOrderIcon_x, y }, 0); gfx_draw_sprite(&dpi, ImageId(GetEntertainerCostumeSprite(peep->SpriteType)), { staffOrderIcon_x, y });
} }
} }
@ -517,8 +517,8 @@ private:
const auto& widget = widgets[widgetIndex]; const auto& widget = widgets[widgetIndex];
auto imageId = (_selectedTab == tabIndex ? (_tabAnimationIndex & ~3) : 0); auto imageId = (_selectedTab == tabIndex ? (_tabAnimationIndex & ~3) : 0);
imageId += GetPeepAnimation(type).base_image + 1; imageId += GetPeepAnimation(type).base_image + 1;
imageId |= SPRITE_ID_PALETTE_COLOUR_1(colour); gfx_draw_sprite(
gfx_draw_sprite(&dpi, imageId, windowPos + ScreenCoordsXY{ (widget.left + widget.right) / 2, widget.bottom - 6 }, 0); &dpi, ImageId(imageId, colour), windowPos + ScreenCoordsXY{ (widget.left + widget.right) / 2, widget.bottom - 6 });
} }
void DrawTabImage(rct_drawpixelinfo& dpi, int32_t tabIndex, PeepSpriteType type) const void DrawTabImage(rct_drawpixelinfo& dpi, int32_t tabIndex, PeepSpriteType type) const
@ -532,7 +532,7 @@ private:
{ {
auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0); auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0);
imageId += GetPeepAnimation(type).base_image + 1; imageId += GetPeepAnimation(type).base_image + 1;
gfx_draw_sprite(&clippedDpi, imageId, { 15, 23 }, 0); gfx_draw_sprite(&clippedDpi, ImageId(imageId), { 15, 23 });
} }
} }

View File

@ -1064,11 +1064,10 @@ static void window_title_editor_draw_tab_images(rct_drawpixelinfo* dpi, rct_wind
screenCoords = ScreenCoordsXY{ 4, 1 }; screenCoords = ScreenCoordsXY{ 4, 1 };
} }
gfx_draw_sprite( gfx_draw_sprite(
dpi, spriteId, dpi, ImageId(spriteId),
w->windowPos + screenCoords w->windowPos + screenCoords
+ ScreenCoordsXY{ w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left, + ScreenCoordsXY{ w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].left,
w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top }, w->widgets[WIDX_TITLE_EDITOR_PRESETS_TAB + i].top });
0);
} }
} }

View File

@ -73,6 +73,6 @@ static void window_title_menu_mouseup(rct_window* w, rct_widgetindex widgetIndex
static void window_title_logo_paint(rct_window* w, rct_drawpixelinfo* dpi) static void window_title_logo_paint(rct_window* w, rct_drawpixelinfo* dpi)
{ {
auto screenCoords = w->windowPos + ScreenCoordsXY{ 2, 2 }; auto screenCoords = w->windowPos + ScreenCoordsXY{ 2, 2 };
gfx_draw_sprite(dpi, SPR_G2_LOGO, screenCoords, 0); gfx_draw_sprite(dpi, ImageId(SPR_G2_LOGO), screenCoords);
gfx_draw_sprite(dpi, SPR_G2_TITLE, screenCoords + ScreenCoordsXY{ 104, 18 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_G2_TITLE), screenCoords + ScreenCoordsXY{ 104, 18 });
} }

View File

@ -863,8 +863,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
imgId = SPR_TOOLBAR_STAFF; imgId = SPR_TOOLBAR_STAFF;
if (WidgetIsPressed(w, WIDX_STAFF)) if (WidgetIsPressed(w, WIDX_STAFF))
imgId++; imgId++;
imgId |= SPRITE_ID_PALETTE_COLOUR_2(gStaffHandymanColour, gStaffMechanicColour); gfx_draw_sprite(dpi, ImageId(imgId, gStaffHandymanColour, gStaffMechanicColour), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
} }
// Draw fast forward button // Draw fast forward button
@ -874,16 +873,15 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
w->windowPos.y + window_top_toolbar_widgets[WIDX_FASTFORWARD].top + 0 }; w->windowPos.y + window_top_toolbar_widgets[WIDX_FASTFORWARD].top + 0 };
if (WidgetIsPressed(w, WIDX_FASTFORWARD)) if (WidgetIsPressed(w, WIDX_FASTFORWARD))
screenPos.y++; screenPos.y++;
imgId = SPR_G2_FASTFORWARD; gfx_draw_sprite(dpi, ImageId(SPR_G2_FASTFORWARD), screenPos + ScreenCoordsXY{ 6, 3 });
gfx_draw_sprite(dpi, imgId, screenPos + ScreenCoordsXY{ 6, 3 }, 0);
for (int32_t i = 0; i < gGameSpeed && gGameSpeed <= 4; i++) for (int32_t i = 0; i < gGameSpeed && gGameSpeed <= 4; i++)
{ {
gfx_draw_sprite(dpi, SPR_G2_SPEED_ARROW, screenPos + ScreenCoordsXY{ 5 + i * 5, 15 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_G2_SPEED_ARROW), screenPos + ScreenCoordsXY{ 5 + i * 5, 15 });
} }
for (int32_t i = 0; i < 3 && i < gGameSpeed - 4 && gGameSpeed >= 5; i++) for (int32_t i = 0; i < 3 && i < gGameSpeed - 4 && gGameSpeed >= 5; i++)
{ {
gfx_draw_sprite(dpi, SPR_G2_HYPER_ARROW, screenPos + ScreenCoordsXY{ 5 + i * 6, 15 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_G2_HYPER_ARROW), screenPos + ScreenCoordsXY{ 5 + i * 6, 15 });
} }
} }
@ -895,8 +893,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_top_toolbar_widgets[WIDX_CHEATS].top - 1 }; window_top_toolbar_widgets[WIDX_CHEATS].top - 1 };
if (WidgetIsPressed(w, WIDX_CHEATS)) if (WidgetIsPressed(w, WIDX_CHEATS))
screenPos.y++; screenPos.y++;
imgId = SPR_G2_SANDBOX; gfx_draw_sprite(dpi, ImageId(SPR_G2_SANDBOX), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
// Draw an overlay if clearance checks are disabled // Draw an overlay if clearance checks are disabled
if (gCheatsDisableClearanceChecks) if (gCheatsDisableClearanceChecks)
@ -914,8 +911,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_CHAT].left, window_top_toolbar_widgets[WIDX_CHAT].top - 2 }; + ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_CHAT].left, window_top_toolbar_widgets[WIDX_CHAT].top - 2 };
if (WidgetIsPressed(w, WIDX_CHAT)) if (WidgetIsPressed(w, WIDX_CHAT))
screenPos.y++; screenPos.y++;
imgId = SPR_G2_CHAT; gfx_draw_sprite(dpi, ImageId(SPR_G2_CHAT), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
} }
// Draw debug button // Draw debug button
@ -925,8 +921,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_DEBUG].left, window_top_toolbar_widgets[WIDX_DEBUG].top - 1 }; + ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_DEBUG].left, window_top_toolbar_widgets[WIDX_DEBUG].top - 1 };
if (WidgetIsPressed(w, WIDX_DEBUG)) if (WidgetIsPressed(w, WIDX_DEBUG))
screenPos.y++; screenPos.y++;
imgId = SPR_TAB_GEARS_0; gfx_draw_sprite(dpi, ImageId(SPR_TAB_GEARS_0), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 3);
} }
// Draw research button // Draw research button
@ -937,8 +932,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_top_toolbar_widgets[WIDX_RESEARCH].top }; window_top_toolbar_widgets[WIDX_RESEARCH].top };
if (WidgetIsPressed(w, WIDX_RESEARCH)) if (WidgetIsPressed(w, WIDX_RESEARCH))
screenPos.y++; screenPos.y++;
imgId = SPR_TAB_FINANCES_RESEARCH_0; gfx_draw_sprite(dpi, ImageId(SPR_TAB_FINANCES_RESEARCH_0), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
} }
// Draw finances button // Draw finances button
@ -949,8 +943,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
window_top_toolbar_widgets[WIDX_FINANCES].top + 1 }; window_top_toolbar_widgets[WIDX_FINANCES].top + 1 };
if (WidgetIsPressed(w, WIDX_FINANCES)) if (WidgetIsPressed(w, WIDX_FINANCES))
screenPos.y++; screenPos.y++;
imgId = SPR_FINANCE; gfx_draw_sprite(dpi, ImageId(SPR_FINANCE), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
} }
// Draw news button // Draw news button
@ -960,8 +953,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_NEWS].left + 3, window_top_toolbar_widgets[WIDX_NEWS].top + 0 }; + ScreenCoordsXY{ window_top_toolbar_widgets[WIDX_NEWS].left + 3, window_top_toolbar_widgets[WIDX_NEWS].top + 0 };
if (WidgetIsPressed(w, WIDX_NEWS)) if (WidgetIsPressed(w, WIDX_NEWS))
screenPos.y++; screenPos.y++;
imgId = SPR_G2_TAB_NEWS; gfx_draw_sprite(dpi, ImageId(SPR_G2_TAB_NEWS), screenPos);
gfx_draw_sprite(dpi, imgId, screenPos, 0);
} }
// Draw network button // Draw network button
@ -975,7 +967,7 @@ static void window_top_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
// Draw (de)sync icon. // Draw (de)sync icon.
imgId = (network_is_desynchronised() ? SPR_G2_MULTIPLAYER_DESYNC : SPR_G2_MULTIPLAYER_SYNC); imgId = (network_is_desynchronised() ? SPR_G2_MULTIPLAYER_DESYNC : SPR_G2_MULTIPLAYER_SYNC);
gfx_draw_sprite(dpi, imgId, screenPos + ScreenCoordsXY{ 3, 11 }, 0); gfx_draw_sprite(dpi, ImageId(imgId), screenPos + ScreenCoordsXY{ 3, 11 });
// Draw number of players. // Draw number of players.
auto ft = Formatter(); auto ft = Formatter();

View File

@ -490,7 +490,7 @@ static void window_track_place_paint(rct_window* w, rct_drawpixelinfo* dpi)
g1temp.width = TRACK_MINI_PREVIEW_WIDTH; g1temp.width = TRACK_MINI_PREVIEW_WIDTH;
g1temp.height = TRACK_MINI_PREVIEW_HEIGHT; g1temp.height = TRACK_MINI_PREVIEW_HEIGHT;
gfx_set_g1_element(SPR_TEMP, &g1temp); 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, ImageId(SPR_TEMP, NOT_TRANSLUCENT(w->colours[0])), { 0, 0 });
} }
// Price // Price

View File

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

View File

@ -189,10 +189,10 @@ void intro_draw(rct_drawpixelinfo* dpi)
BORDER_COLOUR_PUBLISHER); BORDER_COLOUR_PUBLISHER);
// Draw Infogrames logo // Draw Infogrames logo
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_00, { (screenWidth / 2) - 320 + 69, _introStateCounter + 69 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_00), { (screenWidth / 2) - 320 + 69, _introStateCounter + 69 });
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_10, { (screenWidth / 2) - 320 + 319, _introStateCounter + 69 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_10), { (screenWidth / 2) - 320 + 319, _introStateCounter + 69 });
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_01, { (screenWidth / 2) - 320 + 69, _introStateCounter + 319 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_01), { (screenWidth / 2) - 320 + 69, _introStateCounter + 319 });
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_11, { (screenWidth / 2) - 320 + 319, _introStateCounter + 319 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_INFOGRAMES_11), { (screenWidth / 2) - 320 + 319, _introStateCounter + 319 });
break; break;
case IntroState::DeveloperBegin: case IntroState::DeveloperBegin:
gfx_clear(dpi, BACKROUND_COLOUR_DARK); gfx_clear(dpi, BACKROUND_COLOUR_DARK);
@ -202,8 +202,8 @@ void intro_draw(rct_drawpixelinfo* dpi)
gfx_clear(dpi, BACKROUND_COLOUR_DARK); gfx_clear(dpi, BACKROUND_COLOUR_DARK);
// Draw Chris Sawyer logo // Draw Chris Sawyer logo
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_00, { (screenWidth / 2) - 320 + 70, _introStateCounter }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_00), { (screenWidth / 2) - 320 + 70, _introStateCounter });
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_10, { (screenWidth / 2) - 320 + 320, _introStateCounter }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_CHRIS_SAWYER_10), { (screenWidth / 2) - 320 + 320, _introStateCounter });
break; break;
case IntroState::LogoFadeIn: case IntroState::LogoFadeIn:
if (_introStateCounter <= 0xFF00) if (_introStateCounter <= 0xFF00)
@ -292,10 +292,10 @@ static void screen_intro_draw_logo(rct_drawpixelinfo* dpi)
drawing_engine_invalidate_image(SPR_INTRO_LOGO_21); drawing_engine_invalidate_image(SPR_INTRO_LOGO_21);
gfx_clear(dpi, BACKROUND_COLOUR_LOGO); gfx_clear(dpi, BACKROUND_COLOUR_LOGO);
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_00, { imageX + 0, 0 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_00), { imageX + 0, 0 });
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_10, { imageX + 220, 0 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_10), { imageX + 220, 0 });
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_20, { imageX + 440, 0 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_20), { imageX + 440, 0 });
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_01, { imageX + 0, 240 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_01), { imageX + 0, 240 });
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_11, { imageX + 220, 240 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_11), { imageX + 220, 240 });
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_21, { imageX + 440, 240 }, 0); gfx_draw_sprite(dpi, ImageId(SPR_INTRO_LOGO_21), { imageX + 440, 240 });
} }

View File

@ -719,6 +719,7 @@ size_t ImageListGetMaximum();
void FASTCALL gfx_sprite_to_buffer(DrawSpriteArgs& args); void FASTCALL gfx_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_bmp_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_rle_sprite_to_buffer(DrawSpriteArgs& args);
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, ImageId image_id, const ScreenCoordsXY& coords);
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, 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 void FASTCALL
gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, const PaletteMap& paletteMap); gfx_draw_glyph(rct_drawpixelinfo* dpi, int32_t image_id, const ScreenCoordsXY& coords, const PaletteMap& paletteMap);

View File

@ -245,6 +245,11 @@ void gfx_draw_dashed_line(
} }
} }
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, ImageId image_id, const ScreenCoordsXY& coords)
{
gfx_draw_sprite(dpi, image_id.ToUInt32(), coords, image_id.GetTertiary());
}
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, uint32_t tertiary_colour) void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, uint32_t tertiary_colour)
{ {
auto drawingEngine = dpi->DrawingEngine; auto drawingEngine = dpi->DrawingEngine;