summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/map.cpp b/src/map.cpp
index 8e7aeffed..cdca65e00 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -307,12 +307,17 @@ bool CircularTileSearch(TileIndex *tile, uint radius, uint w, uint h, TestTileOn
uint extent[DIAGDIR_END] = { w, h, w, h };
for (uint n = 0; n < radius; n++) {
- for (DiagDirection dir = DIAGDIR_NE; dir < DIAGDIR_END; dir++) {
+ for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
+ /* Is the tile within the map? */
for (uint j = extent[dir] + n * 2 + 1; j != 0; j--) {
- if (x <= MapMaxX() && y <= MapMaxY() && ///< Is the tile within the map?
- proc(TileXY(x, y), user_data)) { ///< Is the callback successful?
- *tile = TileXY(x, y);
- return true; ///< then stop the search
+ if (x < MapSizeX() && y < MapSizeY()) {
+ TileIndex t = TileXY(x, y);
+ /* Is the callback successful? */
+ if (proc(t, user_data)) {
+ /* Stop the search */
+ *tile = t;
+ return true;
+ }
}
/* Step to the next 'neighbour' in the circular line */