From a262f325ed3fd2fd5d5dbe3cc1ff03ef1d95f26b Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sun, 19 Jan 2020 16:12:29 +0000 Subject: [PATCH] Refactor sprite_remove --- src/openrct2/actions/SetCheatAction.hpp | 2 +- src/openrct2/actions/StaffHireNewAction.hpp | 2 +- src/openrct2/peep/Peep.cpp | 2 +- src/openrct2/ride/Ride.cpp | 4 +-- src/openrct2/world/Balloon.cpp | 2 +- src/openrct2/world/Duck.cpp | 4 +-- src/openrct2/world/Footpath.cpp | 2 +- src/openrct2/world/Fountain.cpp | 2 +- src/openrct2/world/MoneyEffect.cpp | 2 +- src/openrct2/world/Particle.cpp | 6 ++--- src/openrct2/world/Sprite.cpp | 28 ++++++++++----------- src/openrct2/world/Sprite.h | 2 +- 12 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/openrct2/actions/SetCheatAction.hpp b/src/openrct2/actions/SetCheatAction.hpp index a53634d511..b3b65aaac2 100644 --- a/src/openrct2/actions/SetCheatAction.hpp +++ b/src/openrct2/actions/SetCheatAction.hpp @@ -422,7 +422,7 @@ private: { litter = &(get_sprite(spriteIndex)->litter); nextSpriteIndex = litter->next; - sprite_remove((rct_sprite*)litter); + sprite_remove(litter); } tile_element_iterator it; diff --git a/src/openrct2/actions/StaffHireNewAction.hpp b/src/openrct2/actions/StaffHireNewAction.hpp index 56f5ae9809..e702e482ac 100644 --- a/src/openrct2/actions/StaffHireNewAction.hpp +++ b/src/openrct2/actions/StaffHireNewAction.hpp @@ -154,7 +154,7 @@ private: if (execute == false) { // In query we just want to see if we can obtain a sprite slot. - sprite_remove((rct_sprite*)newPeep); + sprite_remove(newPeep); } else { diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index 430fa3d9ca..afbb6f5769 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -849,7 +849,7 @@ void peep_sprite_remove(Peep* peep) news_item_disable_news(NEWS_ITEM_PEEP, peep->sprite_index); } - sprite_remove((rct_sprite*)peep); + sprite_remove(peep); } /** diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 5b770c487e..b1918449f2 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1014,7 +1014,7 @@ static void ride_remove_cable_lift(Ride* ride) { Vehicle* vehicle = GET_VEHICLE(spriteIndex); invalidate_sprite_2((rct_sprite*)vehicle); - sprite_remove((rct_sprite*)vehicle); + sprite_remove(vehicle); spriteIndex = vehicle->next_vehicle_on_train; } while (spriteIndex != SPRITE_INDEX_NULL); } @@ -1038,7 +1038,7 @@ static void ride_remove_vehicles(Ride* ride) { Vehicle* vehicle = GET_VEHICLE(spriteIndex); invalidate_sprite_2((rct_sprite*)vehicle); - sprite_remove((rct_sprite*)vehicle); + sprite_remove(vehicle); spriteIndex = vehicle->next_vehicle_on_train; } diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index 9ed2182934..ea7323f689 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -37,7 +37,7 @@ void Balloon::Update() frame++; if (frame >= 5) { - sprite_remove((rct_sprite*)this); + sprite_remove(this); } } else diff --git a/src/openrct2/world/Duck.cpp b/src/openrct2/world/Duck.cpp index aad125a71a..48551de1ea 100644 --- a/src/openrct2/world/Duck.cpp +++ b/src/openrct2/world/Duck.cpp @@ -97,7 +97,7 @@ void Duck::Invalidate() void Duck::Remove() { Invalidate(); - sprite_remove((rct_sprite*)this); + sprite_remove(this); } void Duck::MoveTo(const CoordsXYZ& destination) @@ -382,7 +382,7 @@ void duck_remove_all() if (sprite->type == SPRITE_MISC_DUCK) { invalidate_sprite_1((rct_sprite*)sprite); - sprite_remove((rct_sprite*)sprite); + sprite_remove(sprite); } } } diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index fb2eff5c05..559ce93b02 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -401,7 +401,7 @@ void footpath_remove_litter(const CoordsXYZ& footpathPos) if (distanceZ <= 32) { invalidate_sprite_0((rct_sprite*)sprite); - sprite_remove((rct_sprite*)sprite); + sprite_remove(sprite); } } spriteIndex = nextSpriteIndex; diff --git a/src/openrct2/world/Fountain.cpp b/src/openrct2/world/Fountain.cpp index fa40463483..365f0ccb2a 100644 --- a/src/openrct2/world/Fountain.cpp +++ b/src/openrct2/world/Fountain.cpp @@ -187,7 +187,7 @@ void JumpingFountain::Update() if (frame == 16) { - sprite_remove(reinterpret_cast(this)); + sprite_remove(this); } } diff --git a/src/openrct2/world/MoneyEffect.cpp b/src/openrct2/world/MoneyEffect.cpp index 7940c1868a..9439fab554 100644 --- a/src/openrct2/world/MoneyEffect.cpp +++ b/src/openrct2/world/MoneyEffect.cpp @@ -142,7 +142,7 @@ void MoneyEffect::Update() return; } - sprite_remove((rct_sprite*)this); + sprite_remove(this); } std::pair MoneyEffect::GetStringId() const diff --git a/src/openrct2/world/Particle.cpp b/src/openrct2/world/Particle.cpp index 22a7929ac2..eed815878e 100644 --- a/src/openrct2/world/Particle.cpp +++ b/src/openrct2/world/Particle.cpp @@ -54,7 +54,7 @@ void crashed_vehicle_particle_update(VehicleCrashParticle* particle) particle->time_to_live--; if (particle->time_to_live == 0) { - sprite_remove((rct_sprite*)particle); + sprite_remove(particle); return; } @@ -88,7 +88,7 @@ void crashed_vehicle_particle_update(VehicleCrashParticle* particle) // Splash audio_play_sound_at_location(SoundId::Water2, { particle->x, particle->y, waterZ }); crash_splash_create(particle->x, particle->y, waterZ); - sprite_remove((rct_sprite*)particle); + sprite_remove(particle); return; } @@ -137,6 +137,6 @@ void crash_splash_update(CrashSplashParticle* splash) splash->frame += 85; if (splash->frame >= 7168) { - sprite_remove((rct_sprite*)splash); + sprite_remove(splash); } } diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 8b3bc675b0..aea2484aea 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -490,7 +490,7 @@ static void sprite_steam_particle_update(SteamParticle* steam) steam->frame += 64; if (steam->frame >= (56 * 64)) { - sprite_remove((rct_sprite*)steam); + sprite_remove(steam); } } @@ -523,7 +523,7 @@ static void sprite_misc_explosion_cloud_update(rct_sprite* sprite) sprite->generic.frame += 128; if (sprite->generic.frame >= (36 * 128)) { - sprite_remove(sprite); + sprite_remove(&sprite->generic); } } @@ -556,7 +556,7 @@ static void sprite_misc_explosion_flare_update(rct_sprite* sprite) sprite->generic.frame += 64; if (sprite->generic.frame >= (124 * 64)) { - sprite_remove(sprite); + sprite_remove(&sprite->generic); } } @@ -689,26 +689,26 @@ void sprite_set_coordinates(int16_t x, int16_t y, int16_t z, rct_sprite* sprite) * * rct2: 0x0069EDB6 */ -void sprite_remove(rct_sprite* sprite) +void sprite_remove(SpriteBase* sprite) { - auto peep = sprite->AsPeep(); + auto peep = ((rct_sprite*)sprite)->AsPeep(); if (peep != nullptr) { peep->SetName({}); } - move_sprite_to_list(&sprite->generic, SPRITE_LIST_FREE); - sprite->generic.sprite_identifier = SPRITE_IDENTIFIER_NULL; - _spriteFlashingList[sprite->generic.sprite_index] = false; + move_sprite_to_list(sprite, SPRITE_LIST_FREE); + sprite->sprite_identifier = SPRITE_IDENTIFIER_NULL; + _spriteFlashingList[sprite->sprite_index] = false; - size_t quadrantIndex = GetSpatialIndexOffset(sprite->generic.x, sprite->generic.y); + size_t quadrantIndex = GetSpatialIndexOffset(sprite->x, sprite->y); uint16_t* spriteIndex = &gSpriteSpatialIndex[quadrantIndex]; - rct_sprite* quadrantSprite; - while (*spriteIndex != SPRITE_INDEX_NULL && (quadrantSprite = get_sprite(*spriteIndex)) != sprite) + SpriteBase* quadrantSprite; + while (*spriteIndex != SPRITE_INDEX_NULL && (quadrantSprite = &get_sprite(*spriteIndex)->generic) != sprite) { - spriteIndex = &quadrantSprite->generic.next_in_quadrant; + spriteIndex = &quadrantSprite->next_in_quadrant; } - *spriteIndex = sprite->generic.next_in_quadrant; + *spriteIndex = sprite->next_in_quadrant; } static bool litter_can_be_at(int32_t x, int32_t y, int32_t z) @@ -769,7 +769,7 @@ void litter_create(int32_t x, int32_t y, int32_t z, int32_t direction, int32_t t if (newestLitter != nullptr) { invalidate_sprite_0((rct_sprite*)newestLitter); - sprite_remove((rct_sprite*)newestLitter); + sprite_remove(newestLitter); } } diff --git a/src/openrct2/world/Sprite.h b/src/openrct2/world/Sprite.h index d06f70b07c..eeed06eb60 100644 --- a/src/openrct2/world/Sprite.h +++ b/src/openrct2/world/Sprite.h @@ -206,7 +206,7 @@ void sprite_set_coordinates(int16_t x, int16_t y, int16_t z, rct_sprite* sprite) void invalidate_sprite_0(rct_sprite* sprite); void invalidate_sprite_1(rct_sprite* sprite); void invalidate_sprite_2(rct_sprite* sprite); -void sprite_remove(rct_sprite* sprite); +void sprite_remove(SpriteBase* sprite); void litter_create(int32_t x, int32_t y, int32_t z, int32_t direction, int32_t type); void litter_remove_at(int32_t x, int32_t y, int32_t z); void sprite_misc_explosion_cloud_create(int32_t x, int32_t y, int32_t z);