diff options
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 17 |
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, |