From be3ca424f6ae8f7d9f6b21563152aa894b729c45 Mon Sep 17 00:00:00 2001 From: yexo Date: Thu, 7 Jan 2010 20:56:50 +0000 Subject: [PATCH] (svn r18755) -Fix [FS#3495] (r14847): CircularTileSearch skipped a few tiles close to the starting tile --- src/map.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index 4358745982..0d2b146cef 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -245,9 +245,9 @@ bool CircularTileSearch(TileIndex *tile, uint size, TestTileOnSearchProc proc, v * separately, as the pattern of uneven sides requires to go around the center */ if (proc(*tile, user_data)) return true; - /* If tile test is not successful, get one tile down and left, + /* If tile test is not successful, get one tile up, * ready for a test in first circle around center tile */ - *tile = TILE_ADD(*tile, TileOffsByDir(DIR_W)); + *tile = TILE_ADD(*tile, TileOffsByDir(DIR_N)); return CircularTileSearch(tile, size / 2, 1, 1, proc, user_data); } else { return CircularTileSearch(tile, size / 2, 0, 0, proc, user_data); @@ -261,7 +261,8 @@ bool CircularTileSearch(TileIndex *tile, uint size, TestTileOnSearchProc proc, v * without a hole, set either h or w to zero. * Every tile will be tested by means of the callback function proc, * which will determine if yes or no the given tile meets criteria of search. - * @param tile to start the search from. Upon completion, it will return the tile matching the search + * @param tile to start the search from. Upon completion, it will return the tile matching the search. + * This tile should be directly north of the hole (if any). * @param radius How many tiles to search outwards. Note: This is a radius and thus different * from the size parameter of the other CircularTileSearch function, which is a diameter. * @param w the width of the inner rectangle