1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Remove type from SpriteBase (#13735)

* Move type field into sub structures

* Use type for misc_type

* Use type for l_type

* Rename to SubType

* Rename SpriteGeneric to MiscEntity

* Rename generic to misc

* Add extra nullptr checks for compilers that cant understand

* Make review changes

* Increment network version

* Update replays
This commit is contained in:
Duncan
2021-01-10 15:14:34 +00:00
committed by GitHub
parent d55bff7587
commit d5ada2dca1
33 changed files with 203 additions and 166 deletions

View File

@@ -110,7 +110,7 @@ static std::unique_ptr<GameState_t> GetGameState(std::unique_ptr<IContext>& cont
{
rct_sprite* sprite = reinterpret_cast<rct_sprite*>(GetEntity(spriteIdx));
if (sprite == nullptr)
res->sprites[spriteIdx].generic.sprite_identifier = SpriteIdentifier::Null;
res->sprites[spriteIdx].misc.sprite_identifier = SpriteIdentifier::Null;
else
res->sprites[spriteIdx] = *sprite;
}
@@ -131,7 +131,6 @@ static void AdvanceGameTicks(uint32_t ticks, std::unique_ptr<IContext>& context)
static void CompareSpriteDataCommon(const SpriteBase& left, const SpriteBase& right)
{
COMPARE_FIELD(sprite_identifier);
COMPARE_FIELD(type);
COMPARE_FIELD(next_in_quadrant);
COMPARE_FIELD(next);
COMPARE_FIELD(previous);
@@ -271,6 +270,7 @@ static void CompareSpriteDataPeep(const Peep& left, const Peep& right)
static void CompareSpriteDataVehicle(const Vehicle& left, const Vehicle& right)
{
COMPARE_FIELD(SubType);
COMPARE_FIELD(vehicle_sprite_type);
COMPARE_FIELD(bank_rotation);
COMPARE_FIELD(remaining_distance);
@@ -345,6 +345,7 @@ static void CompareSpriteDataVehicle(const Vehicle& left, const Vehicle& right)
static void CompareSpriteDataLitter(const Litter& left, const Litter& right)
{
COMPARE_FIELD(SubType);
COMPARE_FIELD(creationTick);
}
@@ -404,10 +405,10 @@ static void CompareSpriteDataDuck(const Duck& left, const Duck& right)
static void CompareSpriteData(const rct_sprite& left, const rct_sprite& right)
{
CompareSpriteDataCommon(left.generic, right.generic);
if (left.generic.sprite_identifier == right.generic.sprite_identifier)
CompareSpriteDataCommon(left.misc, right.misc);
if (left.misc.sprite_identifier == right.misc.sprite_identifier)
{
switch (left.generic.sprite_identifier)
switch (left.misc.sprite_identifier)
{
case SpriteIdentifier::Peep:
CompareSpriteDataPeep(left.peep, right.peep);
@@ -419,7 +420,8 @@ static void CompareSpriteData(const rct_sprite& left, const rct_sprite& right)
CompareSpriteDataLitter(left.litter, right.litter);
break;
case SpriteIdentifier::Misc:
switch (static_cast<MiscEntityType>(left.generic.type))
COMPARE_FIELD(misc.SubType);
switch (left.misc.SubType)
{
case MiscEntityType::SteamParticle:
CompareSpriteDataSteamParticle(left.steam_particle, right.steam_particle);
@@ -464,8 +466,8 @@ static void CompareStates(
for (size_t spriteIdx = 0; spriteIdx < MAX_SPRITES; ++spriteIdx)
{
if (importedState->sprites[spriteIdx].generic.sprite_identifier == SpriteIdentifier::Null
&& exportedState->sprites[spriteIdx].generic.sprite_identifier == SpriteIdentifier::Null)
if (importedState->sprites[spriteIdx].misc.sprite_identifier == SpriteIdentifier::Null
&& exportedState->sprites[spriteIdx].misc.sprite_identifier == SpriteIdentifier::Null)
{
continue;
}