From 5e9e9df7ce5dc84a6859d1c41899af3962d43eb7 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sun, 19 Jan 2020 16:31:00 +0000 Subject: [PATCH] Refactor invalidate_sprite --- src/openrct2/actions/StaffHireNewAction.hpp | 4 +-- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/peep/Guest.cpp | 4 +-- src/openrct2/peep/Peep.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 8 ++--- src/openrct2/ride/CableLift.cpp | 4 +-- src/openrct2/ride/Ride.cpp | 6 ++-- src/openrct2/ride/Vehicle.cpp | 14 ++++----- 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/MapAnimation.cpp | 2 +- src/openrct2/world/MoneyEffect.cpp | 2 +- src/openrct2/world/Particle.cpp | 6 ++-- src/openrct2/world/Sprite.cpp | 30 +++++++++---------- src/openrct2/world/Sprite.h | 6 ++-- 17 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/openrct2/actions/StaffHireNewAction.hpp b/src/openrct2/actions/StaffHireNewAction.hpp index e71204abca..cbd0c31946 100644 --- a/src/openrct2/actions/StaffHireNewAction.hpp +++ b/src/openrct2/actions/StaffHireNewAction.hpp @@ -229,7 +229,7 @@ private: newPeep->state = PEEP_STATE_PICKED; sprite_move(newPeep->x, newPeep->y, newPeep->z, newPeep); - invalidate_sprite_2((rct_sprite*)newPeep); + invalidate_sprite_2(newPeep); } // Staff uses this @@ -336,6 +336,6 @@ private: } sprite_move(x, y, z + 16, newPeep); - invalidate_sprite_2((rct_sprite*)newPeep); + invalidate_sprite_2(newPeep); } }; diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index 5464f46888..8cd48acda2 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1547,7 +1547,7 @@ static int32_t cc_mp_desync(InteractiveConsole& console, const arguments_t& argv if (peeps.size() > 1) sprite = peeps[util_rand() % peeps.size() - 1]; sprite->peep.tshirt_colour = util_rand() & 0xFF; - invalidate_sprite_0(sprite); + invalidate_sprite_0(sprite->AsPeep()); } break; } diff --git a/src/openrct2/peep/Guest.cpp b/src/openrct2/peep/Guest.cpp index d13896b5fa..713e57586e 100644 --- a/src/openrct2/peep/Guest.cpp +++ b/src/openrct2/peep/Guest.cpp @@ -4091,7 +4091,7 @@ void Guest::UpdateRideEnterVehicle() ride->cur_num_customers++; vehicle->mass += mass; - invalidate_sprite_2(reinterpret_cast(vehicle)); + invalidate_sprite_2(vehicle); MoveTo(LOCATION_NULL, 0, 0); @@ -4137,7 +4137,7 @@ void Guest::UpdateRideLeaveVehicle() vehicle->num_peeps--; vehicle->mass -= mass; - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); if (ride_station >= MAX_STATIONS) { diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index 1fd4f92619..cc5196a28f 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -342,7 +342,7 @@ Staff* Peep::AsStaff() void Peep::Invalidate() { - invalidate_sprite_2((rct_sprite*)this); + invalidate_sprite_2(this); } void Peep::MoveTo(int16_t destX, int16_t destY, int16_t destZ) diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 5233b76251..e1e8c79e30 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1233,7 +1233,7 @@ private: dst->mini_golf_flags = src->mini_golf_flags; sprite_move(src->x, src->y, src->z, dst); - invalidate_sprite_2((rct_sprite*)dst); + invalidate_sprite_2(dst); dst->num_peeps = src->num_peeps; dst->next_free_seat = src->next_free_seat; @@ -1392,7 +1392,7 @@ private: dst->sprite_height_positive = spriteBounds[dst->action_sprite_type].sprite_height_positive; sprite_move(src->x, src->y, src->z, dst); - invalidate_sprite_2((rct_sprite*)dst); + invalidate_sprite_2(dst); dst->sprite_direction = src->sprite_direction; @@ -1637,7 +1637,7 @@ private: litter->sprite_height_negative = srcLitter->sprite_height_negative; sprite_move(srcLitter->x, srcLitter->y, srcLitter->z, litter); - invalidate_sprite_2((rct_sprite*)litter); + invalidate_sprite_2(litter); } } } @@ -1688,7 +1688,7 @@ private: } sprite_move(src->x, src->y, src->z, dst); - invalidate_sprite_2((rct_sprite*)dst); + invalidate_sprite_2(dst); } } } diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index b10e9b75ec..a5d35d53b9 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -421,7 +421,7 @@ int32_t cable_lift_update_track_motion(Vehicle* cableLift) unk_F64E20.x = vehicle->x; unk_F64E20.y = vehicle->y; unk_F64E20.z = vehicle->z; - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); while (true) { @@ -459,7 +459,7 @@ int32_t cable_lift_update_track_motion(Vehicle* cableLift) } sprite_move(unk_F64E20.x, unk_F64E20.y, unk_F64E20.z, vehicle); - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); } vehicle->acceleration /= _vehicleUnkF64E10; if (_vehicleVelocityF64E08 >= 0) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 3a66e3c204..3507ed68f4 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1013,7 +1013,7 @@ static void ride_remove_cable_lift(Ride* ride) do { Vehicle* vehicle = GET_VEHICLE(spriteIndex); - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); sprite_remove(vehicle); spriteIndex = vehicle->next_vehicle_on_train; } while (spriteIndex != SPRITE_INDEX_NULL); @@ -1037,7 +1037,7 @@ static void ride_remove_vehicles(Ride* ride) while (spriteIndex != SPRITE_INDEX_NULL) { Vehicle* vehicle = GET_VEHICLE(spriteIndex); - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); sprite_remove(vehicle); spriteIndex = vehicle->next_vehicle_on_train; } @@ -6528,7 +6528,7 @@ void ride_update_vehicle_colours(Ride* ride) vehicle->colours.body_colour = colours.Body; vehicle->colours.trim_colour = colours.Trim; vehicle->colours_extended = colours.Ternary; - invalidate_sprite_2((rct_sprite*)vehicle); + invalidate_sprite_2(vehicle); spriteIndex = vehicle->next_vehicle_on_train; carIndex++; } diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index f7a700ff6b..826390bbb0 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -844,7 +844,7 @@ Vehicle* try_get_vehicle(uint16_t spriteIndex) void Vehicle::Invalidate() { - invalidate_sprite_2((rct_sprite*)this); + invalidate_sprite_2(this); } static int32_t get_train_mass(const Vehicle* first_vehicle) @@ -3579,7 +3579,7 @@ static void vehicle_update_collision_setup(Vehicle* vehicle) train->sprite_height_positive = 5; sprite_move(train->x, train->y, train->z, train); - invalidate_sprite_2((rct_sprite*)train); + invalidate_sprite_2(train); train->var_4E = 0; } @@ -5398,7 +5398,7 @@ static void vehicle_update_crash(Vehicle* vehicle) curVehicle->animation_frame++; if (curVehicle->animation_frame >= 8) curVehicle->animation_frame = 0; - invalidate_sprite_2((rct_sprite*)curVehicle); + invalidate_sprite_2(curVehicle); } curVehicle->var_C8 += 7281; continue; @@ -5435,7 +5435,7 @@ static void vehicle_update_crash(Vehicle* vehicle) continue; } - invalidate_sprite_2((rct_sprite*)curVehicle); + invalidate_sprite_2(curVehicle); CoordsXYZ curPosition = { curVehicle->x, curVehicle->y, curVehicle->z }; @@ -5453,7 +5453,7 @@ static void vehicle_update_crash(Vehicle* vehicle) } sprite_move(curPosition.x, curPosition.y, curPosition.z, curVehicle); - invalidate_sprite_2((rct_sprite*)curVehicle); + invalidate_sprite_2(curVehicle); if (curVehicle->sub_state == 1) { @@ -9640,7 +9640,7 @@ int32_t vehicle_update_track_motion(Vehicle* vehicle, int32_t* outStation) unk_F64E20.x = car->x; unk_F64E20.y = car->y; unk_F64E20.z = car->z; - invalidate_sprite_2((rct_sprite*)car); + invalidate_sprite_2(car); while (true) { @@ -9686,7 +9686,7 @@ int32_t vehicle_update_track_motion(Vehicle* vehicle, int32_t* outStation) } // loc_6DBF20 sprite_move(unk_F64E20.x, unk_F64E20.y, unk_F64E20.z, car); - invalidate_sprite_2((rct_sprite*)car); + invalidate_sprite_2(car); loc_6DBF3E: sub_6DBF3E(car); diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index 4537dfccd4..48501fcd40 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -31,7 +31,7 @@ Balloon* rct_sprite::AsBalloon() void Balloon::Update() { - invalidate_sprite_2((rct_sprite*)this); + invalidate_sprite_2(this); if (popped == 1) { frame++; diff --git a/src/openrct2/world/Duck.cpp b/src/openrct2/world/Duck.cpp index 94e1245228..c965ab4a3c 100644 --- a/src/openrct2/world/Duck.cpp +++ b/src/openrct2/world/Duck.cpp @@ -91,7 +91,7 @@ Duck* rct_sprite::AsDuck() void Duck::Invalidate() { - invalidate_sprite_1((rct_sprite*)this); + invalidate_sprite_1(this); } void Duck::Remove() @@ -381,7 +381,7 @@ void duck_remove_all() nextSpriteIndex = sprite->next; if (sprite->type == SPRITE_MISC_DUCK) { - invalidate_sprite_1((rct_sprite*)sprite); + invalidate_sprite_1(sprite); sprite_remove(sprite); } } diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 559ce93b02..d5dbe8585c 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -400,7 +400,7 @@ void footpath_remove_litter(const CoordsXYZ& footpathPos) int32_t distanceZ = abs(sprite->z - footpathPos.z); if (distanceZ <= 32) { - invalidate_sprite_0((rct_sprite*)sprite); + invalidate_sprite_0(sprite); sprite_remove(sprite); } } diff --git a/src/openrct2/world/Fountain.cpp b/src/openrct2/world/Fountain.cpp index 7f7c250c51..3a2487680a 100644 --- a/src/openrct2/world/Fountain.cpp +++ b/src/openrct2/world/Fountain.cpp @@ -162,7 +162,7 @@ void JumpingFountain::Update() return; } - invalidate_sprite_0(reinterpret_cast(this)); + invalidate_sprite_0(this); frame++; switch (type) diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index f8d569b42a..be3649bde7 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -217,7 +217,7 @@ static bool map_animation_invalidate_small_scenery(CoordsXYZ loc) peep->action_frame = 0; peep->action_sprite_image_offset = 0; peep->UpdateCurrentActionSpriteType(); - invalidate_sprite_1((rct_sprite*)peep); + invalidate_sprite_1(peep); break; } } diff --git a/src/openrct2/world/MoneyEffect.cpp b/src/openrct2/world/MoneyEffect.cpp index 3894b3a52a..5425c7e2c0 100644 --- a/src/openrct2/world/MoneyEffect.cpp +++ b/src/openrct2/world/MoneyEffect.cpp @@ -109,7 +109,7 @@ void MoneyEffect::Create(money32 value, CoordsXYZ loc) */ void MoneyEffect::Update() { - invalidate_sprite_2((rct_sprite*)this); + invalidate_sprite_2(this); wiggle++; if (wiggle >= 22) { diff --git a/src/openrct2/world/Particle.cpp b/src/openrct2/world/Particle.cpp index 1d48c0ad6f..6136dac610 100644 --- a/src/openrct2/world/Particle.cpp +++ b/src/openrct2/world/Particle.cpp @@ -50,7 +50,7 @@ void crashed_vehicle_particle_create(rct_vehicle_colour colours, int32_t x, int3 */ void crashed_vehicle_particle_update(VehicleCrashParticle* particle) { - invalidate_sprite_0((rct_sprite*)particle); + invalidate_sprite_0(particle); particle->time_to_live--; if (particle->time_to_live == 0) { @@ -99,7 +99,7 @@ void crashed_vehicle_particle_update(VehicleCrashParticle* particle) z = landZ; } sprite_move(x, y, z, particle); - invalidate_sprite_0((rct_sprite*)particle); + invalidate_sprite_0(particle); particle->frame += 85; if (particle->frame >= 3072) @@ -133,7 +133,7 @@ void crash_splash_create(int32_t x, int32_t y, int32_t z) */ void crash_splash_update(CrashSplashParticle* splash) { - invalidate_sprite_2((rct_sprite*)splash); + invalidate_sprite_2(splash); splash->frame += 85; if (splash->frame >= 7168) { diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index be75b5498c..7420d1434c 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -98,9 +98,9 @@ uint16_t sprite_get_first_in_quadrant(int32_t x, int32_t y) return gSpriteSpatialIndex[offset]; } -static void invalidate_sprite_max_zoom(rct_sprite* sprite, int32_t maxZoom) +static void invalidate_sprite_max_zoom(SpriteBase* sprite, int32_t maxZoom) { - if (sprite->generic.sprite_left == LOCATION_NULL) + if (sprite->sprite_left == LOCATION_NULL) return; for (int32_t i = 0; i < MAX_VIEWPORT_COUNT; i++) @@ -109,8 +109,8 @@ static void invalidate_sprite_max_zoom(rct_sprite* sprite, int32_t maxZoom) if (viewport->width != 0 && viewport->zoom <= maxZoom) { viewport_invalidate( - viewport, sprite->generic.sprite_left, sprite->generic.sprite_top, sprite->generic.sprite_right, - sprite->generic.sprite_bottom); + viewport, sprite->sprite_left, sprite->sprite_top, sprite->sprite_right, + sprite->sprite_bottom); } } } @@ -119,7 +119,7 @@ static void invalidate_sprite_max_zoom(rct_sprite* sprite, int32_t maxZoom) * Invalidate the sprite if at closest zoom. * rct2: 0x006EC60B */ -void invalidate_sprite_0(rct_sprite* sprite) +void invalidate_sprite_0(SpriteBase* sprite) { invalidate_sprite_max_zoom(sprite, 0); } @@ -128,7 +128,7 @@ void invalidate_sprite_0(rct_sprite* sprite) * Invalidate sprite if at closest zoom or next zoom up from closest. * rct2: 0x006EC53F */ -void invalidate_sprite_1(rct_sprite* sprite) +void invalidate_sprite_1(SpriteBase* sprite) { invalidate_sprite_max_zoom(sprite, 1); } @@ -139,7 +139,7 @@ void invalidate_sprite_1(rct_sprite* sprite) * * @param sprite (esi) */ -void invalidate_sprite_2(rct_sprite* sprite) +void invalidate_sprite_2(SpriteBase* sprite) { invalidate_sprite_max_zoom(sprite, 2); } @@ -478,7 +478,7 @@ void move_sprite_to_list(SpriteBase* sprite, SPRITE_LIST newListIndex) */ static void sprite_steam_particle_update(SteamParticle* steam) { - invalidate_sprite_2((rct_sprite*)steam); + invalidate_sprite_2(steam); // Move up 1 z every 3 ticks (Starts after 4 ticks) steam->time_to_move++; @@ -519,7 +519,7 @@ void sprite_misc_explosion_cloud_create(int32_t x, int32_t y, int32_t z) */ static void sprite_misc_explosion_cloud_update(rct_sprite* sprite) { - invalidate_sprite_2(sprite); + invalidate_sprite_2(&sprite->generic); sprite->generic.frame += 128; if (sprite->generic.frame >= (36 * 128)) { @@ -552,7 +552,7 @@ void sprite_misc_explosion_flare_create(int32_t x, int32_t y, int32_t z) */ static void sprite_misc_explosion_flare_update(rct_sprite* sprite) { - invalidate_sprite_2(sprite); + invalidate_sprite_2(&sprite->generic); sprite->generic.frame += 64; if (sprite->generic.frame >= (124 * 64)) { @@ -768,7 +768,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); + invalidate_sprite_0(newestLitter); sprite_remove(newestLitter); } } @@ -784,7 +784,7 @@ void litter_create(int32_t x, int32_t y, int32_t z, int32_t direction, int32_t t litter->sprite_identifier = SPRITE_IDENTIFIER_LITTER; litter->type = type; sprite_move(x, y, z, litter); - invalidate_sprite_0((rct_sprite*)litter); + invalidate_sprite_0(litter); litter->creationTick = gScenarioTicks; } @@ -807,7 +807,7 @@ void litter_remove_at(int32_t x, int32_t y, int32_t z) { if (abs(litter->x - x) <= 8 && abs(litter->y - y) <= 8) { - invalidate_sprite_0(sprite); + invalidate_sprite_0(litter); sprite_remove(litter); } } @@ -872,7 +872,7 @@ void sprite_position_tween_all(float alpha) sprite_set_coordinates( std::round(posB.x * alpha + posA.x * inv), std::round(posB.y * alpha + posA.y * inv), std::round(posB.z * alpha + posA.z * inv), &sprite->generic); - invalidate_sprite_2(sprite); + invalidate_sprite_2(&sprite->generic); } } } @@ -887,7 +887,7 @@ void sprite_position_tween_restore() rct_sprite* sprite = get_sprite(i); if (sprite_should_tween(sprite)) { - invalidate_sprite_2(sprite); + invalidate_sprite_2(&sprite->generic); LocationXYZ16 pos = _spritelocations2[i]; sprite_set_coordinates(pos.x, pos.y, pos.z, &sprite->generic); diff --git a/src/openrct2/world/Sprite.h b/src/openrct2/world/Sprite.h index c5f362c84b..fdad2938b1 100644 --- a/src/openrct2/world/Sprite.h +++ b/src/openrct2/world/Sprite.h @@ -203,9 +203,9 @@ void move_sprite_to_list(SpriteBase* sprite, SPRITE_LIST newList); void sprite_misc_update_all(); void sprite_move(int16_t x, int16_t y, int16_t z, SpriteBase* sprite); void sprite_set_coordinates(int16_t x, int16_t y, int16_t z, SpriteBase* sprite); -void invalidate_sprite_0(rct_sprite* sprite); -void invalidate_sprite_1(rct_sprite* sprite); -void invalidate_sprite_2(rct_sprite* sprite); +void invalidate_sprite_0(SpriteBase* sprite); +void invalidate_sprite_1(SpriteBase* sprite); +void invalidate_sprite_2(SpriteBase* 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);