diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index 788f12c8ca..984da38551 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -195,15 +195,15 @@ bool ViewportInteractionLeftClick(const ScreenCoordsXY& screenCoords) case SpriteIdentifier::Misc: if (game_is_not_paused()) { - switch (entity->type) + switch (static_cast(entity->type)) { - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: { auto balloonPress = BalloonPressAction(entity->sprite_index); GameActions::Execute(&balloonPress); } break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: { auto duck = entity->As(); if (duck != nullptr) @@ -212,6 +212,8 @@ bool ViewportInteractionLeftClick(const ScreenCoordsXY& screenCoords) } } break; + default: + break; } } break; diff --git a/src/openrct2/GameStateSnapshots.cpp b/src/openrct2/GameStateSnapshots.cpp index 761f7e8234..5d3c885979 100644 --- a/src/openrct2/GameStateSnapshots.cpp +++ b/src/openrct2/GameStateSnapshots.cpp @@ -92,23 +92,25 @@ struct GameStateSnapshot_t case SpriteIdentifier::Misc: { ds << sprite.generic.type; - switch (sprite.generic.type) + switch (static_cast(sprite.generic.type)) { - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: ds << reinterpret_cast(sprite.money_effect); break; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: ds << reinterpret_cast(sprite.balloon); break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: ds << reinterpret_cast(sprite.duck); break; - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: + case MiscSpriteType::JumpingFountainWater: ds << reinterpret_cast(sprite.jumping_fountain); break; - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: ds << reinterpret_cast(sprite.steam_particle); break; + default: + break; } break; } @@ -492,34 +494,36 @@ struct GameStateSnapshots final : public IGameStateSnapshots case SpriteIdentifier::Misc: // This is not expected to happen, as misc sprites do not constitute sprite checksum CompareSpriteDataGeneric(spriteBase.generic, spriteCmp.generic, changeData); - switch (spriteBase.generic.type) + switch (static_cast(spriteBase.generic.type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: CompareSpriteDataSteamParticle(spriteBase.steam_particle, spriteCmp.steam_particle, changeData); break; - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: CompareSpriteDataMoneyEffect(spriteBase.money_effect, spriteCmp.money_effect, changeData); break; - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: CompareSpriteDataVehicleCrashParticle( spriteBase.crashed_vehicle_particle, spriteCmp.crashed_vehicle_particle, changeData); break; - case SPRITE_MISC_EXPLOSION_CLOUD: - case SPRITE_MISC_CRASH_SPLASH: - case SPRITE_MISC_EXPLOSION_FLARE: + case MiscSpriteType::ExplosionCloud: + case MiscSpriteType::CrashSplash: + case MiscSpriteType::ExplosionFlare: // SpriteGeneric break; - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainWater: + case MiscSpriteType::JumpingFountainSnow: CompareSpriteDataJumpingFountain( spriteBase.jumping_fountain, spriteCmp.jumping_fountain, changeData); break; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: CompareSpriteDataBalloon(spriteBase.balloon, spriteCmp.balloon, changeData); break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: CompareSpriteDataDuck(spriteBase.duck, spriteCmp.duck, changeData); break; + default: + break; } break; case SpriteIdentifier::Null: @@ -590,7 +594,7 @@ struct GameStateSnapshots final : public IGameStateSnapshots return res; } - static const char* GetSpriteIdentifierName(SpriteIdentifier spriteIdentifier, uint8_t miscIdentifier) + static const char* GetSpriteIdentifierName(SpriteIdentifier spriteIdentifier, MiscSpriteType miscIdentifier) { switch (spriteIdentifier) { @@ -605,26 +609,28 @@ struct GameStateSnapshots final : public IGameStateSnapshots case SpriteIdentifier::Misc: switch (miscIdentifier) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: return "Misc: Steam Particle"; - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: return "Misc: Money effect"; - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: return "Misc: Crash Vehicle Particle"; - case SPRITE_MISC_EXPLOSION_CLOUD: + case MiscSpriteType::ExplosionCloud: return "Misc: Explosion Cloud"; - case SPRITE_MISC_CRASH_SPLASH: + case MiscSpriteType::CrashSplash: return "Misc: Crash Splash"; - case SPRITE_MISC_EXPLOSION_FLARE: + case MiscSpriteType::ExplosionFlare: return "Misc: Explosion Flare"; - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: + case MiscSpriteType::JumpingFountainWater: return "Misc: Jumping fountain water"; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: return "Misc: Balloon"; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: return "Misc: Duck"; - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainSnow: return "Misc: Jumping fountain snow"; + default: + break; } return "Misc"; } @@ -649,7 +655,8 @@ struct GameStateSnapshots final : public IGameStateSnapshots if (change.changeType == GameStateSpriteChange_t::EQUAL) continue; - const char* typeName = GetSpriteIdentifierName(change.spriteIdentifier, change.miscIdentifier); + const char* typeName = GetSpriteIdentifierName( + change.spriteIdentifier, static_cast(change.miscIdentifier)); if (change.changeType == GameStateSpriteChange_t::ADDED) { diff --git a/src/openrct2/paint/sprite/Paint.Misc.cpp b/src/openrct2/paint/sprite/Paint.Misc.cpp index 26f3c7ba7a..cf02f6afe8 100644 --- a/src/openrct2/paint/sprite/Paint.Misc.cpp +++ b/src/openrct2/paint/sprite/Paint.Misc.cpp @@ -33,9 +33,9 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir { rct_drawpixelinfo* dpi = &session->DPI; - switch (misc->type) + switch (static_cast(misc->type)) { - case SPRITE_MISC_STEAM_PARTICLE: // 0 + case MiscSpriteType::SteamParticle: // 0 { auto particle = misc->As(); if (particle == nullptr) @@ -45,7 +45,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_MONEY_EFFECT: // 1 + case MiscSpriteType::MoneyEffect: // 1 { if (dpi->zoom_level > 0) { @@ -61,7 +61,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: // 2 + case MiscSpriteType::CrashedVehicleParticle: // 2 { if (dpi->zoom_level > 0) { @@ -77,7 +77,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_EXPLOSION_CLOUD: // 3 + case MiscSpriteType::ExplosionCloud: // 3 { auto particle = misc->As(); if (particle == nullptr) @@ -87,7 +87,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_CRASH_SPLASH: // 4 + case MiscSpriteType::CrashSplash: // 4 { auto crashSplash = misc->As(); if (crashSplash == nullptr) @@ -97,7 +97,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_EXPLOSION_FLARE: // 5 + case MiscSpriteType::ExplosionFlare: // 5 { // Like a flare auto flare = misc->As(); @@ -108,8 +108,8 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: // 6 - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: // 9 + case MiscSpriteType::JumpingFountainWater: // 6 + case MiscSpriteType::JumpingFountainSnow: // 9 { if (dpi->zoom_level > 0) { @@ -134,7 +134,9 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir isAntiClockwise = !isAntiClockwise; } - uint32_t baseImageId = (jumpingFountain->type == SPRITE_MISC_JUMPING_FOUNTAIN_SNOW) ? 23037 : 22973; + uint32_t baseImageId = (static_cast(jumpingFountain->type) == MiscSpriteType::JumpingFountainSnow) + ? 23037 + : 22973; uint32_t imageId = baseImageId + ebx * 16 + jumpingFountain->frame; constexpr std::array antiClockWiseBoundingBoxes = { CoordsXY{ -COORDS_XY_STEP, -3 }, CoordsXY{ 0, -3 } }; @@ -146,7 +148,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_BALLOON: // 7 + case MiscSpriteType::Balloon: // 7 { auto balloon = misc->As(); if (balloon == nullptr) @@ -162,7 +164,7 @@ void misc_paint(paint_session* session, const SpriteBase* misc, int32_t imageDir break; } - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: if (dpi->zoom_level <= 1) { const Duck* duck = misc->As(); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 26cf2ec4c2..f3e222eb60 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -1691,32 +1691,34 @@ private: dst->MoveTo({ src->x, src->y, src->z }); - switch (src->type) + switch (static_cast(src->type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: ImportSteamParticle(dst->As(), reinterpret_cast(src)); break; - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: ImportMoneyEffect(dst->As(), reinterpret_cast(src)); break; - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: break; - case SPRITE_MISC_EXPLOSION_CLOUD: + case MiscSpriteType::ExplosionCloud: break; - case SPRITE_MISC_CRASH_SPLASH: + case MiscSpriteType::CrashSplash: break; - case SPRITE_MISC_EXPLOSION_FLARE: + case MiscSpriteType::ExplosionFlare: break; - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: + case MiscSpriteType::JumpingFountainWater: ImportJumpingFountainWater( dst->As(), reinterpret_cast(src)); break; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: ImportBalloon(dst->As(), reinterpret_cast(src)); break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: ImportDuck(dst->As(), reinterpret_cast(src)); break; + default: + break; } dst->MoveTo({ src->x, src->y, src->z }); diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 8f1c45caf8..a89e217bbd 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -1251,9 +1251,9 @@ void S6Exporter::ExportSpritePeep(RCT2SpritePeep* dst, const Peep* src) void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) { ExportSpriteCommonProperties(cdst, csrc); - switch (cdst->type) + switch (static_cast(cdst->type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1261,7 +1261,7 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) dst->frame = src->frame; break; } - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1273,7 +1273,7 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) dst->wiggle = src->Wiggle; break; } - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1291,17 +1291,17 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) dst->acceleration_z = src->acceleration_z; break; } - case SPRITE_MISC_EXPLOSION_CLOUD: - case SPRITE_MISC_EXPLOSION_FLARE: - case SPRITE_MISC_CRASH_SPLASH: + case MiscSpriteType::ExplosionCloud: + case MiscSpriteType::ExplosionFlare: + case MiscSpriteType::CrashSplash: { auto src = static_cast(csrc); auto dst = static_cast(cdst); dst->frame = src->frame; break; } - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainWater: + case MiscSpriteType::JumpingFountainSnow: { auto* src = static_cast(csrc); auto* dst = static_cast(cdst); @@ -1314,7 +1314,7 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) dst->iteration = src->Iteration; break; } - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1324,7 +1324,7 @@ void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc) dst->colour = src->colour; break; } - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: { auto src = static_cast(csrc); auto dst = static_cast(cdst); diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 60c8104451..f1135aacdb 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -1538,9 +1538,9 @@ public: void ImportSpriteMisc(SpriteBase* cdst, const RCT12SpriteBase* csrc) { ImportSpriteCommonProperties(cdst, csrc); - switch (cdst->type) + switch (static_cast(cdst->type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1548,7 +1548,7 @@ public: dst->frame = src->frame; break; } - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1560,7 +1560,7 @@ public: dst->Wiggle = src->wiggle; break; } - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1578,17 +1578,17 @@ public: dst->acceleration_z = src->acceleration_z; break; } - case SPRITE_MISC_EXPLOSION_CLOUD: - case SPRITE_MISC_EXPLOSION_FLARE: - case SPRITE_MISC_CRASH_SPLASH: + case MiscSpriteType::ExplosionCloud: + case MiscSpriteType::ExplosionFlare: + case MiscSpriteType::CrashSplash: { auto src = static_cast(csrc); auto dst = static_cast(cdst); dst->frame = src->frame; break; } - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainWater: + case MiscSpriteType::JumpingFountainSnow: { auto* src = static_cast(csrc); auto* dst = static_cast(cdst); @@ -1600,7 +1600,7 @@ public: dst->Iteration = src->iteration; break; } - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: { auto src = static_cast(csrc); auto dst = static_cast(cdst); @@ -1610,7 +1610,7 @@ public: dst->colour = src->colour; break; } - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: { auto src = static_cast(csrc); auto dst = static_cast(cdst); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 6b2c293c2c..2d6fcc5f64 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -7253,7 +7253,7 @@ static void steam_particle_create(const CoordsXYZ& coords) steam->sprite_height_negative = 18; steam->sprite_height_positive = 16; steam->sprite_identifier = SpriteIdentifier::Misc; - steam->type = SPRITE_MISC_STEAM_PARTICLE; + steam->type = EnumValue(MiscSpriteType::SteamParticle); steam->frame = 256; steam->time_to_move = 0; steam->MoveTo(coords); diff --git a/src/openrct2/scripting/ScEntity.hpp b/src/openrct2/scripting/ScEntity.hpp index 495d9c6904..2bc604863e 100644 --- a/src/openrct2/scripting/ScEntity.hpp +++ b/src/openrct2/scripting/ScEntity.hpp @@ -57,11 +57,11 @@ namespace OpenRCT2::Scripting case SpriteIdentifier::Peep: return "peep"; case SpriteIdentifier::Misc: - switch (entity->type) + switch (static_cast(entity->type)) { - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: return "balloon"; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: return "duck"; } break; diff --git a/src/openrct2/scripting/ScMap.hpp b/src/openrct2/scripting/ScMap.hpp index fdd71ada7b..b8503aedb4 100644 --- a/src/openrct2/scripting/ScMap.hpp +++ b/src/openrct2/scripting/ScMap.hpp @@ -103,7 +103,7 @@ namespace OpenRCT2::Scripting if (type == "balloon") { targetList = EntityListId::Misc; - targetType = SPRITE_MISC_BALLOON; + targetType = EnumValue(MiscSpriteType::Balloon); } if (type == "car") { @@ -116,7 +116,7 @@ namespace OpenRCT2::Scripting else if (type == "duck") { targetList = EntityListId::Misc; - targetType = SPRITE_MISC_DUCK; + targetType = EnumValue(MiscSpriteType::Duck); } else if (type == "peep") { diff --git a/src/openrct2/world/Balloon.cpp b/src/openrct2/world/Balloon.cpp index eb94b3e0e3..bb29c28cb1 100644 --- a/src/openrct2/world/Balloon.cpp +++ b/src/openrct2/world/Balloon.cpp @@ -16,7 +16,7 @@ template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_BALLOON; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::Balloon; } void Balloon::Update() @@ -85,7 +85,7 @@ void create_balloon(const CoordsXYZ& balloonPos, int32_t colour, bool isPopped) if (sprite == nullptr) return; sprite->generic.sprite_identifier = SpriteIdentifier::Misc; - sprite->generic.type = SPRITE_MISC_BALLOON; + sprite->generic.type = EnumValue(MiscSpriteType::Balloon); auto balloon = sprite->generic.As(); if (balloon == nullptr) return; // can never happen diff --git a/src/openrct2/world/Duck.cpp b/src/openrct2/world/Duck.cpp index 64270c0977..93fc235310 100644 --- a/src/openrct2/world/Duck.cpp +++ b/src/openrct2/world/Duck.cpp @@ -68,7 +68,7 @@ static constexpr const uint8_t * DuckAnimations[] = template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_DUCK; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::Duck; } void Duck::Invalidate() @@ -298,7 +298,7 @@ void create_duck(const CoordsXY& pos) targetPos.y += offsetXY; sprite->generic.sprite_identifier = SpriteIdentifier::Misc; - sprite->generic.type = SPRITE_MISC_DUCK; + sprite->generic.type = EnumValue(MiscSpriteType::Duck); auto duck = sprite->generic.As(); if (duck == nullptr) return; // can never happen diff --git a/src/openrct2/world/Fountain.cpp b/src/openrct2/world/Fountain.cpp index 759b3c792a..843b49811d 100644 --- a/src/openrct2/world/Fountain.cpp +++ b/src/openrct2/world/Fountain.cpp @@ -72,8 +72,9 @@ const uint8_t _fountainPatternFlags[] = { template<> bool SpriteBase::Is() const { + const auto miscType = static_cast(type); return sprite_identifier == SpriteIdentifier::Misc - && (type == SPRITE_MISC_JUMPING_FOUNTAIN_SNOW || type == SPRITE_MISC_JUMPING_FOUNTAIN_WATER); + && (miscType == MiscSpriteType::JumpingFountainSnow || miscType == MiscSpriteType::JumpingFountainWater); } void JumpingFountain::StartAnimation(const int32_t newType, const CoordsXY& newLoc, const TileElement* tileElement) @@ -139,8 +140,8 @@ void JumpingFountain::Create( jumpingFountain->sprite_height_positive = 12; jumpingFountain->sprite_identifier = SpriteIdentifier::Misc; jumpingFountain->MoveTo(newLoc); - jumpingFountain->type = newType == JUMPING_FOUNTAIN_TYPE_SNOW ? SPRITE_MISC_JUMPING_FOUNTAIN_SNOW - : SPRITE_MISC_JUMPING_FOUNTAIN_WATER; + jumpingFountain->type = newType == JUMPING_FOUNTAIN_TYPE_SNOW ? EnumValue(MiscSpriteType::JumpingFountainSnow) + : EnumValue(MiscSpriteType::JumpingFountainWater); jumpingFountain->NumTicksAlive = 0; jumpingFountain->frame = 0; } @@ -161,9 +162,9 @@ void JumpingFountain::Update() Invalidate0(); frame++; - switch (type) + switch (static_cast(type)) { - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: + case MiscSpriteType::JumpingFountainWater: if (frame == 11 && (FountainFlags & FOUNTAIN_FLAG::FAST)) { AdvanceAnimation(); @@ -173,12 +174,14 @@ void JumpingFountain::Update() AdvanceAnimation(); } break; - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainSnow: if (frame == 16) { AdvanceAnimation(); } break; + default: + break; } if (frame == 16) @@ -189,8 +192,9 @@ void JumpingFountain::Update() int32_t JumpingFountain::GetType() const { - const int32_t fountainType = type == SPRITE_MISC_JUMPING_FOUNTAIN_SNOW ? JUMPING_FOUNTAIN_TYPE_SNOW - : JUMPING_FOUNTAIN_TYPE_WATER; + const int32_t fountainType = static_cast(type) == MiscSpriteType::JumpingFountainSnow + ? JUMPING_FOUNTAIN_TYPE_SNOW + : JUMPING_FOUNTAIN_TYPE_WATER; return fountainType; } diff --git a/src/openrct2/world/MoneyEffect.cpp b/src/openrct2/world/MoneyEffect.cpp index 69140e2652..da56d7d832 100644 --- a/src/openrct2/world/MoneyEffect.cpp +++ b/src/openrct2/world/MoneyEffect.cpp @@ -20,7 +20,7 @@ static constexpr const CoordsXY _moneyEffectMoveOffset[] = { { 1, -1 }, { 1, 1 } template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_MONEY_EFFECT; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::MoneyEffect; } /** @@ -43,7 +43,7 @@ void MoneyEffect::CreateAt(money32 value, const CoordsXYZ& effectPos, bool verti moneyEffect->sprite_height_positive = 30; moneyEffect->sprite_identifier = SpriteIdentifier::Misc; moneyEffect->MoveTo(effectPos); - moneyEffect->type = SPRITE_MISC_MONEY_EFFECT; + moneyEffect->type = EnumValue(MiscSpriteType::MoneyEffect); moneyEffect->NumMovements = 0; moneyEffect->MoveDelay = 0; diff --git a/src/openrct2/world/Particle.cpp b/src/openrct2/world/Particle.cpp index 0374d3ab43..8120e2bffc 100644 --- a/src/openrct2/world/Particle.cpp +++ b/src/openrct2/world/Particle.cpp @@ -16,12 +16,13 @@ template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_CRASHED_VEHICLE_PARTICLE; + return sprite_identifier == SpriteIdentifier::Misc + && static_cast(type) == MiscSpriteType::CrashedVehicleParticle; } template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_CRASH_SPLASH; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::CrashSplash; } /** * @@ -39,7 +40,7 @@ void crashed_vehicle_particle_create(rct_vehicle_colour colours, const CoordsXYZ sprite->sprite_height_positive = 8; sprite->sprite_identifier = SpriteIdentifier::Misc; sprite->MoveTo(vehiclePos); - sprite->type = SPRITE_MISC_CRASHED_VEHICLE_PARTICLE; + sprite->type = EnumValue(MiscSpriteType::CrashedVehicleParticle); sprite->frame = (scenario_rand() & 0xFF) * 12; sprite->time_to_live = (scenario_rand() & 0x7F) + 140; @@ -129,7 +130,7 @@ void crash_splash_create(const CoordsXYZ& splashPos) sprite->sprite_height_positive = 16; sprite->sprite_identifier = SpriteIdentifier::Misc; sprite->MoveTo(splashPos + CoordsXYZ{ 0, 0, 3 }); - sprite->type = SPRITE_MISC_CRASH_SPLASH; + sprite->type = EnumValue(MiscSpriteType::CrashSplash); sprite->frame = 0; } } diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 135d492a84..190f94fe9d 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -65,17 +65,17 @@ template<> bool SpriteBase::Is() const template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_STEAM_PARTICLE; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::SteamParticle; } template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_EXPLOSION_FLARE; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::ExplosionFlare; } template<> bool SpriteBase::Is() const { - return sprite_identifier == SpriteIdentifier::Misc && type == SPRITE_MISC_EXPLOSION_CLOUD; + return sprite_identifier == SpriteIdentifier::Misc && static_cast(type) == MiscSpriteType::ExplosionCloud; } uint16_t GetEntityListCount(EntityListId list) @@ -557,7 +557,7 @@ void sprite_misc_explosion_cloud_create(const CoordsXYZ& cloudPos) sprite->sprite_height_positive = 34; sprite->sprite_identifier = SpriteIdentifier::Misc; sprite->MoveTo(cloudPos + CoordsXYZ{ 0, 0, 4 }); - sprite->type = SPRITE_MISC_EXPLOSION_CLOUD; + sprite->type = EnumValue(MiscSpriteType::ExplosionCloud); sprite->frame = 0; } } @@ -590,7 +590,7 @@ void sprite_misc_explosion_flare_create(const CoordsXYZ& flarePos) sprite->sprite_height_positive = 8; sprite->sprite_identifier = SpriteIdentifier::Misc; sprite->MoveTo(flarePos + CoordsXYZ{ 0, 0, 4 }); - sprite->type = SPRITE_MISC_EXPLOSION_FLARE; + sprite->type = EnumValue(MiscSpriteType::ExplosionFlare); sprite->frame = 0; } } @@ -615,36 +615,38 @@ void ExplosionFlare::Update() */ static void sprite_misc_update(SpriteBase* sprite) { - switch (sprite->type) + switch (static_cast(sprite->type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: sprite->As()->Update(); break; - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: sprite->As()->Update(); break; - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: sprite->As()->Update(); break; - case SPRITE_MISC_EXPLOSION_CLOUD: + case MiscSpriteType::ExplosionCloud: sprite->As()->Update(); break; - case SPRITE_MISC_CRASH_SPLASH: + case MiscSpriteType::CrashSplash: sprite->As()->Update(); break; - case SPRITE_MISC_EXPLOSION_FLARE: + case MiscSpriteType::ExplosionFlare: sprite->As()->Update(); break; - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: + case MiscSpriteType::JumpingFountainWater: + case MiscSpriteType::JumpingFountainSnow: sprite->As()->Update(); break; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: sprite->As()->Update(); break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: sprite->As()->Update(); break; + default: + break; } } diff --git a/src/openrct2/world/Sprite.h b/src/openrct2/world/Sprite.h index 1da8912b1e..af3a676dc5 100644 --- a/src/openrct2/world/Sprite.h +++ b/src/openrct2/world/Sprite.h @@ -172,18 +172,18 @@ struct rct_sprite_checksum #pragma pack(pop) -enum +enum class MiscSpriteType : uint8_t { - SPRITE_MISC_STEAM_PARTICLE, - SPRITE_MISC_MONEY_EFFECT, - SPRITE_MISC_CRASHED_VEHICLE_PARTICLE, - SPRITE_MISC_EXPLOSION_CLOUD, - SPRITE_MISC_CRASH_SPLASH, - SPRITE_MISC_EXPLOSION_FLARE, - SPRITE_MISC_JUMPING_FOUNTAIN_WATER, - SPRITE_MISC_BALLOON, - SPRITE_MISC_DUCK, - SPRITE_MISC_JUMPING_FOUNTAIN_SNOW + SteamParticle, + MoneyEffect, + CrashedVehicleParticle, + ExplosionCloud, + CrashSplash, + ExplosionFlare, + JumpingFountainWater, + Balloon, + Duck, + JumpingFountainSnow }; enum diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp index 0da56c0bea..c307ce0be1 100644 --- a/test/tests/S6ImportExportTests.cpp +++ b/test/tests/S6ImportExportTests.cpp @@ -419,25 +419,25 @@ static void CompareSpriteData(const rct_sprite& left, const rct_sprite& right) CompareSpriteDataLitter(left.litter, right.litter); break; case SpriteIdentifier::Misc: - switch (left.generic.type) + switch (static_cast(left.generic.type)) { - case SPRITE_MISC_STEAM_PARTICLE: + case MiscSpriteType::SteamParticle: CompareSpriteDataSteamParticle(left.steam_particle, right.steam_particle); break; - case SPRITE_MISC_MONEY_EFFECT: + case MiscSpriteType::MoneyEffect: CompareSpriteDataMoneyEffect(left.money_effect, right.money_effect); break; - case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE: + case MiscSpriteType::CrashedVehicleParticle: CompareSpriteDataCrashedVehicleParticle(left.crashed_vehicle_particle, right.crashed_vehicle_particle); break; - case SPRITE_MISC_JUMPING_FOUNTAIN_SNOW: - case SPRITE_MISC_JUMPING_FOUNTAIN_WATER: + case MiscSpriteType::JumpingFountainSnow: + case MiscSpriteType::JumpingFountainWater: CompareSpriteDataJumpingFountain(left.jumping_fountain, right.jumping_fountain); break; - case SPRITE_MISC_BALLOON: + case MiscSpriteType::Balloon: CompareSpriteDataBalloon(left.balloon, right.balloon); break; - case SPRITE_MISC_DUCK: + case MiscSpriteType::Duck: CompareSpriteDataDuck(left.duck, right.duck); break; }