From 976c6148812f0ccf1ea9b43236e28631f37980df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Fri, 3 Sep 2021 14:08:17 +0300 Subject: [PATCH] Reduce duplicate code --- src/openrct2/object/ObjectManager.cpp | 42 ++++++++++++--------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/openrct2/object/ObjectManager.cpp b/src/openrct2/object/ObjectManager.cpp index 14902b118c..ef84127b3d 100644 --- a/src/openrct2/object/ObjectManager.cpp +++ b/src/openrct2/object/ObjectManager.cpp @@ -469,6 +469,18 @@ private: log_verbose("%u / %u objects unloaded", numObjectsUnloaded, totalObjectsLoaded); } + template static void UpdateSceneryGroupIndexes(Object* object) + { + auto* sceneryEntry = static_cast(object->GetLegacyData()); + sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + } + + template<> static void UpdateSceneryGroupIndexes(Object* object) + { + auto sgObject = dynamic_cast(object); + sgObject->UpdateEntryIndexes(); + } + void UpdateSceneryGroupIndexes() { for (auto& loadedObject : _loadedObjects) @@ -480,41 +492,23 @@ private: switch (loadedObject->GetObjectType()) { case ObjectType::SmallScenery: - { - auto* sceneryEntry = static_cast(loadedObject->GetLegacyData()); - sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + UpdateSceneryGroupIndexes(loadedObject); break; - } case ObjectType::LargeScenery: - { - auto* sceneryEntry = static_cast(loadedObject->GetLegacyData()); - sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + UpdateSceneryGroupIndexes(loadedObject); break; - } case ObjectType::Walls: - { - auto* wallEntry = static_cast(loadedObject->GetLegacyData()); - wallEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + UpdateSceneryGroupIndexes(loadedObject); break; - } case ObjectType::Banners: - { - auto* bannerEntry = static_cast(loadedObject->GetLegacyData()); - bannerEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + UpdateSceneryGroupIndexes(loadedObject); break; - } case ObjectType::PathBits: - { - auto* pathBitEntry = static_cast(loadedObject->GetLegacyData()); - pathBitEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject); + UpdateSceneryGroupIndexes(loadedObject); break; - } case ObjectType::SceneryGroup: - { - auto sgObject = dynamic_cast(loadedObject); - sgObject->UpdateEntryIndexes(); + UpdateSceneryGroupIndexes(loadedObject); break; - } default: // This switch only handles scenery ObjectTypes. break;