From 8ca417baa910ad98d547155fb4dcf4d5dbc0957c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 18 Oct 2024 22:11:21 +0200 Subject: [PATCH] Codefix: do not wrap-around the map when flooding tiles --- src/water_cmd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index c4b01c05ed..0648ecef3c 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -1235,7 +1235,7 @@ void TileLoop_Water(TileIndex tile) switch (GetFloodingBehaviour(tile)) { case FLOOD_ACTIVE: for (Direction dir = DIR_BEGIN; dir < DIR_END; dir++) { - TileIndex dest = tile + TileOffsByDir(dir); + TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(dir)); if (!IsValidTile(dest)) continue; /* do not try to flood water tiles - increases performance a lot */ if (IsTileType(dest, MP_WATER)) continue; @@ -1255,8 +1255,8 @@ void TileLoop_Water(TileIndex tile) case FLOOD_DRYUP: { Slope slope_here = std::get<0>(GetFoundationSlope(tile)) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP; for (uint dir : SetBitIterator(_flood_from_dirs[slope_here])) { - TileIndex dest = tile + TileOffsByDir((Direction)dir); - if (dest >= Map::Size()) continue; + TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(static_cast(dir))); + if (!IsValidTile(dest)) continue; FloodingBehaviour dest_behaviour = GetFloodingBehaviour(dest); if ((dest_behaviour == FLOOD_ACTIVE) || (dest_behaviour == FLOOD_PASSIVE)) return;