diff --git a/src/openrct2/GameState.h b/src/openrct2/GameState.h index f78e5fba78..57d7355669 100644 --- a/src/openrct2/GameState.h +++ b/src/openrct2/GameState.h @@ -62,7 +62,7 @@ namespace OpenRCT2 std::string scenarioFileName; std::vector banners; - Entity_t entities[kMaxEntities]{}; + // Ride storage for all the rides in the park, rides with RideId::Null are considered free. std::array rides{}; size_t ridesEndOfUsedRange{}; diff --git a/src/openrct2/entity/EntityRegistry.cpp b/src/openrct2/entity/EntityRegistry.cpp index 89e51e100e..4458cbf44b 100644 --- a/src/openrct2/entity/EntityRegistry.cpp +++ b/src/openrct2/entity/EntityRegistry.cpp @@ -44,6 +44,16 @@ namespace OpenRCT2 { using namespace OpenRCT2::Core; + union Entity_t + { + uint8_t Pad00[0x200]; + EntityBase base; + Entity_t() + : Pad00() + { + } + }; + static constexpr const uint32_t kSpatialIndexSize = (kMaximumMapSizeTechnical * kMaximumMapSizeTechnical) + 1; static constexpr uint32_t kSpatialIndexNullBucket = kSpatialIndexSize - 1; @@ -51,6 +61,7 @@ namespace OpenRCT2 static constexpr uint32_t kSpatialIndexDirtyMask = 1u << 31; // TODO: move into GameState_t + static Entity_t entities[kMaxEntities]{}; static std::array, EnumValue(EntityType::Count)> gEntityLists; static std::vector _freeIdList; @@ -118,9 +129,8 @@ namespace OpenRCT2 EntityBase* TryGetEntity(EntityId entityIndex) { - auto& gameState = getGameState(); const auto idx = entityIndex.ToUnderlying(); - return idx >= kMaxEntities ? nullptr : &gameState.entities[idx].base; + return idx >= kMaxEntities ? nullptr : &entities[idx].base; } EntityBase* GetEntity(EntityId entityIndex) @@ -181,10 +191,9 @@ namespace OpenRCT2 FreeEntity(*spr); } - auto& gameState = getGameState(); - std::fill(std::begin(gameState.entities), std::end(gameState.entities), Entity_t()); - OpenRCT2::RideUse::GetHistory().Clear(); - OpenRCT2::RideUse::GetTypeHistory().Clear(); + std::fill(std::begin(entities), std::end(entities), Entity_t()); + RideUse::GetHistory().Clear(); + RideUse::GetTypeHistory().Clear(); for (int32_t i = 0; i < kMaxEntities; ++i) { auto* spr = GetEntity(EntityId::FromUnderlying(i)); @@ -247,7 +256,7 @@ namespace OpenRCT2 { EntitiesChecksum checksum{}; - OpenRCT2::ChecksumStream ms(checksum.raw); + ChecksumStream ms(checksum.raw); DataSerialiser ds(true, ms); NetworkSerialiseEntityTypes(ds); @@ -576,8 +585,8 @@ namespace OpenRCT2 guest->SetName({}); guest->GuestNextInQueue = EntityId::GetNull(); - OpenRCT2::RideUse::GetHistory().RemoveHandle(guest->Id); - OpenRCT2::RideUse::GetTypeHistory().RemoveHandle(guest->Id); + RideUse::GetHistory().RemoveHandle(guest->Id); + RideUse::GetTypeHistory().RemoveHandle(guest->Id); } } diff --git a/src/openrct2/entity/EntityRegistry.h b/src/openrct2/entity/EntityRegistry.h index 6d9cb5c06f..925b3450c6 100644 --- a/src/openrct2/entity/EntityRegistry.h +++ b/src/openrct2/entity/EntityRegistry.h @@ -16,16 +16,6 @@ namespace OpenRCT2 { - union Entity_t - { - uint8_t Pad00[0x200]; - EntityBase base; - Entity_t() - : Pad00() - { - } - }; - constexpr uint16_t kMaxEntities = 65535; EntityBase* GetEntity(EntityId entityId);