From af6f575e78df7060789527d2ddc27bfbce9a5a3d Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Wed, 9 Feb 2022 17:28:15 +0000 Subject: [PATCH] Remove empty vector entries and refactor --- src/openrct2/world/MapGen.cpp | 43 +++++++++++++---------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/src/openrct2/world/MapGen.cpp b/src/openrct2/world/MapGen.cpp index 6cb0fcd062..8787e543db 100644 --- a/src/openrct2/world/MapGen.cpp +++ b/src/openrct2/world/MapGen.cpp @@ -274,14 +274,24 @@ static bool MapGenSurfaceTakesSnowTrees(const TerrainSurfaceObject& surface) return id == "rct2.terrain_surface.ice"; } +template static bool TryFindTreeInList(std::string_view id, const T& treeList) +{ + for (size_t j = 0; j < std::size(treeList); j++) + { + if (treeList[j] == id) + return true; + } + return false; +} + /** * Randomly places a selection of preset trees on the map. Picks the right tree for the terrain it is placing it on. */ static void mapgen_place_trees() { - std::vector grassTreeIds(std::size(GrassTrees), OBJECT_ENTRY_INDEX_NULL); - std::vector desertTreeIds(std::size(DesertTrees), OBJECT_ENTRY_INDEX_NULL); - std::vector snowTreeIds(std::size(SnowTrees), OBJECT_ENTRY_INDEX_NULL); + std::vector grassTreeIds; + std::vector desertTreeIds; + std::vector snowTreeIds; for (int32_t i = 0; i < object_entry_group_counts[EnumValue(ObjectType::SmallScenery)]; i++) { @@ -291,38 +301,17 @@ static void mapgen_place_trees() if (sceneryEntry == nullptr) continue; - uint32_t j; - for (j = 0; j < std::size(GrassTrees); j++) - { - if (GrassTrees[j] == entry->GetIdentifier()) - break; - } - if (j != std::size(GrassTrees)) + if (TryFindTreeInList(entry->GetIdentifier(), GrassTrees)) { grassTreeIds.push_back(i); - continue; } - - for (j = 0; j < std::size(DesertTrees); j++) - { - if (DesertTrees[j] == entry->GetIdentifier()) - break; - } - if (j != std::size(DesertTrees)) + else if (TryFindTreeInList(entry->GetIdentifier(), DesertTrees)) { desertTreeIds.push_back(i); - continue; } - - for (j = 0; j < std::size(SnowTrees); j++) - { - if (SnowTrees[j] == entry->GetIdentifier()) - break; - } - if (j != std::size(SnowTrees)) + else if (TryFindTreeInList(entry->GetIdentifier(), SnowTrees)) { snowTreeIds.push_back(i); - continue; } }