From 8c8d3435f142db4e85b9d4edd51313e00342ef95 Mon Sep 17 00:00:00 2001 From: mix Date: Wed, 21 May 2025 00:03:35 +0200 Subject: [PATCH] Rewrite ParkPreview::drawPreviewImage to use SPR_TEMP --- src/openrct2/park/ParkPreview.cpp | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/openrct2/park/ParkPreview.cpp b/src/openrct2/park/ParkPreview.cpp index ef2a6d7b24..0f2a0596e0 100644 --- a/src/openrct2/park/ParkPreview.cpp +++ b/src/openrct2/park/ParkPreview.cpp @@ -12,6 +12,7 @@ #include "../Context.h" #include "../GameState.h" #include "../OpenRCT2.h" +#include "../SpriteIds.h" #include "../core/Numerics.hpp" #include "../drawing/Drawing.h" #include "../drawing/X8DrawingEngine.h" @@ -244,27 +245,14 @@ namespace OpenRCT2 void drawPreviewImage(const PreviewImage& image, RenderTarget& rt, ScreenCoordsXY screenPos) { - auto* drawingEngine = GetContext()->GetDrawingEngine(); - if (drawingEngine == nullptr) - return; + G1Element g1temp = {}; + g1temp.offset = const_cast(image.pixels); + g1temp.width = image.width; + g1temp.height = image.height; - const auto imageId = ImageId(0); - auto* g1 = const_cast(GfxGetG1Element(imageId)); - if (g1 != nullptr) - { - // Temporarily substitute a G1 image with the data in the preview image - const auto backupG1 = *g1; - *g1 = {}; - g1->offset = const_cast(image.pixels); - g1->width = image.width; - g1->height = image.height; - drawingEngine->InvalidateImage(imageId.GetIndex()); - - // Draw preview image and restore original G1 image - GfxDrawSprite(rt, imageId, screenPos); - *g1 = backupG1; - drawingEngine->InvalidateImage(imageId.GetIndex()); - } + GfxSetG1Element(SPR_TEMP, &g1temp); + DrawingEngineInvalidateImage(SPR_TEMP); + GfxDrawSprite(rt, ImageId(SPR_TEMP), screenPos); } } // namespace OpenRCT2