From 85b72c766e4f3cf6b2e924d4d260ffe7ffe84211 Mon Sep 17 00:00:00 2001 From: Duncan Date: Thu, 26 Jan 2023 21:39:20 +0000 Subject: [PATCH] Spin off Object Type into standalone header (#19278) * Split off object type into standalone header * Include missing header * Rename to ObjectTypes.h --- src/openrct2/audio/audio.h | 1 + src/openrct2/libopenrct2.vcxproj | 1 + src/openrct2/management/Research.h | 3 +- src/openrct2/object/BannerSceneryEntry.h | 3 +- src/openrct2/object/FootpathItemEntry.h | 3 +- src/openrct2/object/LargeSceneryEntry.h | 3 +- src/openrct2/object/Object.h | 61 +------------------ src/openrct2/object/ObjectTypes.h | 74 ++++++++++++++++++++++++ src/openrct2/object/SmallSceneryEntry.h | 3 +- src/openrct2/object/WallSceneryEntry.h | 3 +- src/openrct2/ride/RideTypes.h | 2 +- 11 files changed, 85 insertions(+), 72 deletions(-) create mode 100644 src/openrct2/object/ObjectTypes.h diff --git a/src/openrct2/audio/audio.h b/src/openrct2/audio/audio.h index 724539c68b..34849ad5f2 100644 --- a/src/openrct2/audio/audio.h +++ b/src/openrct2/audio/audio.h @@ -15,6 +15,7 @@ #include "AudioMixer.h" #include +#include #include class AudioObject; diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index 8258926897..2d363255a1 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -314,6 +314,7 @@ + diff --git a/src/openrct2/management/Research.h b/src/openrct2/management/Research.h index 214c7190cc..fa29f37b4f 100644 --- a/src/openrct2/management/Research.h +++ b/src/openrct2/management/Research.h @@ -10,8 +10,9 @@ #pragma once #include "../common.h" -#include "../object/Object.h" #include "../object/ObjectLimits.h" +#include "../object/ObjectTypes.h" +#include "../ride/RideTypes.h" #include "../util/Util.h" #include diff --git a/src/openrct2/object/BannerSceneryEntry.h b/src/openrct2/object/BannerSceneryEntry.h index 3f19377cdf..0f29891c2f 100644 --- a/src/openrct2/object/BannerSceneryEntry.h +++ b/src/openrct2/object/BannerSceneryEntry.h @@ -10,8 +10,7 @@ #pragma once #include "../common.h" - -using ObjectEntryIndex = uint16_t; +#include "ObjectTypes.h" enum { diff --git a/src/openrct2/object/FootpathItemEntry.h b/src/openrct2/object/FootpathItemEntry.h index be3c3e0c84..eb2c7c7d70 100644 --- a/src/openrct2/object/FootpathItemEntry.h +++ b/src/openrct2/object/FootpathItemEntry.h @@ -11,8 +11,7 @@ #include "../common.h" #include "../interface/Cursors.h" - -using ObjectEntryIndex = uint16_t; +#include "ObjectTypes.h" enum class PathBitDrawType : uint8_t { diff --git a/src/openrct2/object/LargeSceneryEntry.h b/src/openrct2/object/LargeSceneryEntry.h index 45e41919d4..dbbc4f668e 100644 --- a/src/openrct2/object/LargeSceneryEntry.h +++ b/src/openrct2/object/LargeSceneryEntry.h @@ -11,8 +11,7 @@ #include "../common.h" #include "../interface/Cursors.h" #include "../world/Location.hpp" - -using ObjectEntryIndex = uint16_t; +#include "ObjectTypes.h" struct LargeSceneryText; diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 7f6eb6d034..a944d7e89e 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -15,17 +15,14 @@ #include "../util/Util.h" #include "ImageTable.h" #include "ObjectAsset.h" +#include "ObjectTypes.h" #include "StringTable.h" -#include -#include #include #include #include #include -using ObjectEntryIndex = uint16_t; -constexpr const ObjectEntryIndex OBJECT_ENTRY_INDEX_NULL = std::numeric_limits::max(); struct ObjectRepositoryItem; using ride_type_t = uint16_t; @@ -33,62 +30,6 @@ constexpr const size_t VersionNumFields = 3; using ObjectVersion = std::tuple; static_assert(std::tuple_size{} == VersionNumFields); -// First 0xF of RCTObjectEntry->flags -enum class ObjectType : uint8_t -{ - Ride, - SmallScenery, - LargeScenery, - Walls, - Banners, - Paths, - PathBits, - SceneryGroup, - ParkEntrance, - Water, - ScenarioText, - TerrainSurface, - TerrainEdge, - Station, - Music, - FootpathSurface, - FootpathRailings, - Audio, - - Count, - None = 255 -}; - -constexpr std::array ObjectTypes = { - ObjectType::Ride, - ObjectType::SmallScenery, - ObjectType::LargeScenery, - ObjectType::Walls, - ObjectType::Banners, - ObjectType::Paths, - ObjectType::PathBits, - ObjectType::SceneryGroup, - ObjectType::ParkEntrance, - ObjectType::Water, - ObjectType::ScenarioText, - ObjectType::TerrainSurface, - ObjectType::TerrainEdge, - ObjectType::Station, - ObjectType::Music, - ObjectType::FootpathSurface, - 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 = { - ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, ObjectType::Walls, - ObjectType::Banners, ObjectType::Paths, ObjectType::PathBits, ObjectType::SceneryGroup, - ObjectType::ParkEntrance, ObjectType::Water, ObjectType::TerrainSurface, ObjectType::TerrainEdge, - ObjectType::Station, ObjectType::Music, ObjectType::FootpathSurface, ObjectType::FootpathRailings, -}; - namespace ObjectSelectionFlags { constexpr uint8_t Selected = (1 << 0); diff --git a/src/openrct2/object/ObjectTypes.h b/src/openrct2/object/ObjectTypes.h new file mode 100644 index 0000000000..5f6aa2f181 --- /dev/null +++ b/src/openrct2/object/ObjectTypes.h @@ -0,0 +1,74 @@ +/***************************************************************************** + * Copyright (c) 2014-2023 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include +#include +#include + +using ObjectEntryIndex = uint16_t; +constexpr const ObjectEntryIndex OBJECT_ENTRY_INDEX_NULL = std::numeric_limits::max(); + +// First 0xF of RCTObjectEntry->flags +enum class ObjectType : uint8_t +{ + Ride, + SmallScenery, + LargeScenery, + Walls, + Banners, + Paths, + PathBits, + SceneryGroup, + ParkEntrance, + Water, + ScenarioText, + TerrainSurface, + TerrainEdge, + Station, + Music, + FootpathSurface, + FootpathRailings, + Audio, + + Count, + None = 255 +}; + +constexpr std::array ObjectTypes = { + ObjectType::Ride, + ObjectType::SmallScenery, + ObjectType::LargeScenery, + ObjectType::Walls, + ObjectType::Banners, + ObjectType::Paths, + ObjectType::PathBits, + 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)); + +// Object types that can be saved in a park file. +constexpr std::array TransientObjectTypes = { + ObjectType::Ride, ObjectType::SmallScenery, ObjectType::LargeScenery, ObjectType::Walls, + ObjectType::Banners, ObjectType::Paths, ObjectType::PathBits, ObjectType::SceneryGroup, + ObjectType::ParkEntrance, ObjectType::Water, ObjectType::TerrainSurface, ObjectType::TerrainEdge, + ObjectType::Station, ObjectType::Music, ObjectType::FootpathSurface, ObjectType::FootpathRailings, +}; diff --git a/src/openrct2/object/SmallSceneryEntry.h b/src/openrct2/object/SmallSceneryEntry.h index a9f6f570f2..ceb93a9b31 100644 --- a/src/openrct2/object/SmallSceneryEntry.h +++ b/src/openrct2/object/SmallSceneryEntry.h @@ -11,8 +11,7 @@ #include "../common.h" #include "../interface/Cursors.h" - -using ObjectEntryIndex = uint16_t; +#include "ObjectTypes.h" enum SMALL_SCENERY_FLAGS : uint32_t { diff --git a/src/openrct2/object/WallSceneryEntry.h b/src/openrct2/object/WallSceneryEntry.h index 6be71c7e34..130510d595 100644 --- a/src/openrct2/object/WallSceneryEntry.h +++ b/src/openrct2/object/WallSceneryEntry.h @@ -11,8 +11,7 @@ #include "../common.h" #include "../interface/Cursors.h" - -using ObjectEntryIndex = uint16_t; +#include "ObjectTypes.h" enum WALL_SCENERY_FLAGS { diff --git a/src/openrct2/ride/RideTypes.h b/src/openrct2/ride/RideTypes.h index 171bb48c89..3a276be547 100644 --- a/src/openrct2/ride/RideTypes.h +++ b/src/openrct2/ride/RideTypes.h @@ -10,7 +10,7 @@ #pragma once #include "../Identifiers.h" -#include "../object/Object.h" +#include "../object/ObjectTypes.h" #include #include