diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 7478bfffc2..6a34eda3aa 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1173,7 +1173,7 @@ void WindowGuestOverviewToolUpdate(rct_window* w, rct_widgetindex widgetIndex, c map_invalidate_selection_rect(); } - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); auto info = get_map_coordinates_from_pos(screenCoords, ViewportInteractionItemAll); if (info.SpriteType == ViewportInteractionItem::None) @@ -1193,11 +1193,9 @@ void WindowGuestOverviewToolUpdate(rct_window* w, rct_widgetindex widgetIndex, c return; } - uint32_t imageId = GetPeepAnimation(peep->SpriteType, PeepActionSpriteType::Ui).base_image; - imageId += w->picked_peep_frame >> 2; - - imageId |= (peep->TshirtColour << 19) | (peep->TrousersColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS; - gPickupPeepImage = imageId; + auto baseImageId = GetPeepAnimation(peep->SpriteType, PeepActionSpriteType::Ui).base_image; + baseImageId += w->picked_peep_frame >> 2; + gPickupPeepImage = ImageId(baseImageId, peep->TshirtColour, peep->TrousersColour); } /** @@ -1222,7 +1220,7 @@ void WindowGuestOverviewToolDown(rct_window* w, rct_widgetindex widgetIndex, con if (result->Error != GameActions::Status::Ok) return; tool_cancel(); - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); }); GameActions::Execute(&pickupAction); } diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 1d18b37490..39b7c81566 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -1171,7 +1171,7 @@ void WindowStaffOverviewToolUpdate(rct_window* w, rct_widgetindex widgetIndex, c map_invalidate_selection_rect(); } - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); auto info = get_map_coordinates_from_pos(screenCoords, ViewportInteractionItemAll); if (info.SpriteType == ViewportInteractionItem::None) @@ -1191,11 +1191,9 @@ void WindowStaffOverviewToolUpdate(rct_window* w, rct_widgetindex widgetIndex, c return; } - uint32_t imageId = GetPeepAnimation(peep->SpriteType, PeepActionSpriteType::Ui).base_image; - imageId += w->picked_peep_frame >> 2; - - imageId |= (peep->TshirtColour << 19) | (peep->TrousersColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS; - gPickupPeepImage = imageId; + auto baseImageId = GetPeepAnimation(peep->SpriteType, PeepActionSpriteType::Ui).base_image; + baseImageId += w->picked_peep_frame >> 2; + gPickupPeepImage = ImageId(baseImageId, peep->TshirtColour, peep->TrousersColour); } /** @@ -1219,7 +1217,7 @@ void WindowStaffOverviewToolDown(rct_window* w, rct_widgetindex widgetIndex, con if (result->Error != GameActions::Status::Ok) return; tool_cancel(); - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); }); GameActions::Execute(&pickupAction); } diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 3e189fcb97..93757015e1 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -84,7 +84,7 @@ void PaletteMap::Copy(size_t dstIndex, const PaletteMap& src, size_t srcIndex, s uint8_t gGamePalette[256 * 4]; uint32_t gPaletteEffectFrame; -uint32_t gPickupPeepImage; +ImageId gPickupPeepImage; int32_t gPickupPeepX; int32_t gPickupPeepY; @@ -715,10 +715,10 @@ bool clip_drawpixelinfo( void gfx_invalidate_pickedup_peep() { - uint32_t sprite = gPickupPeepImage; - if (sprite != UINT32_MAX) + auto imageId = gPickupPeepImage; + if (imageId.HasValue()) { - const rct_g1_element* g1 = gfx_get_g1_element(sprite & 0x7FFFF); + auto* g1 = gfx_get_g1_element(imageId); if (g1 != nullptr) { int32_t left = gPickupPeepX + g1->x_offset; @@ -732,9 +732,9 @@ void gfx_invalidate_pickedup_peep() void gfx_draw_pickedup_peep(rct_drawpixelinfo* dpi) { - if (gPickupPeepImage != UINT32_MAX) + if (gPickupPeepImage.HasValue()) { - gfx_draw_sprite(dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }, 0); + gfx_draw_sprite(dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }); } } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 89f4f43cba..229eefad67 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -482,7 +482,7 @@ extern thread_local uint8_t gOtherPalette[256]; extern uint8_t text_palette[]; extern const translucent_window_palette TranslucentWindowPalettes[COLOUR_COUNT]; -extern uint32_t gPickupPeepImage; +extern ImageId gPickupPeepImage; extern int32_t gPickupPeepX; extern int32_t gPickupPeepY; diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index d7d3a4f619..0fce3c7bfa 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -569,7 +569,7 @@ void Peep::PickupAbort(int32_t old_x) PathCheckOptimisation = 0; } - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); } // Returns GameActions::Status::OK when a peep can be dropped at the given location. When apply is set to true the peep gets diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 85d16ebe6f..39668562b4 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -86,7 +86,7 @@ void viewport_init_all() input_reset_flags(); input_set_state(InputState::Reset); gPressedWidget.window_classification = 255; - gPickupPeepImage = UINT32_MAX; + gPickupPeepImage = ImageId(); reset_tooltip_not_shown(); gMapSelectFlags = 0; gStaffDrawPatrolAreas = 0xFFFF;