From cec251bb63152d1263d1139b079fe12167189027 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Wed, 27 Mar 2024 21:26:07 +0100 Subject: [PATCH] Take kAllObjectTypes internal as well --- src/openrct2/Context.cpp | 2 +- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/object/ObjectManager.cpp | 10 +++---- src/openrct2/object/ObjectTypes.cpp | 28 +++++++++++++++++++ src/openrct2/object/ObjectTypes.h | 25 ++--------------- 5 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index aee148a5fc..6e2055a85f 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -806,7 +806,7 @@ namespace OpenRCT2 private: bool HasObjectsThatUseFallbackImages() { - for (auto objectType : ObjectTypes) + for (auto objectType : getAllObjectTypes()) { auto maxObjectsOfType = static_cast(getObjectEntryGroupCount(objectType)); for (ObjectEntryIndex i = 0; i < maxObjectsOfType; i++) diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index d3249ae854..b89aec61d5 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1311,7 +1311,7 @@ static_assert(_objectTypeNames.size() == EnumValue(ObjectType::Count)); static int32_t ConsoleCommandCountObjects(InteractiveConsole& console, [[maybe_unused]] const arguments_t& argv) { - for (auto objectType : ObjectTypes) + for (auto objectType : getAllObjectTypes()) { uint32_t entryGroupIndex = 0; for (; entryGroupIndex < getObjectEntryGroupCount(objectType); entryGroupIndex++) diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index 9164b7654a..9c0157798a 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -143,7 +143,7 @@ public: ObjectList GetLoadedObjects() override { ObjectList objectList; - for (auto objectType : ObjectTypes) + for (auto objectType : getAllObjectTypes()) { auto maxObjectsOfType = static_cast(getObjectEntryGroupCount(objectType)); for (ObjectEntryIndex i = 0; i < maxObjectsOfType; i++) @@ -312,7 +312,7 @@ private: void UnloadAll(bool onlyTransient) { - for (auto type : ObjectTypes) + for (auto type : getAllObjectTypes()) { if (!onlyTransient || !IsIntransientObjectType(type)) { @@ -443,7 +443,7 @@ private: // Unload objects that are not in the hash set size_t totalObjectsLoaded = 0; size_t numObjectsUnloaded = 0; - for (auto type : ObjectTypes) + for (auto type : getAllObjectTypes()) { if (!IsIntransientObjectType(type)) { @@ -522,7 +522,7 @@ private: std::vector requiredObjects; std::vector missingObjects; - for (auto objectType : ObjectTypes) + for (auto objectType : getAllObjectTypes()) { auto& descriptors = objectList.GetList(objectType); auto maxSize = static_cast(getObjectEntryGroupCount(objectType)); @@ -673,7 +673,7 @@ private: } // Set the new object lists - for (auto type : ObjectTypes) + for (auto type : getAllObjectTypes()) { if (!IsIntransientObjectType(type)) { diff --git a/src/openrct2/object/ObjectTypes.cpp b/src/openrct2/object/ObjectTypes.cpp index 24f5a2f758..af6aa715bd 100644 --- a/src/openrct2/object/ObjectTypes.cpp +++ b/src/openrct2/object/ObjectTypes.cpp @@ -14,6 +14,29 @@ #include +constexpr std::array kAllObjectTypes = { + ObjectType::Ride, + ObjectType::SmallScenery, + ObjectType::LargeScenery, + ObjectType::Walls, + ObjectType::Banners, + ObjectType::Paths, + ObjectType::PathAdditions, + ObjectType::SceneryGroup, + ObjectType::ParkEntrance, + ObjectType::Water, + ObjectType::ScenarioText, + ObjectType::TerrainSurface, + ObjectType::TerrainEdge, + ObjectType::Station, + ObjectType::Music, + ObjectType::FootpathSurface, + ObjectType::FootpathRailings, + ObjectType::Audio, +}; + +static_assert(kAllObjectTypes.size() == EnumValue(ObjectType::Count)); + // Object types that can be saved in a park file. static constexpr std::array kTransientObjectTypes = { ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, ObjectType::Walls, @@ -40,6 +63,11 @@ bool ObjectTypeIsIntransient(ObjectType type) return std::find(kIntransientObjectTypes.begin(), kIntransientObjectTypes.end(), type) != std::end(kIntransientObjectTypes); } +std::span getAllObjectTypes() +{ + return kAllObjectTypes; +} + std::span getTransientObjectTypes() { return kTransientObjectTypes; diff --git a/src/openrct2/object/ObjectTypes.h b/src/openrct2/object/ObjectTypes.h index 317edb18fc..da203123a8 100644 --- a/src/openrct2/object/ObjectTypes.h +++ b/src/openrct2/object/ObjectTypes.h @@ -44,33 +44,12 @@ enum class ObjectType : uint8_t None = 255 }; -constexpr std::array ObjectTypes = { - ObjectType::Ride, - ObjectType::SmallScenery, - ObjectType::LargeScenery, - ObjectType::Walls, - ObjectType::Banners, - ObjectType::Paths, - ObjectType::PathAdditions, - ObjectType::SceneryGroup, - ObjectType::ParkEntrance, - ObjectType::Water, - ObjectType::ScenarioText, - ObjectType::TerrainSurface, - ObjectType::TerrainEdge, - ObjectType::Station, - ObjectType::Music, - ObjectType::FootpathSurface, - ObjectType::FootpathRailings, - ObjectType::Audio, -}; -// Not using EnumValue to reduce header includes -static_assert(ObjectTypes.size() == static_cast(ObjectType::Count)); - static constexpr size_t kNumTransientObjectTypes = 16; static constexpr size_t kNumIntransientObjectTypes = 2; bool ObjectTypeIsTransient(ObjectType type); bool ObjectTypeIsIntransient(ObjectType type); + +std::span getAllObjectTypes(); std::span getTransientObjectTypes(); std::span getIntransientObjectTypes();