From effddb4a1f6a9de6de3c2a0c11f4d6a5859099fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sat, 27 Nov 2021 15:42:16 +0200 Subject: [PATCH] Move painting for VehicleCrashParticle entity --- src/openrct2/entity/Particle.cpp | 16 +++++++++++++++- src/openrct2/entity/Particle.h | 2 +- src/openrct2/paint/sprite/Paint.Misc.cpp | 20 -------------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/openrct2/entity/Particle.cpp b/src/openrct2/entity/Particle.cpp index 1fce6a081a..b6da3d7df3 100644 --- a/src/openrct2/entity/Particle.cpp +++ b/src/openrct2/entity/Particle.cpp @@ -145,8 +145,22 @@ void VehicleCrashParticle::Serialise(DataSerialiser& stream) stream << acceleration_z; } -void VehicleCrashParticle::Paint() const +void VehicleCrashParticle::Paint(paint_session* session, int32_t imageDirection) const { + rct_drawpixelinfo& dpi = session->DPI; + if (dpi.zoom_level > 0) + { + return; + } + + // TODO: Create constants in sprites.h + static constexpr uint32_t vehicle_particle_base_sprites[] = { + 22577, 22589, 22601, 22613, 22625, + }; + + uint32_t imageId = vehicle_particle_base_sprites[crashed_sprite_base] + frame / 256; + imageId = imageId | (colour[0] << 19) | (colour[1] << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS; + PaintAddImageAsParent(session, imageId, { 0, 0, z }, { 1, 1, 0 }); } /** diff --git a/src/openrct2/entity/Particle.h b/src/openrct2/entity/Particle.h index c2d48e06f9..624065d68e 100644 --- a/src/openrct2/entity/Particle.h +++ b/src/openrct2/entity/Particle.h @@ -32,7 +32,7 @@ struct VehicleCrashParticle : EntityBase static void Create(rct_vehicle_colour colours, const CoordsXYZ& vehiclePos); void Update(); void Serialise(DataSerialiser& stream); - void Paint() const; + void Paint(paint_session* session, int32_t imageDirection) const; }; struct CrashSplashParticle : EntityBase diff --git a/src/openrct2/paint/sprite/Paint.Misc.cpp b/src/openrct2/paint/sprite/Paint.Misc.cpp index 107c76bc3b..0a6ac4c7b4 100644 --- a/src/openrct2/paint/sprite/Paint.Misc.cpp +++ b/src/openrct2/paint/sprite/Paint.Misc.cpp @@ -24,11 +24,6 @@ static constexpr const int8_t money_wave[] = { 0, 1, 2, 2, 3, 3, 3, 3, 2, 2, 1, 0, -1, -2, -2, -3, -3, -3, -3, -2, -2, -1, }; -/** rct2: 0x0097ED90 */ -const uint32_t vehicle_particle_base_sprites[] = { - 22577, 22589, 22601, 22613, 22625, -}; - template<> void PaintEntity(paint_session* session, const SteamParticle* particle, int32_t imageDirection) { uint32_t imageId = 22637 + (particle->frame / 256); @@ -50,18 +45,3 @@ template<> void PaintEntity(paint_session* session, const MoneyEffect* moneyEffe session, value, stringId, moneyEffect->y, moneyEffect->z, const_cast(&money_wave[moneyEffect->Wiggle % 22]), moneyEffect->OffsetX, session->CurrentRotation); } - -template<> void PaintEntity(paint_session* session, const VehicleCrashParticle* particle, int32_t imageDirection) -{ - rct_drawpixelinfo* dpi = &session->DPI; - if (dpi->zoom_level > 0) - { - return; - } - - if (particle == nullptr) - return; - uint32_t imageId = vehicle_particle_base_sprites[particle->crashed_sprite_base] + particle->frame / 256; - imageId = imageId | (particle->colour[0] << 19) | (particle->colour[1] << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS; - PaintAddImageAsParent(session, imageId, { 0, 0, particle->z }, { 1, 1, 0 }); -}