diff --git a/src/openrct2-ui/interface/ViewportInteraction.cpp b/src/openrct2-ui/interface/ViewportInteraction.cpp index 0b121038b7..d37f85d9c1 100644 --- a/src/openrct2-ui/interface/ViewportInteraction.cpp +++ b/src/openrct2-ui/interface/ViewportInteraction.cpp @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 6883e72723..ab0307483f 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -32,7 +32,6 @@ #include #include #include -#include #include #include @@ -146,7 +145,7 @@ private: const SceneryGroupEntry* GetSceneryGroupEntry() const { - return ::GetSceneryGroupEntry(SceneryGroupIndex); + return OpenRCT2::ObjectManager::GetObjectEntry(SceneryGroupIndex); } }; @@ -457,7 +456,8 @@ public: } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_LARGE) { - gCurrentToolId = static_cast(GetLargeSceneryEntry(tabSelectedScenery.EntryIndex)->tool_id); + gCurrentToolId = static_cast( + OpenRCT2::ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_WALL) { @@ -466,7 +466,8 @@ public: } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_PATH_ITEM) { // path bit - gCurrentToolId = static_cast(GetFootpathItemEntry(tabSelectedScenery.EntryIndex)->tool_id); + gCurrentToolId = static_cast( + OpenRCT2::ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex)->tool_id); } else { // small scenery @@ -632,7 +633,7 @@ public: } else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_LARGE) { - auto* sceneryEntry = GetLargeSceneryEntry(tabSelectedScenery.EntryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(tabSelectedScenery.EntryIndex); if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR && !(sceneryEntry->flags & LARGE_SCENERY_FLAG_HIDE_PRIMARY_REMAP_BUTTON)) @@ -812,7 +813,7 @@ public: for (ObjectEntryIndex scenerySetIndex = 0; scenerySetIndex < MaxTabs - 1; scenerySetIndex++) { - const auto* sceneryGroupEntry = GetSceneryGroupEntry(scenerySetIndex); + const auto* sceneryGroupEntry = OpenRCT2::ObjectManager::GetObjectEntry(scenerySetIndex); if (sceneryGroupEntry != nullptr && SceneryGroupIsInvented(scenerySetIndex)) { SceneryTabInfo tabInfo; @@ -847,7 +848,7 @@ public: // large scenery for (ObjectEntryIndex sceneryId = 0; sceneryId < MAX_LARGE_SCENERY_OBJECTS; sceneryId++) { - const auto* sceneryEntry = GetLargeSceneryEntry(sceneryId); + const auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(sceneryId); if (sceneryEntry != nullptr) { InitSceneryEntry({ SCENERY_TYPE_LARGE, sceneryId }, sceneryEntry->scenery_tab_id); @@ -877,7 +878,7 @@ public: // path bits for (ObjectEntryIndex sceneryId = 0; sceneryId < MAX_PATH_ADDITION_OBJECTS; sceneryId++) { - const auto* sceneryEntry = GetFootpathItemEntry(sceneryId); + const auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(sceneryId); if (sceneryEntry != nullptr) { InitSceneryEntry({ SCENERY_TYPE_PATH_ITEM, sceneryId }, sceneryEntry->scenery_tab_id); @@ -1312,7 +1313,7 @@ private: } case SCENERY_TYPE_PATH_ITEM: { - auto* sceneryEntry = GetFootpathItemEntry(selectedScenery.EntryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); if (sceneryEntry != nullptr) { price = sceneryEntry->price; @@ -1332,7 +1333,7 @@ private: } case SCENERY_TYPE_LARGE: { - auto* sceneryEntry = GetLargeSceneryEntry(selectedScenery.EntryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); if (sceneryEntry != nullptr) { price = sceneryEntry->price; @@ -1382,7 +1383,7 @@ private: } else if (scenerySelection.SceneryType == SCENERY_TYPE_LARGE) { - auto sceneryEntry = GetLargeSceneryEntry(scenerySelection.EntryIndex); + auto sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); auto imageId = ImageId(sceneryEntry->image + gWindowSceneryRotation); if (sceneryEntry->flags & LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR) imageId = imageId.WithPrimary(gWindowSceneryPrimaryColour); @@ -1430,7 +1431,7 @@ private: } else if (scenerySelection.SceneryType == SCENERY_TYPE_PATH_ITEM) { - auto* pathBitEntry = GetFootpathItemEntry(scenerySelection.EntryIndex); + auto* pathBitEntry = OpenRCT2::ObjectManager::GetObjectEntry(scenerySelection.EntryIndex); auto imageId = ImageId(pathBitEntry->image); GfxDrawSprite(&dpi, imageId, { 11, 16 }); } diff --git a/src/openrct2-ui/windows/Sign.cpp b/src/openrct2-ui/windows/Sign.cpp index 4c825ad0e2..036b9f4be0 100644 --- a/src/openrct2-ui/windows/Sign.cpp +++ b/src/openrct2-ui/windows/Sign.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -263,7 +262,7 @@ public: } else { - auto* sceneryEntry = GetLargeSceneryEntry(_sceneryEntry); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryEntry); main_colour_btn->type = WindowWidgetType::Empty; text_colour_btn->type = WindowWidgetType::Empty; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index ef1957f7de..21e959317d 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -35,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -1146,8 +1146,7 @@ public: // Path addition if (tileElement->AsPath()->HasAddition()) { - const auto pathAdditionType = tileElement->AsPath()->GetAdditionEntryIndex(); - const auto* pathBitEntry = GetFootpathItemEntry(pathAdditionType); + const auto pathBitEntry = tileElement->AsPath()->GetAdditionEntry(); StringId additionNameId = pathBitEntry != nullptr ? pathBitEntry->name : static_cast(STR_UNKNOWN_OBJECT_TYPE); auto ft = Formatter(); @@ -1462,7 +1461,7 @@ public: { colours[1] }); // Banner info - auto* largeSceneryEntry = GetLargeSceneryEntry(largeSceneryType); + auto* largeSceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(largeSceneryType); if (largeSceneryEntry != nullptr && largeSceneryEntry->scrolling_mode != SCROLLING_MODE_NONE) { auto banner = sceneryElement->GetBanner(); diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index a5dfabbfde..1f47cf1dfd 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -64,7 +65,6 @@ #include #include #include -#include #include #include #include @@ -1065,7 +1065,7 @@ private: return; } - auto* sceneryEntry = GetLargeSceneryEntry(selection.EntryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(selection.EntryIndex); gMapSelectionTiles.clear(); for (auto* tile = sceneryEntry->tiles; tile->x_offset != static_cast(static_cast(0xFFFF)); @@ -1571,7 +1571,7 @@ private: case ViewportInteractionItem::LargeScenery: { auto entryIndex = info.Element->AsLargeScenery()->GetEntryIndex(); - auto* sceneryEntry = GetLargeSceneryEntry(entryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(entryIndex); if (sceneryEntry != nullptr) { WindowScenerySetSelectedItem( @@ -1598,7 +1598,7 @@ private: case ViewportInteractionItem::FootpathItem: { auto entryIndex = info.Element->AsPath()->GetAdditionEntryIndex(); - auto* pathBitEntry = GetFootpathItemEntry(entryIndex); + auto* pathBitEntry = OpenRCT2::ObjectManager::GetObjectEntry(entryIndex); if (pathBitEntry != nullptr) { WindowScenerySetSelectedItem( @@ -2020,7 +2020,7 @@ private: uint16_t maxPossibleHeight = ZoomLevel::max().ApplyTo( std::numeric_limits::max() - 32); - auto* sceneryEntry = GetLargeSceneryEntry(sceneryIndex); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(sceneryIndex); if (sceneryEntry) { int16_t maxClearZ = 0; diff --git a/src/openrct2/EditorObjectSelectionSession.cpp b/src/openrct2/EditorObjectSelectionSession.cpp index 86402667f3..e7bd586340 100644 --- a/src/openrct2/EditorObjectSelectionSession.cpp +++ b/src/openrct2/EditorObjectSelectionSession.cpp @@ -28,7 +28,6 @@ #include "scenario/Scenario.h" #include "windows/Intent.h" #include "world/Footpath.h" -#include "world/LargeScenery.h" #include "world/Scenery.h" #include diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index 5c771f004c..193f2f6660 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -40,6 +40,7 @@ #include "management/Research.h" #include "network/network.h" #include "object/Object.h" +#include "object/ObjectEntryManager.h" #include "object/ObjectList.h" #include "object/WaterEntry.h" #include "platform/Platform.h" @@ -148,7 +149,7 @@ enum */ void UpdatePaletteEffects() { - auto water_type = static_cast(ObjectEntryGetChunk(ObjectType::Water, 0)); + auto water_type = OpenRCT2::ObjectManager::GetObjectEntry(0); if (gClimateLightningFlash == 1) { diff --git a/src/openrct2/actions/ClearAction.cpp b/src/openrct2/actions/ClearAction.cpp index 5fd8fcbbab..a5e0724517 100644 --- a/src/openrct2/actions/ClearAction.cpp +++ b/src/openrct2/actions/ClearAction.cpp @@ -14,7 +14,6 @@ #include "../drawing/Drawing.h" #include "../localisation/StringIds.h" #include "../management/Finance.h" -#include "../world/LargeScenery.h" #include "../world/Location.hpp" #include "../world/Map.h" #include "FootpathRemoveAction.h" diff --git a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp index fead31c545..d22eb3a30a 100644 --- a/src/openrct2/actions/FootpathAdditionPlaceAction.cpp +++ b/src/openrct2/actions/FootpathAdditionPlaceAction.cpp @@ -16,6 +16,7 @@ #include "../localisation/StringIds.h" #include "../management/Finance.h" #include "../object/FootpathItemEntry.h" +#include "../object/ObjectEntryManager.h" #include "../world/Footpath.h" #include "../world/Location.hpp" #include "../world/Park.h" @@ -94,7 +95,7 @@ GameActions::Result FootpathAdditionPlaceAction::Query() const if (_pathItemType != 0) { - auto* pathBitEntry = GetFootpathItemEntry(_pathItemType - 1); + auto* pathBitEntry = OpenRCT2::ObjectManager::GetObjectEntry(_pathItemType - 1); if (pathBitEntry == nullptr) { return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_NONE); @@ -164,7 +165,7 @@ GameActions::Result FootpathAdditionPlaceAction::Execute() const if (_pathItemType != 0) { - auto* pathBitEntry = GetFootpathItemEntry(_pathItemType - 1); + auto* pathBitEntry = OpenRCT2::ObjectManager::GetObjectEntry(_pathItemType - 1); if (pathBitEntry == nullptr) { return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_NONE); @@ -192,7 +193,7 @@ GameActions::Result FootpathAdditionPlaceAction::Execute() const pathElement->SetIsBroken(false); if (_pathItemType != 0) { - auto* pathBitEntry = GetFootpathItemEntry(_pathItemType - 1); + auto* pathBitEntry = OpenRCT2::ObjectManager::GetObjectEntry(_pathItemType - 1); if (pathBitEntry != nullptr && pathBitEntry->flags & PATH_BIT_FLAG_IS_BIN) { pathElement->SetAdditionStatus(255); diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 779c9ed798..4d6dd9dc3e 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -12,12 +12,12 @@ #include "../OpenRCT2.h" #include "../management/Finance.h" #include "../object/LargeSceneryEntry.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectLimits.h" #include "../ride/Ride.h" #include "../ride/RideConstruction.h" #include "../world/Banner.h" #include "../world/ConstructionClearance.h" -#include "../world/LargeScenery.h" #include "../world/MapAnimation.h" #include "../world/Surface.h" @@ -81,7 +81,7 @@ GameActions::Result LargeSceneryPlaceAction::Query() const return GameActions::Result(GameActions::Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_NONE); } - auto* sceneryEntry = GetLargeSceneryEntry(_sceneryType); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryType); if (sceneryEntry == nullptr) { LOG_ERROR("Invalid game command for scenery placement, sceneryType = %u", _sceneryType); @@ -193,7 +193,7 @@ GameActions::Result LargeSceneryPlaceAction::Execute() const money32 supportsCost = 0; - auto* sceneryEntry = GetLargeSceneryEntry(_sceneryType); + auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(_sceneryType); if (sceneryEntry == nullptr) { LOG_ERROR("Invalid game command for scenery placement, sceneryType = %u", _sceneryType); diff --git a/src/openrct2/actions/WallPlaceAction.cpp b/src/openrct2/actions/WallPlaceAction.cpp index ff832d9580..4dd23dcb79 100644 --- a/src/openrct2/actions/WallPlaceAction.cpp +++ b/src/openrct2/actions/WallPlaceAction.cpp @@ -19,7 +19,6 @@ #include "../ride/TrackDesign.h" #include "../world/Banner.h" #include "../world/ConstructionClearance.h" -#include "../world/LargeScenery.h" #include "../world/MapAnimation.h" #include "../world/Surface.h" #include "../world/Wall.h" diff --git a/src/openrct2/actions/WallSetColourAction.cpp b/src/openrct2/actions/WallSetColourAction.cpp index 8bc5fdb53e..b696dd89fc 100644 --- a/src/openrct2/actions/WallSetColourAction.cpp +++ b/src/openrct2/actions/WallSetColourAction.cpp @@ -15,7 +15,6 @@ #include "../ride/Track.h" #include "../ride/TrackData.h" #include "../world/Banner.h" -#include "../world/LargeScenery.h" #include "../world/MapAnimation.h" #include "../world/Scenery.h" #include "../world/Surface.h" diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index b2324df5cc..0f27f2bae5 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -16,6 +16,7 @@ #include "../config/Config.h" #include "../core/Guard.hpp" #include "../object/Object.h" +#include "../object/ObjectEntryManager.h" #include "../object/WaterEntry.h" #include "../platform/Platform.h" #include "../sprites.h" @@ -622,7 +623,7 @@ void LoadPalette() return; } - auto water_type = static_cast(ObjectEntryGetChunk(ObjectType::Water, 0)); + auto water_type = OpenRCT2::ObjectManager::GetObjectEntry(0); uint32_t palette = 0x5FC; diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index 5f80d9b3da..7318db132f 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -49,7 +49,6 @@ #include "../windows/Intent.h" #include "../world/Climate.h" #include "../world/Footpath.h" -#include "../world/LargeScenery.h" #include "../world/Location.hpp" #include "../world/Map.h" #include "../world/Park.h" diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index e1ea79126a..98e84c1c32 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -48,7 +48,6 @@ #include "../world/ConstructionClearance.h" #include "../world/Entrance.h" #include "../world/Footpath.h" -#include "../world/LargeScenery.h" #include "../world/Map.h" #include "../world/Park.h" #include "../world/Scenery.h" diff --git a/src/openrct2/entity/Staff.cpp b/src/openrct2/entity/Staff.cpp index cb15bf6af2..4810c71d5e 100644 --- a/src/openrct2/entity/Staff.cpp +++ b/src/openrct2/entity/Staff.cpp @@ -24,6 +24,7 @@ #include "../management/Finance.h" #include "../network/network.h" #include "../object/FootpathItemEntry.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/SceneryGroupEntry.h" @@ -1032,7 +1033,7 @@ uint32_t StaffGetAvailableEntertainerCostumes() { if (SceneryGroupIsInvented(i)) { - const auto sgEntry = GetSceneryGroupEntry(i); + const auto sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); entertainerCostumes |= sgEntry->entertainer_costumes; } } diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index ea3040e219..22e47c0c3d 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -318,6 +318,7 @@ + diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 61b8970e61..229cecb9e2 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -21,6 +21,7 @@ #include "../localisation/Formatter.h" #include "../localisation/Localisation.h" #include "../localisation/StringIds.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectList.h" #include "../object/RideObject.h" #include "../object/SceneryGroupEntry.h" @@ -268,7 +269,7 @@ void ResearchFinishItem(const ResearchItem& researchItem) else { // Scenery - SceneryGroupEntry* sceneryGroupEntry = GetSceneryGroupEntry(researchItem.entryIndex); + const auto* sceneryGroupEntry = OpenRCT2::ObjectManager::GetObjectEntry(researchItem.entryIndex); if (sceneryGroupEntry != nullptr) { SceneryGroupSetInvented(researchItem.entryIndex); @@ -465,7 +466,7 @@ void ResearchPopulateListRandom() // Scenery for (uint32_t i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++) { - SceneryGroupEntry* sceneryGroupEntry = GetSceneryGroupEntry(i); + const auto* sceneryGroupEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); if (sceneryGroupEntry == nullptr) { continue; @@ -581,7 +582,7 @@ void ScenerySetNotInvented(const ScenerySelection& sceneryItem) bool SceneryGroupIsInvented(int32_t sgIndex) { - const auto sgEntry = GetSceneryGroupEntry(sgIndex); + const auto sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(sgIndex); if (sgEntry == nullptr || sgEntry->SceneryEntries.empty()) { return false; @@ -606,7 +607,7 @@ bool SceneryGroupIsInvented(int32_t sgIndex) void SceneryGroupSetInvented(int32_t sgIndex) { - const auto sgEntry = GetSceneryGroupEntry(sgIndex); + const auto sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(sgIndex); if (sgEntry != nullptr) { for (const auto& entry : sgEntry->SceneryEntries) @@ -620,7 +621,7 @@ void SetAllSceneryGroupsNotInvented() { for (int32_t i = 0; i < MAX_SCENERY_GROUP_OBJECTS; ++i) { - SceneryGroupEntry* scenery_set = GetSceneryGroupEntry(i); + const auto* scenery_set = OpenRCT2::ObjectManager::GetObjectEntry(i); if (scenery_set == nullptr) { continue; @@ -686,7 +687,7 @@ StringId ResearchItem::GetName() const return rideEntry->naming.Name; } - SceneryGroupEntry* sceneryEntry = GetSceneryGroupEntry(entryIndex); + const auto* sceneryEntry = OpenRCT2::ObjectManager::GetObjectEntry(entryIndex); if (sceneryEntry == nullptr) { return STR_EMPTY; @@ -722,7 +723,7 @@ static void ResearchRemoveNullItems(std::vector& items) } else { - return GetSceneryGroupEntry(researchItem.entryIndex) == nullptr; + return OpenRCT2::ObjectManager::GetObjectEntry(researchItem.entryIndex) == nullptr; } }); items.erase(it, std::end(items)); @@ -747,7 +748,7 @@ static void ResearchMarkItemAsResearched(const ResearchItem& item) } else if (item.type == Research::EntryType::Scenery) { - const auto sgEntry = GetSceneryGroupEntry(item.entryIndex); + const auto sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(item.entryIndex); if (sgEntry != nullptr) { for (const auto& sceneryEntry : sgEntry->SceneryEntries) @@ -793,7 +794,7 @@ static void ResearchAddAllMissingItems(bool isResearched) for (ObjectEntryIndex i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++) { - const auto* groupEntry = GetSceneryGroupEntry(i); + const auto* groupEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); if (groupEntry != nullptr) { ResearchInsertSceneryGroupEntry(i, isResearched); diff --git a/src/openrct2/object/FootpathItemEntry.h b/src/openrct2/object/FootpathItemEntry.h index eb2c7c7d70..4729b52efd 100644 --- a/src/openrct2/object/FootpathItemEntry.h +++ b/src/openrct2/object/FootpathItemEntry.h @@ -36,6 +36,8 @@ enum struct PathBitEntry { + static constexpr auto kObjectType = ObjectType::PathBits; + StringId name; uint32_t image; uint16_t flags; diff --git a/src/openrct2/object/LargeSceneryEntry.h b/src/openrct2/object/LargeSceneryEntry.h index dbbc4f668e..36a1a911df 100644 --- a/src/openrct2/object/LargeSceneryEntry.h +++ b/src/openrct2/object/LargeSceneryEntry.h @@ -61,6 +61,8 @@ enum LARGE_SCENERY_TEXT_FLAGS struct LargeSceneryEntry { + static constexpr auto kObjectType = ObjectType::LargeScenery; + StringId name; uint32_t image; CursorID tool_id; diff --git a/src/openrct2/object/SceneryGroupEntry.h b/src/openrct2/object/SceneryGroupEntry.h index ebbec326b6..571f52adcf 100644 --- a/src/openrct2/object/SceneryGroupEntry.h +++ b/src/openrct2/object/SceneryGroupEntry.h @@ -17,6 +17,8 @@ struct SceneryGroupEntry { + static constexpr auto kObjectType = ObjectType::SceneryGroup; + StringId name; uint32_t image; std::vector SceneryEntries; diff --git a/src/openrct2/object/WaterEntry.h b/src/openrct2/object/WaterEntry.h index dbb85d0099..1ee4afe823 100644 --- a/src/openrct2/object/WaterEntry.h +++ b/src/openrct2/object/WaterEntry.h @@ -10,6 +10,7 @@ #pragma once #include "../common.h" +#include "ObjectTypes.h" enum { @@ -18,6 +19,8 @@ enum struct WaterObjectEntry { + static constexpr auto kObjectType = ObjectType::Water; + StringId string_idx; // 0x00 uint32_t image_id; // 0x02 uint32_t palette_index_1; // 0x06 diff --git a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp index 2b6cfd9af9..c6d2c90217 100644 --- a/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/Paint.LargeScenery.cpp @@ -23,7 +23,6 @@ #include "../../ride/TrackDesign.h" #include "../../util/Util.h" #include "../../world/Banner.h" -#include "../../world/LargeScenery.h" #include "../../world/Map.h" #include "../../world/Scenery.h" #include "../../world/TileInspector.h" diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index a60f88e6cc..d9e57794b0 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -61,7 +61,6 @@ #include "../world/Climate.h" #include "../world/Entrance.h" #include "../world/Footpath.h" -#include "../world/LargeScenery.h" #include "../world/MapAnimation.h" #include "../world/Park.h" #include "../world/Scenery.h" diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index 04ecaee387..cebe7f3d89 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -19,7 +19,6 @@ #include "../scenario/Scenario.h" #include "../world/Banner.h" #include "../world/Footpath.h" -#include "../world/LargeScenery.h" #include "../world/SmallScenery.h" #include "../world/Surface.h" #include "../world/TileElement.h" diff --git a/src/openrct2/ride/TrackDesignSave.cpp b/src/openrct2/ride/TrackDesignSave.cpp index 9b3458e3b2..6a13be56e8 100644 --- a/src/openrct2/ride/TrackDesignSave.cpp +++ b/src/openrct2/ride/TrackDesignSave.cpp @@ -24,7 +24,6 @@ #include "../util/Util.h" #include "../windows/Intent.h" #include "../world/Footpath.h" -#include "../world/LargeScenery.h" #include "../world/Scenery.h" #include "../world/Wall.h" #include "RideData.h" diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 3e7f914c42..113790a089 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -36,6 +36,7 @@ #include "../management/Research.h" #include "../network/network.h" #include "../object/Object.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../object/WaterEntry.h" @@ -335,7 +336,7 @@ static void ScenarioWeekUpdate() RideCheckAllReachable(); RideUpdateFavouritedStat(); - auto water_type = static_cast(ObjectEntryGetChunk(ObjectType::Water, 0)); + auto water_type = OpenRCT2::ObjectManager::GetObjectEntry(0); if (month <= MONTH_APRIL && water_type != nullptr && water_type->flags & WATER_FLAGS_ALLOW_DUCKS) { diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 441b6f12b3..225be81f97 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -22,9 +22,11 @@ #include "../localisation/Localisation.h" #include "../management/Finance.h" #include "../network/network.h" +#include "../object/FootpathItemEntry.h" #include "../object/FootpathObject.h" #include "../object/FootpathRailingsObject.h" #include "../object/FootpathSurfaceObject.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectList.h" #include "../object/ObjectManager.h" #include "../paint/VirtualFloor.h" @@ -1617,11 +1619,11 @@ ObjectEntryIndex PathElement::GetAdditionEntryIndex() const return GetAddition() - 1; } -PathBitEntry* PathElement::GetAdditionEntry() const +const PathBitEntry* PathElement::GetAdditionEntry() const { if (!HasAddition()) return nullptr; - return GetFootpathItemEntry(GetAdditionEntryIndex()); + return OpenRCT2::ObjectManager::GetObjectEntry(GetAdditionEntryIndex()); } void PathElement::SetAddition(uint8_t newAddition) diff --git a/src/openrct2/world/LargeScenery.cpp b/src/openrct2/world/LargeScenery.cpp index 03da8e098e..63634ae76f 100644 --- a/src/openrct2/world/LargeScenery.cpp +++ b/src/openrct2/world/LargeScenery.cpp @@ -12,6 +12,7 @@ #include "../Context.h" #include "../common.h" #include "../object/LargeSceneryObject.h" +#include "../object/ObjectEntryManager.h" #include "../object/ObjectManager.h" #include "../world/Banner.h" #include "TileElement.h" @@ -86,9 +87,9 @@ ObjectEntryIndex LargeSceneryElement::GetEntryIndex() const return EntryIndex; } -LargeSceneryEntry* LargeSceneryElement::GetEntry() const +const LargeSceneryEntry* LargeSceneryElement::GetEntry() const { - return GetLargeSceneryEntry(GetEntryIndex()); + return OpenRCT2::ObjectManager::GetObjectEntry(GetEntryIndex()); } const LargeSceneryObject* LargeSceneryElement::GetObject() const @@ -110,15 +111,3 @@ void LargeSceneryElement::SetSequenceIndex(uint8_t sequence) { SequenceIndex = sequence; } - -LargeSceneryEntry* GetLargeSceneryEntry(ObjectEntryIndex entryIndex) -{ - LargeSceneryEntry* result = nullptr; - auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); - auto obj = objMgr.GetLoadedObject(ObjectType::LargeScenery, entryIndex); - if (obj != nullptr) - { - result = static_cast(obj->GetLegacyData()); - } - return result; -} diff --git a/src/openrct2/world/LargeScenery.h b/src/openrct2/world/LargeScenery.h index 9ec419f2da..de20838615 100644 --- a/src/openrct2/world/LargeScenery.h +++ b/src/openrct2/world/LargeScenery.h @@ -9,12 +9,6 @@ #pragma once -#include "../common.h" -#include "Map.h" -#include "TileElement.h" - -LargeSceneryEntry* GetLargeSceneryEntry(ObjectEntryIndex entryIndex); - enum { LARGE_SCENERY_ELEMENT_FLAGS2_ACCOUNTED = 1 << 0, diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 2d086319a1..1aef290df1 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -44,7 +44,6 @@ #include "Banner.h" #include "Climate.h" #include "Footpath.h" -#include "LargeScenery.h" #include "MapAnimation.h" #include "Park.h" #include "Scenery.h" diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index e3827c8bb9..c467fb10e7 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -25,7 +25,6 @@ #include "../world/Wall.h" #include "Banner.h" #include "Footpath.h" -#include "LargeScenery.h" #include "Map.h" #include "Scenery.h" diff --git a/src/openrct2/world/Scenery.cpp b/src/openrct2/world/Scenery.cpp index 4bd1327683..b164056b60 100644 --- a/src/openrct2/world/Scenery.cpp +++ b/src/openrct2/world/Scenery.cpp @@ -35,7 +35,6 @@ #include "../scenario/Scenario.h" #include "Climate.h" #include "Footpath.h" -#include "LargeScenery.h" #include "Map.h" #include "Park.h" #include "Wall.h" @@ -301,30 +300,6 @@ void SceneryRemoveGhostToolPlacement() } } -PathBitEntry* GetFootpathItemEntry(ObjectEntryIndex entryIndex) -{ - PathBitEntry* result = nullptr; - auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); - auto obj = objMgr.GetLoadedObject(ObjectType::PathBits, entryIndex); - if (obj != nullptr) - { - result = static_cast(obj->GetLegacyData()); - } - return result; -} - -SceneryGroupEntry* GetSceneryGroupEntry(ObjectEntryIndex entryIndex) -{ - SceneryGroupEntry* result = nullptr; - auto& objMgr = OpenRCT2::GetContext()->GetObjectManager(); - auto obj = objMgr.GetLoadedObject(ObjectType::SceneryGroup, entryIndex); - if (obj != nullptr) - { - result = static_cast(obj->GetLegacyData()); - } - return result; -} - int32_t WallEntryGetDoorSound(const WallSceneryEntry* wallEntry) { return (wallEntry->flags2 & WALL_SCENERY_2_DOOR_SOUND_MASK) >> WALL_SCENERY_2_DOOR_SOUND_SHIFT; @@ -383,11 +358,11 @@ static bool IsSceneryEntryValid(const ScenerySelection& item) case SCENERY_TYPE_SMALL: return OpenRCT2::ObjectManager::GetObjectEntry(item.EntryIndex) != nullptr; case SCENERY_TYPE_PATH_ITEM: - return GetFootpathItemEntry(item.EntryIndex) != nullptr; + return OpenRCT2::ObjectManager::GetObjectEntry(item.EntryIndex) != nullptr; case SCENERY_TYPE_WALL: return OpenRCT2::ObjectManager::GetObjectEntry(item.EntryIndex) != nullptr; case SCENERY_TYPE_LARGE: - return GetLargeSceneryEntry(item.EntryIndex) != nullptr; + return OpenRCT2::ObjectManager::GetObjectEntry(item.EntryIndex) != nullptr; case SCENERY_TYPE_BANNER: return OpenRCT2::ObjectManager::GetObjectEntry(item.EntryIndex) != nullptr; default: @@ -416,7 +391,7 @@ static std::vector GetAllMiscScenery() std::vector nonMiscScenery; for (ObjectEntryIndex i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++) { - const auto* sgEntry = GetSceneryGroupEntry(i); + const auto* sgEntry = OpenRCT2::ObjectManager::GetObjectEntry(i); if (sgEntry != nullptr) { nonMiscScenery.insert(nonMiscScenery.end(), sgEntry->SceneryEntries.begin(), sgEntry->SceneryEntries.end()); diff --git a/src/openrct2/world/Scenery.h b/src/openrct2/world/Scenery.h index e250c62ed7..ed02d0e91e 100644 --- a/src/openrct2/world/Scenery.h +++ b/src/openrct2/world/Scenery.h @@ -74,13 +74,8 @@ void SceneryUpdateTile(const CoordsXY& sceneryPos); void ScenerySetDefaultPlacementConfiguration(); void SceneryRemoveGhostToolPlacement(); -struct SceneryGroupEntry; -struct PathBitEntry; struct WallSceneryEntry; -PathBitEntry* GetFootpathItemEntry(ObjectEntryIndex entryIndex); -SceneryGroupEntry* GetSceneryGroupEntry(ObjectEntryIndex entryIndex); - int32_t WallEntryGetDoorSound(const WallSceneryEntry* wallEntry); bool IsSceneryAvailableToBuild(const ScenerySelection& item); diff --git a/src/openrct2/world/TileElement.cpp b/src/openrct2/world/TileElement.cpp index a557a0bb23..71754e6f33 100644 --- a/src/openrct2/world/TileElement.cpp +++ b/src/openrct2/world/TileElement.cpp @@ -16,7 +16,6 @@ #include "../object/WallSceneryEntry.h" #include "../ride/Track.h" #include "Banner.h" -#include "LargeScenery.h" #include "Location.hpp" #include "Scenery.h" diff --git a/src/openrct2/world/TileElement.h b/src/openrct2/world/TileElement.h index ad760e20c4..5ea4e8a092 100644 --- a/src/openrct2/world/TileElement.h +++ b/src/openrct2/world/TileElement.h @@ -306,7 +306,7 @@ public: bool HasAddition() const; uint8_t GetAddition() const; ObjectEntryIndex GetAdditionEntryIndex() const; - PathBitEntry* GetAdditionEntry() const; + const PathBitEntry* GetAdditionEntry() const; void SetAddition(uint8_t newAddition); bool AdditionIsGhost() const; @@ -475,7 +475,7 @@ private: public: ObjectEntryIndex GetEntryIndex() const; void SetEntryIndex(ObjectEntryIndex newIndex); - LargeSceneryEntry* GetEntry() const; + const LargeSceneryEntry* GetEntry() const; const LargeSceneryObject* GetObject() const; uint8_t GetSequenceIndex() const; diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 0040e2b094..6a0e9e6467 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -25,7 +25,6 @@ #include "../windows/TileInspectorGlobals.h" #include "Banner.h" #include "Footpath.h" -#include "LargeScenery.h" #include "Location.hpp" #include "Map.h" #include "Park.h" diff --git a/src/openrct2/world/Wall.cpp b/src/openrct2/world/Wall.cpp index d94c361a7e..42b9f70fb3 100644 --- a/src/openrct2/world/Wall.cpp +++ b/src/openrct2/world/Wall.cpp @@ -21,7 +21,6 @@ #include "../ride/Track.h" #include "../ride/TrackData.h" #include "Banner.h" -#include "LargeScenery.h" #include "Map.h" #include "MapAnimation.h" #include "Park.h"