From 8e509d9669765dc68523ae82fecc41347b5577ff Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Thu, 30 Jun 2022 23:13:40 +0200 Subject: [PATCH] Remove ObjectType++ operator, ensure ObjectTypes size --- src/openrct2/interface/InteractiveConsole.cpp | 9 +++++---- src/openrct2/object/Object.cpp | 5 ----- src/openrct2/object/Object.h | 5 ++--- src/openrct2/object/ObjectManager.cpp | 4 ++-- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index ec29676464..11e74eac9d 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1273,18 +1273,19 @@ static int32_t cc_object_count(InteractiveConsole& console, [[maybe_unused]] con "Paths", "Path Additions", "Scenery groups", "Park entrances", "Water", }; - for (ObjectType i = ObjectType::Ride; i < ObjectType::ScenarioText; i++) + for (auto objectType : ObjectTypes) { int32_t entryGroupIndex = 0; - for (; entryGroupIndex < object_entry_group_counts[EnumValue(i)]; entryGroupIndex++) + for (; entryGroupIndex < object_entry_group_counts[EnumValue(objectType)]; entryGroupIndex++) { - if (object_entry_get_chunk(i, entryGroupIndex) == nullptr) + if (object_entry_get_chunk(objectType, entryGroupIndex) == nullptr) { break; } } console.WriteFormatLine( - "%s: %d/%d", object_type_names[EnumValue(i)], entryGroupIndex, object_entry_group_counts[EnumValue(i)]); + "%s: %d/%d", object_type_names[EnumValue(objectType)], entryGroupIndex, + object_entry_group_counts[EnumValue(objectType)]); } return 0; diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index a6d16549cc..936d0b0209 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -28,11 +28,6 @@ using namespace OpenRCT2; -ObjectType& operator++(ObjectType& d, int) -{ - return d = (d == ObjectType::Count) ? ObjectType::Ride : static_cast(static_cast(d) + 1); -} - ObjectEntryDescriptor::ObjectEntryDescriptor(const rct_object_entry& newEntry) { if (!newEntry.IsEmpty()) diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 9d6821c516..94f94e00a0 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -53,9 +53,7 @@ enum class ObjectType : uint8_t None = 255 }; -ObjectType& operator++(ObjectType& d, int); - -constexpr std::array ObjectTypes = { +constexpr std::array ObjectTypes = { ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, @@ -75,6 +73,7 @@ constexpr std::array ObjectTypes = { ObjectType::FootpathRailings, ObjectType::Audio, }; +static_assert(ObjectTypes.size() == EnumValue(ObjectType::Count)); // Object types that can be saved in a park file. constexpr std::array TransientObjectTypes = { diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index eae7fe2f69..eb29846779 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -140,7 +140,7 @@ public: ObjectList GetLoadedObjects() override { ObjectList objectList; - for (auto objectType = ObjectType::Ride; objectType < ObjectType::Count; objectType++) + for (auto objectType : ObjectTypes) { auto maxObjectsOfType = static_cast(object_entry_group_counts[EnumValue(objectType)]); for (ObjectEntryIndex i = 0; i < maxObjectsOfType; i++) @@ -512,7 +512,7 @@ private: std::vector requiredObjects; std::vector missingObjects; - for (auto objectType = ObjectType::Ride; objectType < ObjectType::Count; objectType++) + for (auto objectType : ObjectTypes) { auto& descriptors = objectList.GetList(objectType); auto maxSize = static_cast(object_entry_group_counts[EnumValue(objectType)]);