summaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/map.cpp b/src/map.cpp
index ae05a6cd3..70d9cce83 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -225,6 +225,23 @@ uint DistanceFromEdge(TileIndex tile)
}
/*!
+ * Gets the distance to the edge of the map in given direction.
+ * @param tile the tile to get the distance from
+ * @param diagdir the direction of interest
+ * @return the distance from the edge in tiles
+ */
+uint DistanceFromEdgeDir(TileIndex tile, DiagDirection dir)
+{
+ switch (dir) {
+ case DIAGDIR_NE: return TileX(tile) - (_settings_game.construction.freeform_edges ? 1 : 0);
+ case DIAGDIR_NW: return TileY(tile) - (_settings_game.construction.freeform_edges ? 1 : 0);
+ case DIAGDIR_SW: return MapMaxX() - TileX(tile) - 1;
+ case DIAGDIR_SE: return MapMaxY() - TileY(tile) - 1;
+ default: NOT_REACHED();
+ }
+}
+
+/*!
* Function performing a search around a center tile and going outward, thus in circle.
* Although it really is a square search...
* Every tile will be tested by means of the callback function proc,