1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 20:43:04 +01:00

Reduce duplicate code

This commit is contained in:
ζeh Matt
2021-09-03 14:08:17 +03:00
parent a44f3017dc
commit 976c614881

View File

@@ -469,6 +469,18 @@ private:
log_verbose("%u / %u objects unloaded", numObjectsUnloaded, totalObjectsLoaded);
}
template<typename T> static void UpdateSceneryGroupIndexes(Object* object)
{
auto* sceneryEntry = static_cast<T*>(object->GetLegacyData());
sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
}
template<> static void UpdateSceneryGroupIndexes<SceneryGroupObject>(Object* object)
{
auto sgObject = dynamic_cast<SceneryGroupObject*>(object);
sgObject->UpdateEntryIndexes();
}
void UpdateSceneryGroupIndexes()
{
for (auto& loadedObject : _loadedObjects)
@@ -480,41 +492,23 @@ private:
switch (loadedObject->GetObjectType())
{
case ObjectType::SmallScenery:
{
auto* sceneryEntry = static_cast<SmallSceneryEntry*>(loadedObject->GetLegacyData());
sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
UpdateSceneryGroupIndexes<SmallSceneryEntry>(loadedObject);
break;
}
case ObjectType::LargeScenery:
{
auto* sceneryEntry = static_cast<LargeSceneryEntry*>(loadedObject->GetLegacyData());
sceneryEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
UpdateSceneryGroupIndexes<LargeSceneryEntry>(loadedObject);
break;
}
case ObjectType::Walls:
{
auto* wallEntry = static_cast<WallSceneryEntry*>(loadedObject->GetLegacyData());
wallEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
UpdateSceneryGroupIndexes<WallSceneryEntry>(loadedObject);
break;
}
case ObjectType::Banners:
{
auto* bannerEntry = static_cast<BannerSceneryEntry*>(loadedObject->GetLegacyData());
bannerEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
UpdateSceneryGroupIndexes<BannerSceneryEntry>(loadedObject);
break;
}
case ObjectType::PathBits:
{
auto* pathBitEntry = static_cast<PathBitEntry*>(loadedObject->GetLegacyData());
pathBitEntry->scenery_tab_id = GetPrimarySceneryGroupEntryIndex(loadedObject);
UpdateSceneryGroupIndexes<PathBitEntry>(loadedObject);
break;
}
case ObjectType::SceneryGroup:
{
auto sgObject = dynamic_cast<SceneryGroupObject*>(loadedObject);
sgObject->UpdateEntryIndexes();
UpdateSceneryGroupIndexes<SceneryGroupObject>(loadedObject);
break;
}
default:
// This switch only handles scenery ObjectTypes.
break;