From 026dba0348926fcb4988218b84423b69ccf00578 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 10 Nov 2015 19:38:48 +0000 Subject: [PATCH] Fix issue with last commit. If large scenery was outside of selection area it would not have its flag reset. Now it will clear the flag for all large tiles. This could do with improving at some point in the future --- src/world/map.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/world/map.c b/src/world/map.c index 7b9083b36f..252c9e41da 100644 --- a/src/world/map.c +++ b/src/world/map.c @@ -1476,11 +1476,12 @@ restart_from_beginning: /* Function to clear the flag that is set to prevent cost duplication * when using the clear scenery tool with large scenery. */ -void map_reset_clear_large_scenery_flag(int x0, int y0, int x1, int y1){ +void map_reset_clear_large_scenery_flag(){ rct_map_element* mapElement; - for (int y = y0; y <= y1; y += 32) { - for (int x = x0; x <= x1; x += 32) { - mapElement = map_get_first_element_at(x / 32, y / 32); + // TODO: Improve efficiency of this + for (int y = 0; y <= 255; y++) { + for (int x = 0; x <= 255; x++) { + mapElement = map_get_first_element_at(x, y); do { if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { mapElement->flags &= ~(1 << 6); @@ -1527,7 +1528,7 @@ money32 map_clear_scenery(int x0, int y0, int x1, int y1, int clear, int flags) } if (clear & (1 << 1)) { - map_reset_clear_large_scenery_flag(x0, y0, x1, y1); + map_reset_clear_large_scenery_flag(); } return noValidTiles ? MONEY32_UNDEFINED : totalCost;