mirror of https://github.com/OpenRCT2/OpenRCT2.git
* Part of #12017 - create gfx_draw_sprite overload Part 1. Creates the overload and replaces about a half of the calls since there are too many for one PR. Co-authored-by: Tulio Leao <tupaschoal@gmail.com>
This commit is contained in:
parent
d2542194fa
commit
9d965ccfb6
|
@ -116,8 +116,7 @@ static void widget_frame_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
|
|||
rct_widget* widget = &w->widgets[widgetIndex];
|
||||
|
||||
// Resolve the absolute ltrb
|
||||
int32_t l = w->windowPos.x + widget->left;
|
||||
int32_t t = w->windowPos.y + widget->top;
|
||||
auto leftTop = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
int32_t r = w->windowPos.x + widget->right;
|
||||
int32_t b = w->windowPos.y + widget->bottom;
|
||||
|
||||
|
@ -128,7 +127,7 @@ static void widget_frame_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
|
|||
uint8_t colour = w->colours[widget->colour];
|
||||
|
||||
// Draw the frame
|
||||
gfx_fill_rect_inset(dpi, l, t, r, b, colour, press);
|
||||
gfx_fill_rect_inset(dpi, leftTop.x, leftTop.y, r, b, colour, press);
|
||||
|
||||
// Check if the window can be resized
|
||||
if (!(w->flags & WF_RESIZABLE))
|
||||
|
@ -137,9 +136,8 @@ static void widget_frame_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
|
|||
return;
|
||||
|
||||
// Draw the resize sprite at the bottom right corner
|
||||
l = w->windowPos.x + widget->right - 18;
|
||||
t = w->windowPos.y + widget->bottom - 18;
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
|
||||
leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 };
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), leftTop, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -152,8 +150,7 @@ static void widget_resize_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
|
|||
rct_widget* widget = &w->widgets[widgetIndex];
|
||||
|
||||
// Resolve the absolute ltrb
|
||||
int32_t l = w->windowPos.x + widget->left;
|
||||
int32_t t = w->windowPos.y + widget->top;
|
||||
auto leftTop = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
int32_t r = w->windowPos.x + widget->right;
|
||||
int32_t b = w->windowPos.y + widget->bottom;
|
||||
|
||||
|
@ -161,7 +158,7 @@ static void widget_resize_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
|
|||
uint8_t colour = w->colours[widget->colour];
|
||||
|
||||
// Draw the panel
|
||||
gfx_fill_rect_inset(dpi, l, t, r, b, colour, 0);
|
||||
gfx_fill_rect_inset(dpi, leftTop.x, leftTop.y, r, b, colour, 0);
|
||||
|
||||
// Check if the window can be resized
|
||||
if (!(w->flags & WF_RESIZABLE))
|
||||
|
@ -170,9 +167,8 @@ static void widget_resize_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
|
|||
return;
|
||||
|
||||
// Draw the resize sprite at the bottom right corner
|
||||
l = w->windowPos.x + widget->right - 18;
|
||||
t = w->windowPos.y + widget->bottom - 18;
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
|
||||
leftTop = w->windowPos + ScreenCoordsXY{ widget->right - 18, widget->bottom - 18 };
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), leftTop, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -240,15 +236,14 @@ static void widget_tab_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetind
|
|||
}
|
||||
|
||||
// Resolve the absolute ltrb
|
||||
int32_t l = w->windowPos.x + widget->left;
|
||||
int32_t t = w->windowPos.y + widget->top;
|
||||
auto leftTop = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
// Get the colour and disabled image
|
||||
uint8_t colour = w->colours[widget->colour] & 0x7F;
|
||||
uint32_t image = widget->image + 2;
|
||||
|
||||
// Draw disabled image
|
||||
gfx_draw_sprite(dpi, image | (colour << 19), l, t, 0);
|
||||
gfx_draw_sprite(dpi, image | (colour << 19), leftTop, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -836,7 +831,7 @@ static void widget_draw_image(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti
|
|||
else
|
||||
image |= colour << 19;
|
||||
|
||||
gfx_draw_sprite(dpi, image, screenCoords.x, screenCoords.y, 0);
|
||||
gfx_draw_sprite(dpi, image, screenCoords, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -696,8 +696,7 @@ namespace OpenRCT2::Ui::Windows
|
|||
auto widget = &w->widgets[widgetIndex];
|
||||
if (widget_is_enabled(w, widgetIndex))
|
||||
{
|
||||
auto l = w->windowPos.x + widget->left + tab.offset.x;
|
||||
auto t = w->windowPos.y + widget->top + tab.offset.y;
|
||||
auto leftTop = w->windowPos + tab.offset + ScreenCoordsXY{ widget->left, widget->top };
|
||||
auto image = tab.imageFrameBase;
|
||||
if (static_cast<size_t>(w->page) == tabIndex && tab.imageFrameDuration != 0 && tab.imageFrameCount != 0)
|
||||
{
|
||||
|
@ -705,7 +704,7 @@ namespace OpenRCT2::Ui::Windows
|
|||
auto imageOffset = frame % tab.imageFrameCount;
|
||||
image = image.WithIndex(image.GetIndex() + imageOffset);
|
||||
}
|
||||
gfx_draw_sprite(dpi, image.ToUInt32(), l, t, image.GetTertiary());
|
||||
gfx_draw_sprite(dpi, image.ToUInt32(), leftTop, image.GetTertiary());
|
||||
}
|
||||
tabIndex++;
|
||||
}
|
||||
|
|
|
@ -237,7 +237,7 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
+ lineHeight;
|
||||
|
||||
logoSize = gfx_get_sprite_size(SPR_G2_LOGO);
|
||||
gfx_draw_sprite(dpi, SPR_G2_LOGO, aboutCoords.x - (logoSize.width / 2), aboutCoords.y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_G2_LOGO, aboutCoords - ScreenCoordsXY{ logoSize.width / 2, 0 }, 0);
|
||||
aboutCoords.y += logoSize.height + lineHeight * 2;
|
||||
|
||||
// About OpenRCT2 text
|
||||
|
@ -322,7 +322,7 @@ static void window_about_rct2_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
gfx_draw_string_centred(dpi, STR_LICENSED_TO_INFOGRAMES_INTERACTIVE_INC, screenCoords, COLOUR_BLACK, nullptr);
|
||||
|
||||
// Images
|
||||
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, w->windowPos.x + 92, yPage + 24, 0);
|
||||
gfx_draw_sprite(dpi, SPR_CREDITS_CHRIS_SAWYER_SMALL, { w->windowPos.x + 92, yPage + 24 }, 0);
|
||||
|
||||
// Licence
|
||||
}
|
||||
|
|
|
@ -1270,7 +1270,7 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
if (w->page == WINDOW_CHEATS_PAGE_MONEY)
|
||||
sprite_idx += (w->frame_no / 2) % 8;
|
||||
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);
|
||||
}
|
||||
|
||||
// Guests tab
|
||||
|
@ -1280,7 +1280,7 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
if (w->page == WINDOW_CHEATS_PAGE_GUESTS)
|
||||
sprite_idx += (w->frame_no / 3) % 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);
|
||||
}
|
||||
|
||||
// Misc tab
|
||||
|
@ -1288,7 +1288,7 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
{
|
||||
sprite_idx = SPR_TAB_PARK;
|
||||
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);
|
||||
}
|
||||
|
||||
// Rides tab
|
||||
|
@ -1298,7 +1298,7 @@ static void window_cheats_draw_tab_images(rct_drawpixelinfo* dpi, rct_window* w)
|
|||
if (w->page == WINDOW_CHEATS_PAGE_RIDES)
|
||||
sprite_idx += (w->frame_no / 4) % 16;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -372,8 +372,9 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
image++;
|
||||
|
||||
gfx_draw_sprite(
|
||||
dpi, image, w->windowPos.x + 2 + (cell_x * _dropdown_item_width),
|
||||
w->windowPos.y + 2 + (cell_y * _dropdown_item_height), 0);
|
||||
dpi, image,
|
||||
w->windowPos + ScreenCoordsXY{ 2 + (cell_x * _dropdown_item_width), 2 + (cell_y * _dropdown_item_height) },
|
||||
0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -465,8 +465,11 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
if (drawPreviousButton)
|
||||
{
|
||||
gfx_draw_sprite(
|
||||
dpi, SPR_PREVIOUS, window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6 + w->windowPos.x,
|
||||
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 + w->windowPos.y, 0);
|
||||
dpi, SPR_PREVIOUS,
|
||||
w->windowPos
|
||||
+ ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].left + 6,
|
||||
window_editor_bottom_toolbar_widgets[WIDX_PREVIOUS_IMAGE].top + 6 },
|
||||
0);
|
||||
|
||||
int32_t textColour = NOT_TRANSLUCENT(w->colours[1]);
|
||||
if (gHoverWidget.window_classification == WC_BOTTOM_TOOLBAR
|
||||
|
@ -492,8 +495,11 @@ void window_editor_bottom_toolbar_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
if ((drawPreviousButton || drawNextButton) && gS6Info.editor_step != EDITOR_STEP_ROLLERCOASTER_DESIGNER)
|
||||
{
|
||||
gfx_draw_sprite(
|
||||
dpi, SPR_NEXT, window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29 + w->windowPos.x,
|
||||
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 + w->windowPos.y, 0);
|
||||
dpi, SPR_NEXT,
|
||||
w->windowPos
|
||||
+ ScreenCoordsXY{ window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].right - 29,
|
||||
window_editor_bottom_toolbar_widgets[WIDX_NEXT_IMAGE].top + 6 },
|
||||
0);
|
||||
|
||||
int32_t textColour = NOT_TRANSLUCENT(w->colours[1]);
|
||||
|
||||
|
|
|
@ -552,7 +552,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
|
|||
|
||||
// Tab image
|
||||
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.x, screenPos.y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_TAB_FINANCES_RESEARCH_0 + (w->frame_no / 2) % 8, screenPos, 0);
|
||||
|
||||
// Pre-researched items label
|
||||
screenPos = w->windowPos
|
||||
|
|
|
@ -966,7 +966,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
|
|||
{
|
||||
auto image = ObjectSelectionPages[i].Image;
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
gfx_draw_sprite(dpi, image, screenPos.x, screenPos.y, 0);
|
||||
gfx_draw_sprite(dpi, image, screenPos, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -994,7 +994,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf
|
|||
spriteIndex += (i == 4 ? ThrillRidesTabAnimationSequence[frame] : frame);
|
||||
|
||||
auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
gfx_draw_sprite(dpi, spriteIndex | (w->colours[1] << 19), screenPos.x, screenPos.y, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex | (w->colours[1] << 19), screenPos, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -304,7 +304,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
|
|||
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN)
|
||||
spriteIndex += (w->frame_no / 4) % 16;
|
||||
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0);
|
||||
|
||||
// Tab 2
|
||||
if (!(w->disabled_widgets & (1 << WIDX_TAB_2)))
|
||||
|
@ -314,7 +314,7 @@ static void window_editor_objective_options_draw_tab_images(rct_window* w, rct_d
|
|||
if (w->page == WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_RIDES)
|
||||
spriteIndex += (w->frame_no / 4) % 16;
|
||||
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -440,7 +440,7 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
|
|||
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_FINANCIAL)
|
||||
spriteIndex += (w->frame_no / 2) % 8;
|
||||
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0);
|
||||
|
||||
// Tab 2
|
||||
widget = &w->widgets[WIDX_TAB_2];
|
||||
|
@ -448,12 +448,12 @@ static void window_editor_scenario_options_draw_tab_images(rct_window* w, rct_dr
|
|||
if (w->page == WINDOW_EDITOR_SCENARIO_OPTIONS_PAGE_GUESTS)
|
||||
spriteIndex += (w->frame_no / 4) % 8;
|
||||
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0);
|
||||
|
||||
// Tab 3
|
||||
widget = &w->widgets[WIDX_TAB_3];
|
||||
spriteIndex = SPR_TAB_PARK;
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos.x + widget->left, w->windowPos.y + widget->top, 0);
|
||||
gfx_draw_sprite(dpi, spriteIndex, w->windowPos + ScreenCoordsXY{ widget->left, widget->top }, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1501,7 +1501,7 @@ static void window_finances_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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -619,24 +619,24 @@ static void window_footpath_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
image += pathType->image;
|
||||
|
||||
// Draw construction image
|
||||
screenCoords = {
|
||||
w->windowPos.x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2,
|
||||
w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60
|
||||
};
|
||||
gfx_draw_sprite(dpi, image, screenCoords.x, screenCoords.y, 0);
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right)
|
||||
/ 2,
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 60 };
|
||||
gfx_draw_sprite(dpi, image, screenCoords, 0);
|
||||
|
||||
// Draw build this... label
|
||||
screenCoords = {
|
||||
w->windowPos.x + (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2,
|
||||
w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 23
|
||||
};
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right)
|
||||
/ 2,
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 23 };
|
||||
gfx_draw_string_centred(dpi, STR_BUILD_THIS, screenCoords, COLOUR_BLACK, nullptr);
|
||||
}
|
||||
|
||||
// Draw cost
|
||||
screenCoords.x = w->windowPos.x
|
||||
+ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2;
|
||||
screenCoords.y = w->windowPos.y + window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12;
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (window_footpath_widgets[WIDX_CONSTRUCT].left + window_footpath_widgets[WIDX_CONSTRUCT].right) / 2,
|
||||
window_footpath_widgets[WIDX_CONSTRUCT].bottom - 12 };
|
||||
if (_window_footpath_cost != MONEY32_UNDEFINED)
|
||||
{
|
||||
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
|
||||
|
|
|
@ -491,8 +491,8 @@ static void window_game_bottom_toolbar_draw_park_rating(
|
|||
}
|
||||
|
||||
// Draw thumbs on the sides
|
||||
gfx_draw_sprite(dpi, SPR_RATING_LOW, x - 14, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RATING_HIGH, x + 114, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RATING_LOW, { x - 14, y }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RATING_HIGH, { x + 114, y }, 0);
|
||||
}
|
||||
|
||||
static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi, rct_window* w)
|
||||
|
@ -548,7 +548,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
|
|||
|
||||
// Current weather
|
||||
auto currentWeatherSpriteId = climate_get_weather_sprite_id(gClimateCurrent);
|
||||
gfx_draw_sprite(dpi, currentWeatherSpriteId, screenCoords.x, screenCoords.y, 0);
|
||||
gfx_draw_sprite(dpi, currentWeatherSpriteId, screenCoords, 0);
|
||||
|
||||
// Next weather
|
||||
auto nextWeatherSpriteId = climate_get_weather_sprite_id(gClimateNext);
|
||||
|
@ -556,8 +556,8 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
|
|||
{
|
||||
if (gClimateUpdateTimer < 960)
|
||||
{
|
||||
gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, screenCoords.x + 27, screenCoords.y + 5, 0);
|
||||
gfx_draw_sprite(dpi, nextWeatherSpriteId, screenCoords.x + 40, screenCoords.y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, screenCoords + ScreenCoordsXY{ 27, 5 }, 0);
|
||||
gfx_draw_sprite(dpi, nextWeatherSpriteId, screenCoords + ScreenCoordsXY{ 40, 0 }, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -568,7 +568,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi,
|
|||
*/
|
||||
static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rct_window* w)
|
||||
{
|
||||
int32_t x, y, width;
|
||||
int32_t width;
|
||||
NewsItem* newsItem;
|
||||
rct_widget* middleOutsetWidget;
|
||||
|
||||
|
@ -583,18 +583,20 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
|
|||
|
||||
// Text
|
||||
utf8* newsItemText = newsItem->Text;
|
||||
x = w->windowPos.x + (middleOutsetWidget->left + middleOutsetWidget->right) / 2;
|
||||
y = w->windowPos.y + middleOutsetWidget->top + 11;
|
||||
auto screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ (middleOutsetWidget->left + middleOutsetWidget->right) / 2, middleOutsetWidget->top + 11 };
|
||||
width = middleOutsetWidget->right - middleOutsetWidget->left - 62;
|
||||
gfx_draw_string_centred_wrapped_partial(
|
||||
dpi, x, y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText, newsItem->Ticks);
|
||||
dpi, screenCoords.x, screenCoords.y, width, COLOUR_BRIGHT_GREEN, STR_BOTTOM_TOOLBAR_NEWS_TEXT, &newsItemText,
|
||||
newsItem->Ticks);
|
||||
|
||||
x = w->windowPos.x + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left;
|
||||
y = w->windowPos.y + window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].top;
|
||||
screenCoords = w->windowPos
|
||||
+ ScreenCoordsXY{ window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].left,
|
||||
window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].top };
|
||||
switch (newsItem->Type)
|
||||
{
|
||||
case NEWS_ITEM_RIDE:
|
||||
gfx_draw_sprite(dpi, SPR_RIDE, x, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RIDE, screenCoords, 0);
|
||||
break;
|
||||
case NEWS_ITEM_PEEP_ON_RIDE:
|
||||
case NEWS_ITEM_PEEP:
|
||||
|
@ -603,7 +605,7 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
|
|||
break;
|
||||
|
||||
rct_drawpixelinfo cliped_dpi;
|
||||
if (!clip_drawpixelinfo(&cliped_dpi, dpi, x + 1, y + 1, 22, 22))
|
||||
if (!clip_drawpixelinfo(&cliped_dpi, dpi, screenCoords.x + 1, screenCoords.y + 1, 22, 22))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -616,11 +618,11 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
|
|||
if (peep == nullptr)
|
||||
return;
|
||||
|
||||
int32_t clip_x = 10, clip_y = 19;
|
||||
auto clipCoords = ScreenCoordsXY{ 10, 19 };
|
||||
|
||||
if (peep->AssignedPeepType == PEEP_TYPE_STAFF && peep->StaffType == STAFF_TYPE_ENTERTAINER)
|
||||
{
|
||||
clip_y += 3;
|
||||
clipCoords.y += 3;
|
||||
}
|
||||
|
||||
uint32_t image_id_base = g_peep_animation_entries[peep->SpriteType].sprite_animation->base_image;
|
||||
|
@ -630,45 +632,45 @@ static void window_game_bottom_toolbar_draw_news_item(rct_drawpixelinfo* dpi, rc
|
|||
uint32_t image_id = image_id_base;
|
||||
image_id |= SPRITE_ID_PALETTE_COLOUR_2(peep->TshirtColour, peep->TrousersColour);
|
||||
|
||||
gfx_draw_sprite(&cliped_dpi, image_id, clip_x, clip_y, 0);
|
||||
gfx_draw_sprite(&cliped_dpi, image_id, clipCoords, 0);
|
||||
|
||||
if (image_id_base >= 0x2A1D && image_id_base < 0x2A3D)
|
||||
{
|
||||
image_id_base += 32;
|
||||
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
|
||||
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clip_x, clip_y, 0);
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
|
||||
}
|
||||
else if (image_id_base >= 0x2BBD && image_id_base < 0x2BDD)
|
||||
{
|
||||
image_id_base += 32;
|
||||
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
|
||||
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clip_x, clip_y, 0);
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
|
||||
}
|
||||
else if (image_id_base >= 0x29DD && image_id_base < 0x29FD)
|
||||
{
|
||||
image_id_base += 32;
|
||||
image_id_base |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
|
||||
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clip_x, clip_y, 0);
|
||||
gfx_draw_sprite(&cliped_dpi, image_id_base, clipCoords, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NEWS_ITEM_MONEY:
|
||||
gfx_draw_sprite(dpi, SPR_FINANCE, x, y, 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, y, 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, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_GUESTS, screenCoords, 0);
|
||||
break;
|
||||
case NEWS_ITEM_AWARD:
|
||||
gfx_draw_sprite(dpi, SPR_AWARD, x, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_AWARD, screenCoords, 0);
|
||||
break;
|
||||
case NEWS_ITEM_GRAPH:
|
||||
gfx_draw_sprite(dpi, SPR_GRAPH, x, y, 0);
|
||||
gfx_draw_sprite(dpi, SPR_GRAPH, screenCoords, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -860,24 +860,22 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
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_GUEST_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{ 14, 20 };
|
||||
|
||||
Peep* peep = GET_PEEP(w->number);
|
||||
|
||||
if (peep->AssignedPeepType == PEEP_TYPE_STAFF && peep->StaffType == STAFF_TYPE_ENTERTAINER)
|
||||
y++;
|
||||
screenCoords.y++;
|
||||
|
||||
int32_t animationFrame = g_peep_animation_entries[peep->SpriteType].sprite_animation->base_image + 1;
|
||||
|
||||
|
@ -891,14 +889,14 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
animationFrame += animationFrameOffset;
|
||||
|
||||
int32_t sprite_id = animationFrame | 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 (animationFrame >= 0x2A1D && animationFrame < 0x2A3D)
|
||||
{
|
||||
animationFrame += 32;
|
||||
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->BalloonColour);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, x, y, 0);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
|
||||
}
|
||||
|
||||
// If holding umbrella
|
||||
|
@ -906,7 +904,7 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
{
|
||||
animationFrame += 32;
|
||||
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->UmbrellaColour);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, x, y, 0);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
|
||||
}
|
||||
|
||||
// If wearing hat
|
||||
|
@ -914,7 +912,7 @@ static void window_guest_overview_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
{
|
||||
animationFrame += 32;
|
||||
animationFrame |= SPRITE_ID_PALETTE_COLOUR_1(peep->HatColour);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, x, y, 0);
|
||||
gfx_draw_sprite(&clip_dpi, animationFrame, screenCoords, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -928,8 +926,7 @@ static void window_guest_stats_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;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
Peep* peep = GET_PEEP(w->number);
|
||||
int32_t image_id = get_peep_face_sprite_large(peep);
|
||||
|
@ -950,7 +947,7 @@ static void window_guest_stats_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
break;
|
||||
}
|
||||
}
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -963,8 +960,7 @@ static void window_guest_rides_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;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
int32_t image_id = SPR_TAB_RIDE_0;
|
||||
|
||||
|
@ -973,7 +969,7 @@ static void window_guest_rides_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
image_id += (w->frame_no / 4) & 0xF;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -986,8 +982,7 @@ static void window_guest_finance_tab_paint(rct_window* w, rct_drawpixelinfo* dpi
|
|||
return;
|
||||
|
||||
rct_widget* widget = &w->widgets[WIDX_TAB_4];
|
||||
int32_t x = widget->left + w->windowPos.x;
|
||||
int32_t y = widget->top + w->windowPos.y;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
int32_t image_id = SPR_TAB_FINANCES_SUMMARY_0;
|
||||
|
||||
|
@ -996,7 +991,7 @@ static void window_guest_finance_tab_paint(rct_window* w, rct_drawpixelinfo* dpi
|
|||
image_id += (w->frame_no / 2) & 0x7;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1009,8 +1004,7 @@ static void window_guest_thoughts_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
return;
|
||||
|
||||
rct_widget* widget = &w->widgets[WIDX_TAB_5];
|
||||
int32_t x = widget->left + w->windowPos.x;
|
||||
int32_t y = widget->top + w->windowPos.y;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
int32_t image_id = SPR_TAB_THOUGHTS_0;
|
||||
|
||||
|
@ -1019,7 +1013,7 @@ static void window_guest_thoughts_tab_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
image_id += (w->frame_no / 2) & 0x7;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1032,12 +1026,11 @@ static void window_guest_inventory_tab_paint(rct_window* w, rct_drawpixelinfo* d
|
|||
return;
|
||||
|
||||
rct_widget* widget = &w->widgets[WIDX_TAB_6];
|
||||
int32_t x = widget->left + w->windowPos.x;
|
||||
int32_t y = widget->top + w->windowPos.y;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
int32_t image_id = SPR_TAB_GUEST_INVENTORY;
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
|
@ -1046,8 +1039,7 @@ static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
return;
|
||||
|
||||
rct_widget* widget = &w->widgets[WIDX_TAB_7];
|
||||
int32_t x = widget->left + w->windowPos.x;
|
||||
int32_t y = widget->top + w->windowPos.y;
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ widget->left, widget->top };
|
||||
|
||||
int32_t image_id = SPR_TAB_GEARS_0;
|
||||
if (w->page == WINDOW_GUEST_DEBUG)
|
||||
|
@ -1055,7 +1047,7 @@ static void window_guest_debug_tab_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|||
image_id += (w->frame_no / 2) & 0x3;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, x, y, 0);
|
||||
gfx_draw_sprite(dpi, image_id, screenCoords, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1080,7 +1072,7 @@ void window_guest_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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -183,10 +183,10 @@ void intro_draw(rct_drawpixelinfo* dpi)
|
|||
_introStateCounter + 50 + 425, BORDER_COLOUR_PUBLISHER);
|
||||
|
||||
// Draw Infogrames logo
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_00, (screenWidth / 2) - 320 + 69, _introStateCounter + 69, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_10, (screenWidth / 2) - 320 + 319, _introStateCounter + 69, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_01, (screenWidth / 2) - 320 + 69, _introStateCounter + 319, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_11, (screenWidth / 2) - 320 + 319, _introStateCounter + 319, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_00, { (screenWidth / 2) - 320 + 69, _introStateCounter + 69 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_10, { (screenWidth / 2) - 320 + 319, _introStateCounter + 69 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_01, { (screenWidth / 2) - 320 + 69, _introStateCounter + 319 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_INFOGRAMES_11, { (screenWidth / 2) - 320 + 319, _introStateCounter + 319 }, 0);
|
||||
break;
|
||||
case INTRO_STATE_DEVELOPER_BEGIN:
|
||||
gfx_clear(dpi, BACKROUND_COLOUR_DARK);
|
||||
|
@ -196,8 +196,8 @@ void intro_draw(rct_drawpixelinfo* dpi)
|
|||
gfx_clear(dpi, BACKROUND_COLOUR_DARK);
|
||||
|
||||
// Draw Chris Sawyer logo
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_00, (screenWidth / 2) - 320 + 70, _introStateCounter, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_10, (screenWidth / 2) - 320 + 320, _introStateCounter, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_00, { (screenWidth / 2) - 320 + 70, _introStateCounter }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_CHRIS_SAWYER_10, { (screenWidth / 2) - 320 + 320, _introStateCounter }, 0);
|
||||
break;
|
||||
case INTRO_STATE_LOGO_FADE_IN:
|
||||
if (_introStateCounter <= 0xFF00)
|
||||
|
@ -284,10 +284,10 @@ static void screen_intro_draw_logo(rct_drawpixelinfo* dpi)
|
|||
drawing_engine_invalidate_image(SPR_INTRO_LOGO_21);
|
||||
|
||||
gfx_clear(dpi, BACKROUND_COLOUR_LOGO);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_00, imageX + 0, 0, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_10, imageX + 220, 0, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_20, imageX + 440, 0, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_01, imageX + 0, 240, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_11, imageX + 220, 240, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_21, imageX + 440, 240, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_00, { imageX + 0, 0 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_10, { imageX + 220, 0 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_20, { imageX + 440, 0 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_01, { imageX + 0, 240 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_11, { imageX + 220, 240 }, 0);
|
||||
gfx_draw_sprite(dpi, SPR_INTRO_LOGO_21, { imageX + 440, 240 }, 0);
|
||||
}
|
||||
|
|
|
@ -776,7 +776,7 @@ static const utf8* ttf_process_format_code(rct_drawpixelinfo* dpi, const utf8* t
|
|||
{
|
||||
if (!(info->flags & TEXT_DRAW_FLAG_NO_DRAW))
|
||||
{
|
||||
gfx_draw_sprite(dpi, imageId, info->x, info->y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, { info->x, info->y }, 0);
|
||||
}
|
||||
info->x += g1->width;
|
||||
}
|
||||
|
|
|
@ -630,6 +630,7 @@ 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);
|
||||
void FASTCALL gfx_draw_sprite_solid(rct_drawpixelinfo* dpi, int32_t image, const ScreenCoordsXY& coords, uint8_t colour);
|
||||
|
|
|
@ -244,16 +244,21 @@ void gfx_draw_dashed_line(
|
|||
}
|
||||
}
|
||||
|
||||
void FASTCALL gfx_draw_sprite(rct_drawpixelinfo* dpi, int32_t image, int32_t x, int32_t y, 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;
|
||||
if (drawingEngine != nullptr)
|
||||
{
|
||||
IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi);
|
||||
dc->DrawSprite(image, x, y, tertiary_colour);
|
||||
dc->DrawSprite(image, coords.x, coords.y, tertiary_colour);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
|
@ -75,12 +75,11 @@ void BannerObject::Unload()
|
|||
|
||||
void BannerObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
|
||||
uint32_t imageId = 0x20D00000 | _legacyType.image;
|
||||
gfx_draw_sprite(dpi, imageId + 0, x - 12, y + 8, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 1, x - 12, y + 8, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 0, screenCoords + ScreenCoordsXY{ -12, 8 }, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 1, screenCoords + ScreenCoordsXY{ -12, 8 }, 0);
|
||||
}
|
||||
|
||||
void BannerObject::ReadJson(IReadObjectContext* context, const json_t* root)
|
||||
|
|
|
@ -43,13 +43,12 @@ void EntranceObject::Unload()
|
|||
|
||||
void EntranceObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
|
||||
uint32_t imageId = _legacyType.image_id;
|
||||
gfx_draw_sprite(dpi, imageId + 1, x - 32, y + 14, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 0, x + 0, y + 28, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 2, x + 32, y + 44, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 1, screenCoords + ScreenCoordsXY{ -32, 14 }, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 0, screenCoords + ScreenCoordsXY{ 0, 28 }, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 2, screenCoords + ScreenCoordsXY{ 32, 44 }, 0);
|
||||
}
|
||||
|
||||
void EntranceObject::ReadJson(IReadObjectContext* context, const json_t* root)
|
||||
|
|
|
@ -81,9 +81,8 @@ void FootpathItemObject::Unload()
|
|||
|
||||
void FootpathItemObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
gfx_draw_sprite(dpi, _legacyType.image, x - 22, y - 24, 0);
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
gfx_draw_sprite(dpi, _legacyType.image, screenCoords - ScreenCoordsXY{ 22, 24 }, 0);
|
||||
}
|
||||
|
||||
static uint8_t ParseDrawType(const std::string& s)
|
||||
|
|
|
@ -70,10 +70,9 @@ void FootpathObject::Unload()
|
|||
|
||||
void FootpathObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
gfx_draw_sprite(dpi, _pathSurfaceEntry.preview, x - 49, y - 17, 0);
|
||||
gfx_draw_sprite(dpi, _queueEntry.preview, x + 4, y - 17, 0);
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
gfx_draw_sprite(dpi, _pathSurfaceEntry.preview, screenCoords - ScreenCoordsXY{ 49, 17 }, 0);
|
||||
gfx_draw_sprite(dpi, _queueEntry.preview, screenCoords + ScreenCoordsXY{ 4, -17 }, 0);
|
||||
}
|
||||
|
||||
static RailingEntrySupportType ParseSupportType(const std::string& s)
|
||||
|
|
|
@ -102,11 +102,10 @@ void LargeSceneryObject::Unload()
|
|||
|
||||
void LargeSceneryObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = (height / 2) - 39;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, (height / 2) - 39 };
|
||||
|
||||
uint32_t imageId = 0xB2D00000 | _legacyType.image;
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
}
|
||||
|
||||
std::vector<rct_large_scenery_tile> LargeSceneryObject::ReadTiles(IStream* stream)
|
||||
|
|
|
@ -370,7 +370,7 @@ void RideObject::DrawPreview(rct_drawpixelinfo* dpi, [[maybe_unused]] int32_t wi
|
|||
imageId++;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId, 0, 0, 0);
|
||||
gfx_draw_sprite(dpi, imageId, { 0, 0 }, 0);
|
||||
}
|
||||
|
||||
std::string RideObject::GetDescription() const
|
||||
|
|
|
@ -60,11 +60,10 @@ void SceneryGroupObject::Unload()
|
|||
|
||||
void SceneryGroupObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
|
||||
uint32_t imageId = _legacyType.image + 0x20600001;
|
||||
gfx_draw_sprite(dpi, imageId, x - 15, y - 14, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords - ScreenCoordsXY{ 15, 14 }, 0);
|
||||
}
|
||||
|
||||
void SceneryGroupObject::UpdateEntryIndexes()
|
||||
|
|
|
@ -107,17 +107,16 @@ void SmallSceneryObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int3
|
|||
}
|
||||
}
|
||||
|
||||
int32_t x = width / 2;
|
||||
int32_t y = (height / 2) + (_legacyType.small_scenery.height / 2);
|
||||
y = std::min(y, height - 16);
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, (height / 2) + (_legacyType.small_scenery.height / 2) };
|
||||
screenCoords.y = std::min(screenCoords.y, height - 16);
|
||||
|
||||
if ((scenery_small_entry_has_flag(&_legacyType, SMALL_SCENERY_FLAG_FULL_TILE))
|
||||
&& (scenery_small_entry_has_flag(&_legacyType, SMALL_SCENERY_FLAG_VOFFSET_CENTRE)))
|
||||
{
|
||||
y -= 12;
|
||||
screenCoords.y -= 12;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
|
||||
if (scenery_small_entry_has_flag(&_legacyType, SMALL_SCENERY_FLAG_HAS_GLASS))
|
||||
{
|
||||
|
@ -126,7 +125,7 @@ void SmallSceneryObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int3
|
|||
{
|
||||
imageId |= 0x92000000;
|
||||
}
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
}
|
||||
|
||||
if (scenery_small_entry_has_flag(&_legacyType, SMALL_SCENERY_FLAG_ANIMATED_FG))
|
||||
|
@ -136,7 +135,7 @@ void SmallSceneryObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int3
|
|||
{
|
||||
imageId |= 0x92000000;
|
||||
}
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,8 +46,7 @@ void StationObject::Unload()
|
|||
|
||||
void StationObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = (height / 2) + 16;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, (height / 2) + 16 };
|
||||
|
||||
auto colour0 = COLOUR_LIGHT_BLUE;
|
||||
auto colour1 = COLOUR_BORDEAUX_RED;
|
||||
|
@ -66,16 +65,16 @@ void StationObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t h
|
|||
tImageId |= (colour1 << 24) | IMAGE_TYPE_REMAP_2_PLUS;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId + 0, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 0, screenCoords, 0);
|
||||
if (Flags & STATION_OBJECT_FLAGS::IS_TRANSPARENT)
|
||||
{
|
||||
gfx_draw_sprite(dpi, tImageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, tImageId, screenCoords, 0);
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId + 4, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 4, screenCoords, 0);
|
||||
if (Flags & STATION_OBJECT_FLAGS::IS_TRANSPARENT)
|
||||
{
|
||||
gfx_draw_sprite(dpi, tImageId + 4, x, y, 0);
|
||||
gfx_draw_sprite(dpi, tImageId + 4, screenCoords, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,12 +37,11 @@ void TerrainEdgeObject::Unload()
|
|||
|
||||
void TerrainEdgeObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
|
||||
uint32_t imageId = BaseImageId;
|
||||
gfx_draw_sprite(dpi, imageId + 5, x + 8, y - 8, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 5, x + 8, y + 8, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 5, screenCoords + ScreenCoordsXY{ 8, -8 }, 0);
|
||||
gfx_draw_sprite(dpi, imageId + 5, screenCoords + ScreenCoordsXY{ 8, 8 }, 0);
|
||||
}
|
||||
|
||||
void TerrainEdgeObject::ReadJson(IReadObjectContext* context, const json_t* root)
|
||||
|
|
|
@ -54,21 +54,22 @@ void TerrainSurfaceObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, in
|
|||
imageId |= SPRITE_ID_PALETTE_COLOUR_1(Colour);
|
||||
}
|
||||
|
||||
ScreenCoordsXY screenCoords{};
|
||||
int32_t x0 = 0;
|
||||
int32_t y = -16;
|
||||
screenCoords.y = -16;
|
||||
for (int32_t i = 0; i < 8; i++)
|
||||
{
|
||||
int32_t x = x0;
|
||||
screenCoords.x = x0;
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
x -= 32;
|
||||
screenCoords.x -= 32;
|
||||
}
|
||||
for (int32_t j = 0; j < 4; j++)
|
||||
{
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
x += 64;
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
screenCoords.x += 64;
|
||||
}
|
||||
y += 16;
|
||||
screenCoords.y += 16;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -69,11 +69,10 @@ void WallObject::Unload()
|
|||
|
||||
void WallObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t height) const
|
||||
{
|
||||
int32_t x = width / 2;
|
||||
int32_t y = height / 2;
|
||||
auto screenCoords = ScreenCoordsXY{ width / 2, height / 2 };
|
||||
|
||||
x += 14;
|
||||
y += (_legacyType.wall.height * 2) + 16;
|
||||
screenCoords.x += 14;
|
||||
screenCoords.y += (_legacyType.wall.height * 2) + 16;
|
||||
|
||||
uint32_t imageId = 0x20D00000 | _legacyType.image;
|
||||
if (_legacyType.wall.flags & WALL_SCENERY_HAS_SECONDARY_COLOUR)
|
||||
|
@ -81,17 +80,17 @@ void WallObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int32_t heig
|
|||
imageId |= 0x92000000;
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
|
||||
if (_legacyType.wall.flags & WALL_SCENERY_HAS_GLASS)
|
||||
{
|
||||
imageId = _legacyType.image + 0x44500006;
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
}
|
||||
else if (_legacyType.wall.flags & WALL_SCENERY_IS_DOOR)
|
||||
{
|
||||
imageId++;
|
||||
gfx_draw_sprite(dpi, imageId, x, y, 0);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -522,17 +522,16 @@ static void paint_attached_ps(rct_drawpixelinfo* dpi, paint_struct* ps, uint32_t
|
|||
attached_paint_struct* attached_ps = ps->attached_ps;
|
||||
for (; attached_ps; attached_ps = attached_ps->next)
|
||||
{
|
||||
int16_t x = attached_ps->x + ps->x;
|
||||
int16_t y = attached_ps->y + ps->y;
|
||||
auto screenCoords = ScreenCoordsXY{ attached_ps->x + ps->x, attached_ps->y + ps->y };
|
||||
|
||||
uint32_t imageId = paint_ps_colourify_image(attached_ps->image_id, ps->sprite_type, viewFlags);
|
||||
if (attached_ps->flags & PAINT_STRUCT_FLAG_IS_MASKED)
|
||||
{
|
||||
gfx_draw_sprite_raw_masked(dpi, x, y, imageId, attached_ps->colour_image_id);
|
||||
gfx_draw_sprite_raw_masked(dpi, screenCoords.x, screenCoords.y, imageId, attached_ps->colour_image_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
gfx_draw_sprite(dpi, imageId, x, y, ps->tertiary_colour);
|
||||
gfx_draw_sprite(dpi, imageId, screenCoords, ps->tertiary_colour);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -636,7 +635,7 @@ static void paint_ps_image(rct_drawpixelinfo* dpi, paint_struct* ps, uint32_t im
|
|||
return gfx_draw_sprite_raw_masked(dpi, x, y, imageId, ps->colour_image_id);
|
||||
}
|
||||
|
||||
gfx_draw_sprite(dpi, imageId, x, y, ps->tertiary_colour);
|
||||
gfx_draw_sprite(dpi, imageId, { x, y }, ps->tertiary_colour);
|
||||
}
|
||||
|
||||
static uint32_t paint_ps_colourify_image(uint32_t imageId, uint8_t spriteType, uint32_t viewFlags)
|
||||
|
|
Loading…
Reference in New Issue