From b89130e0f33559bdcc9c396459203c58e0fe6129 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Sat, 25 Apr 2020 00:10:47 +0200 Subject: [PATCH] Use ObjectEntryIndex in more places (#11440) --- src/openrct2/management/Research.cpp | 6 +++--- src/openrct2/object/Object.h | 4 ++-- src/openrct2/object/ObjectList.cpp | 6 +++--- src/openrct2/rct12/RCT12.h | 1 + src/openrct2/ride/Ride.cpp | 6 +++--- src/openrct2/ride/Ride.h | 6 +++--- src/openrct2/world/LargeScenery.cpp | 6 +++--- src/openrct2/world/LargeScenery.h | 2 +- src/openrct2/world/SmallScenery.cpp | 2 +- src/openrct2/world/SmallScenery.h | 2 +- src/openrct2/world/TileElement.h | 6 +++--- test/testpaint/Compat.cpp | 4 ++-- 12 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 823c1b2349..423129e0e2 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -196,7 +196,7 @@ void research_finish_item(ResearchItem* researchItem) { // Ride uint32_t base_ride_type = researchItem->baseRideType; - int32_t rideEntryIndex = researchItem->entryIndex; + ObjectEntryIndex rideEntryIndex = researchItem->entryIndex; rct_ride_entry* rideEntry = get_ride_entry(rideEntryIndex); if (rideEntry != nullptr && base_ride_type != RIDE_TYPE_NULL) @@ -224,12 +224,12 @@ void research_finish_item(ResearchItem* researchItem) bool seenRideEntry[MAX_RIDE_OBJECTS]{}; for (auto const& researchItem3 : gResearchItemsUninvented) { - uint8_t index = researchItem3.entryIndex; + ObjectEntryIndex index = researchItem3.entryIndex; seenRideEntry[index] = true; } for (auto const& researchItem3 : gResearchItemsInvented) { - uint8_t index = researchItem3.entryIndex; + ObjectEntryIndex index = researchItem3.entryIndex; seenRideEntry[index] = true; } diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index eb02e35cbf..6cbce012d9 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -282,5 +282,5 @@ const rct_object_entry* object_list_find(rct_object_entry* entry); void object_entry_get_name_fixed(utf8* buffer, size_t bufferSize, const rct_object_entry* entry); -void* object_entry_get_chunk(int32_t objectType, size_t index); -const rct_object_entry* object_entry_get_entry(int32_t objectType, size_t index); +void* object_entry_get_chunk(int32_t objectType, ObjectEntryIndex index); +const rct_object_entry* object_entry_get_entry(int32_t objectType, ObjectEntryIndex index); diff --git a/src/openrct2/object/ObjectList.cpp b/src/openrct2/object/ObjectList.cpp index 157f1ea9b3..6f723484fe 100644 --- a/src/openrct2/object/ObjectList.cpp +++ b/src/openrct2/object/ObjectList.cpp @@ -162,9 +162,9 @@ void object_entry_get_name_fixed(utf8* buffer, size_t bufferSize, const rct_obje buffer[bufferSize - 1] = 0; } -void* object_entry_get_chunk(int32_t objectType, size_t index) +void* object_entry_get_chunk(int32_t objectType, ObjectEntryIndex index) { - size_t objectIndex = index; + ObjectEntryIndex objectIndex = index; for (int32_t i = 0; i < objectType; i++) { objectIndex += object_entry_group_counts[i]; @@ -180,7 +180,7 @@ void* object_entry_get_chunk(int32_t objectType, size_t index) return result; } -const rct_object_entry* object_entry_get_entry(int32_t objectType, size_t index) +const rct_object_entry* object_entry_get_entry(int32_t objectType, ObjectEntryIndex index) { const rct_object_entry* result = nullptr; auto& objectMgr = OpenRCT2::GetContext()->GetObjectManager(); diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index db97fe8fc8..014f336b89 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -49,6 +49,7 @@ constexpr uint16_t const RCT12_MAX_GOLF_HOLES = 31; constexpr uint16_t const RCT12_MAX_HELICES = 31; constexpr uint8_t RCT12_BANNER_INDEX_NULL = std::numeric_limits::max(); +constexpr const uint8_t RCT12_OBJECT_ENTRY_INDEX_NULL = 255; constexpr const uint8_t RCT12_TILE_ELEMENT_SURFACE_EDGE_STYLE_MASK = 0xE0; // in RCT12TileElement.properties.surface.slope constexpr const uint8_t RCT12_TILE_ELEMENT_SURFACE_WATER_HEIGHT_MASK = 0x1F; // in RCT12TileElement.properties.surface.terrain diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 0e10130074..346749bbca 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -208,7 +208,7 @@ Ride* get_ride(ride_id_t index) return nullptr; } -rct_ride_entry* get_ride_entry(int32_t index) +rct_ride_entry* get_ride_entry(ObjectEntryIndex index) { rct_ride_entry* result = nullptr; auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); @@ -222,9 +222,9 @@ rct_ride_entry* get_ride_entry(int32_t index) return result; } -std::string_view get_ride_entry_name(size_t index) +std::string_view get_ride_entry_name(ObjectEntryIndex index) { - if (index >= static_cast(object_entry_group_counts[OBJECT_TYPE_RIDE])) + if (index >= object_entry_group_counts[OBJECT_TYPE_RIDE]) { log_error("invalid index %d for ride type", index); return {}; diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index e6011a81d6..132cd4e6c0 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -222,7 +222,7 @@ struct Ride uint8_t type = RIDE_TYPE_NULL; // pointer to static info. for example, wild mouse type is 0x36, subtype is // 0x4c. - uint8_t subtype; + ObjectEntryIndex subtype; uint8_t mode; uint8_t colour_scheme_type; VehicleColour vehicle_colours[MAX_CARS_PER_TRAIN]; @@ -1048,8 +1048,8 @@ struct RideManager RideManager GetRideManager(); ride_id_t GetNextFreeRideId(); Ride* GetOrAllocateRide(ride_id_t index); -rct_ride_entry* get_ride_entry(int32_t index); -std::string_view get_ride_entry_name(size_t index); +rct_ride_entry* get_ride_entry(ObjectEntryIndex index); +std::string_view get_ride_entry_name(ObjectEntryIndex index); RideMeasurement* get_ride_measurement(int32_t index); extern money16 gTotalRideValueForMoney; diff --git a/src/openrct2/world/LargeScenery.cpp b/src/openrct2/world/LargeScenery.cpp index f59442f9ce..4f05cb85b1 100644 --- a/src/openrct2/world/LargeScenery.cpp +++ b/src/openrct2/world/LargeScenery.cpp @@ -69,7 +69,7 @@ void LargeSceneryElement::SetIsAccounted(bool isAccounted) } } -uint16_t LargeSceneryElement::GetEntryIndex() const +ObjectEntryIndex LargeSceneryElement::GetEntryIndex() const { return EntryIndex; } @@ -84,7 +84,7 @@ uint8_t LargeSceneryElement::GetSequenceIndex() const return SequenceIndex; } -void LargeSceneryElement::SetEntryIndex(uint16_t newIndex) +void LargeSceneryElement::SetEntryIndex(ObjectEntryIndex newIndex) { EntryIndex = newIndex; } @@ -94,7 +94,7 @@ void LargeSceneryElement::SetSequenceIndex(uint8_t sequence) SequenceIndex = sequence; } -rct_scenery_entry* get_large_scenery_entry(int32_t entryIndex) +rct_scenery_entry* get_large_scenery_entry(ObjectEntryIndex entryIndex) { rct_scenery_entry* result = nullptr; auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); diff --git a/src/openrct2/world/LargeScenery.h b/src/openrct2/world/LargeScenery.h index 6968216220..41f6a1de20 100644 --- a/src/openrct2/world/LargeScenery.h +++ b/src/openrct2/world/LargeScenery.h @@ -13,7 +13,7 @@ #include "Map.h" #include "TileElement.h" -rct_scenery_entry* get_large_scenery_entry(int32_t entryIndex); +rct_scenery_entry* get_large_scenery_entry(ObjectEntryIndex entryIndex); enum { diff --git a/src/openrct2/world/SmallScenery.cpp b/src/openrct2/world/SmallScenery.cpp index 8a0b3ac714..e9f2e38be3 100644 --- a/src/openrct2/world/SmallScenery.cpp +++ b/src/openrct2/world/SmallScenery.cpp @@ -173,7 +173,7 @@ rct_scenery_entry* SmallSceneryElement::GetEntry() const return get_small_scenery_entry(entryIndex); } -rct_scenery_entry* get_small_scenery_entry(int32_t entryIndex) +rct_scenery_entry* get_small_scenery_entry(ObjectEntryIndex entryIndex) { rct_scenery_entry* result = nullptr; auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); diff --git a/src/openrct2/world/SmallScenery.h b/src/openrct2/world/SmallScenery.h index 870269d67d..fff3b1ba73 100644 --- a/src/openrct2/world/SmallScenery.h +++ b/src/openrct2/world/SmallScenery.h @@ -54,4 +54,4 @@ enum }; bool scenery_small_entry_has_flag(const rct_scenery_entry* sceneryEntry, uint32_t flags); -rct_scenery_entry* get_small_scenery_entry(int32_t entryIndex); +rct_scenery_entry* get_small_scenery_entry(ObjectEntryIndex entryIndex); diff --git a/src/openrct2/world/TileElement.h b/src/openrct2/world/TileElement.h index a200ffaee5..063f84329e 100644 --- a/src/openrct2/world/TileElement.h +++ b/src/openrct2/world/TileElement.h @@ -405,7 +405,7 @@ assert_struct_size(SmallSceneryElement, 16); struct LargeSceneryElement : TileElementBase { private: - uint16_t EntryIndex; + ObjectEntryIndex EntryIndex; ::BannerIndex BannerIndex; uint8_t SequenceIndex; uint8_t Colour[3]; @@ -416,8 +416,8 @@ private: #pragma clang diagnostic pop public: - uint16_t GetEntryIndex() const; - void SetEntryIndex(uint16_t newIndex); + ObjectEntryIndex GetEntryIndex() const; + void SetEntryIndex(ObjectEntryIndex newIndex); rct_scenery_entry* GetEntry() const; uint8_t GetSequenceIndex() const; diff --git a/test/testpaint/Compat.cpp b/test/testpaint/Compat.cpp index f41b14cab2..28cca25c60 100644 --- a/test/testpaint/Compat.cpp +++ b/test/testpaint/Compat.cpp @@ -124,9 +124,9 @@ Ride* get_ride(ride_id_t index) return &gRideList[index]; } -rct_ride_entry* get_ride_entry(int index) +rct_ride_entry* get_ride_entry(ObjectEntryIndex index) { - if (index < 0 || index >= object_entry_group_counts[OBJECT_TYPE_RIDE]) + if (index >= object_entry_group_counts[OBJECT_TYPE_RIDE]) { log_error("invalid index %d for ride type", index); return nullptr;