From 9e89be71ab67fc24fa02ff128b0b369e2c0a1b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Mon, 29 Nov 2021 13:05:32 +0200 Subject: [PATCH] Refactor iterating over all map tiles in ride_clear_leftover_entrances --- src/openrct2/ride/Ride.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 91edecca26..79cac5be5e 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -56,6 +56,7 @@ #include "../world/MapAnimation.h" #include "../world/Park.h" #include "../world/Scenery.h" +#include "../world/TileElementsView.h" #include "CableLift.h" #include "RideAudio.h" #include "RideData.h" @@ -5697,17 +5698,23 @@ void determine_ride_entrance_and_exit_locations() void ride_clear_leftover_entrances(Ride* ride) { - tile_element_iterator it; + const auto mapSizeXY = GetMapSizeMaxXY(); - tile_element_iterator_begin(&it); - while (tile_element_iterator_next(&it)) + for (TileCoordsXY tilePos = {}; tilePos.x < mapSizeXY; ++tilePos.x) { - if (it.element->GetType() == TILE_ELEMENT_TYPE_ENTRANCE - && it.element->AsEntrance()->GetEntranceType() != ENTRANCE_TYPE_PARK_ENTRANCE - && it.element->AsEntrance()->GetRideIndex() == ride->id) + for (; tilePos.y < mapSizeXY; ++tilePos.y) { - tile_element_remove(it.element); - tile_element_iterator_restart_for_tile(&it); + for (auto* entrance : TileElementsView(tilePos.ToCoordsXY())) + { + const bool isRideEntranceExit = entrance->GetEntranceType() == ENTRANCE_TYPE_RIDE_ENTRANCE + || entrance->GetEntranceType() == ENTRANCE_TYPE_RIDE_EXIT; + if (!isRideEntranceExit) + continue; + if (entrance->GetRideIndex() != ride->id) + continue; + + tile_element_remove(entrance->as()); + } } } }