mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 07:43:01 +01:00
Rewrite GetNameAndPrice using templated subfunction
This commit is contained in:
@@ -1469,70 +1469,51 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<StringId, money64> GetNameAndPrice(ScenerySelection selectedScenery)
|
template<typename TObjectType>
|
||||||
|
std::pair<StringId, money64> GetNameAndPriceByType(const ScenerySelection& selectedScenery)
|
||||||
{
|
{
|
||||||
StringId name = STR_UNKNOWN_OBJECT_TYPE;
|
auto* sceneryEntry = ObjectManager::GetObjectEntry<TObjectType>(selectedScenery.EntryIndex);
|
||||||
money64 price = kMoney64Undefined;
|
if (sceneryEntry != nullptr)
|
||||||
if (selectedScenery.IsUndefined() && gSceneryPlaceCost != kMoney64Undefined)
|
|
||||||
{
|
{
|
||||||
price = gSceneryPlaceCost;
|
return { sceneryEntry->name, sceneryEntry->price };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
return { STR_UNKNOWN_OBJECT_TYPE, kMoney64Undefined };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<StringId, money64> GetNameAndPrice(const ScenerySelection& selectedScenery)
|
||||||
|
{
|
||||||
|
if (!selectedScenery.IsUndefined())
|
||||||
{
|
{
|
||||||
switch (selectedScenery.SceneryType)
|
switch (selectedScenery.SceneryType)
|
||||||
{
|
{
|
||||||
case SCENERY_TYPE_SMALL:
|
case SCENERY_TYPE_SMALL:
|
||||||
{
|
{
|
||||||
auto* sceneryEntry = ObjectManager::GetObjectEntry<SmallSceneryEntry>(selectedScenery.EntryIndex);
|
return GetNameAndPriceByType<SmallSceneryEntry>(selectedScenery);
|
||||||
if (sceneryEntry != nullptr)
|
|
||||||
{
|
|
||||||
price = sceneryEntry->price;
|
|
||||||
name = sceneryEntry->name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case SCENERY_TYPE_PATH_ITEM:
|
case SCENERY_TYPE_PATH_ITEM:
|
||||||
{
|
{
|
||||||
auto* sceneryEntry = ObjectManager::GetObjectEntry<PathAdditionEntry>(selectedScenery.EntryIndex);
|
return GetNameAndPriceByType<PathAdditionEntry>(selectedScenery);
|
||||||
if (sceneryEntry != nullptr)
|
|
||||||
{
|
|
||||||
price = sceneryEntry->price;
|
|
||||||
name = sceneryEntry->name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case SCENERY_TYPE_WALL:
|
case SCENERY_TYPE_WALL:
|
||||||
{
|
{
|
||||||
auto* sceneryEntry = ObjectManager::GetObjectEntry<WallSceneryEntry>(selectedScenery.EntryIndex);
|
return GetNameAndPriceByType<WallSceneryEntry>(selectedScenery);
|
||||||
if (sceneryEntry != nullptr)
|
|
||||||
{
|
|
||||||
price = sceneryEntry->price;
|
|
||||||
name = sceneryEntry->name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case SCENERY_TYPE_LARGE:
|
case SCENERY_TYPE_LARGE:
|
||||||
{
|
{
|
||||||
auto* sceneryEntry = ObjectManager::GetObjectEntry<LargeSceneryEntry>(selectedScenery.EntryIndex);
|
return GetNameAndPriceByType<LargeSceneryEntry>(selectedScenery);
|
||||||
if (sceneryEntry != nullptr)
|
|
||||||
{
|
|
||||||
price = sceneryEntry->price;
|
|
||||||
name = sceneryEntry->name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case SCENERY_TYPE_BANNER:
|
case SCENERY_TYPE_BANNER:
|
||||||
{
|
{
|
||||||
auto* sceneryEntry = ObjectManager::GetObjectEntry<BannerSceneryEntry>(selectedScenery.EntryIndex);
|
return GetNameAndPriceByType<BannerSceneryEntry>(selectedScenery);
|
||||||
if (sceneryEntry != nullptr)
|
|
||||||
{
|
|
||||||
price = sceneryEntry->price;
|
|
||||||
name = sceneryEntry->name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringId name = STR_UNKNOWN_OBJECT_TYPE;
|
||||||
|
money64 price = gSceneryPlaceCost != kMoney64Undefined ? gSceneryPlaceCost : kMoney64Undefined;
|
||||||
return { name, price };
|
return { name, price };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user