From 06fc4c8955933e3d5827fbcbe48ba72b0e6a1922 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Sat, 18 Oct 2025 17:23:15 +0200 Subject: [PATCH] Rewrite GetNameAndPrice using templated subfunction --- src/openrct2-ui/windows/Scenery.cpp | 61 ++++++++++------------------- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 889911fb96..0cd0cedaee 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1469,70 +1469,51 @@ namespace OpenRCT2::Ui::Windows } } - std::pair GetNameAndPrice(ScenerySelection selectedScenery) + template + std::pair GetNameAndPriceByType(const ScenerySelection& selectedScenery) { - StringId name = STR_UNKNOWN_OBJECT_TYPE; - money64 price = kMoney64Undefined; - if (selectedScenery.IsUndefined() && gSceneryPlaceCost != kMoney64Undefined) + auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); + if (sceneryEntry != nullptr) { - price = gSceneryPlaceCost; + return { sceneryEntry->name, sceneryEntry->price }; } else + { + return { STR_UNKNOWN_OBJECT_TYPE, kMoney64Undefined }; + } + } + + std::pair GetNameAndPrice(const ScenerySelection& selectedScenery) + { + if (!selectedScenery.IsUndefined()) { switch (selectedScenery.SceneryType) { case SCENERY_TYPE_SMALL: { - auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); - if (sceneryEntry != nullptr) - { - price = sceneryEntry->price; - name = sceneryEntry->name; - } - break; + return GetNameAndPriceByType(selectedScenery); } case SCENERY_TYPE_PATH_ITEM: { - auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); - if (sceneryEntry != nullptr) - { - price = sceneryEntry->price; - name = sceneryEntry->name; - } - break; + return GetNameAndPriceByType(selectedScenery); } case SCENERY_TYPE_WALL: { - auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); - if (sceneryEntry != nullptr) - { - price = sceneryEntry->price; - name = sceneryEntry->name; - } - break; + return GetNameAndPriceByType(selectedScenery); } case SCENERY_TYPE_LARGE: { - auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); - if (sceneryEntry != nullptr) - { - price = sceneryEntry->price; - name = sceneryEntry->name; - } - break; + return GetNameAndPriceByType(selectedScenery); } case SCENERY_TYPE_BANNER: { - auto* sceneryEntry = ObjectManager::GetObjectEntry(selectedScenery.EntryIndex); - if (sceneryEntry != nullptr) - { - price = sceneryEntry->price; - name = sceneryEntry->name; - } - break; + return GetNameAndPriceByType(selectedScenery); } } } + + StringId name = STR_UNKNOWN_OBJECT_TYPE; + money64 price = gSceneryPlaceCost != kMoney64Undefined ? gSceneryPlaceCost : kMoney64Undefined; return { name, price }; }