(svn r21470) -Codechange: add method to get the distance from the edge in a given direction

pull/155/head
rubidium 14 years ago
parent df058ab134
commit 26718abaf4

@ -224,6 +224,23 @@ uint DistanceFromEdge(TileIndex tile)
return min(minl, minh);
}
/*!
* 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...

@ -331,6 +331,7 @@ uint DistanceSquare(TileIndex, TileIndex); ///< euclidian- or L2-Norm squared
uint DistanceMax(TileIndex, TileIndex); ///< also known as L-Infinity-Norm
uint DistanceMaxPlusManhattan(TileIndex, TileIndex); ///< Max + Manhattan
uint DistanceFromEdge(TileIndex); ///< shortest distance from any edge of the map
uint DistanceFromEdgeDir(TileIndex, DiagDirection); ///< distance from the map edge in given direction
/**
* A loop which iterates to a square of tiles

Loading…
Cancel
Save