summaryrefslogtreecommitdiff
path: root/tunnel_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'tunnel_map.c')
-rw-r--r--tunnel_map.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tunnel_map.c b/tunnel_map.c
index d39c7ef04..8752d8107 100644
--- a/tunnel_map.c
+++ b/tunnel_map.c
@@ -23,3 +23,30 @@ TileIndex GetOtherTunnelEnd(TileIndex tile)
return tile;
}
+
+
+static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
+{
+ TileIndexDiff delta = TileOffsByDir(dir);
+ uint height;
+
+ do {
+ tile -= delta;
+ height = GetTileZ(tile);
+ } while (z < height);
+
+ return
+ z == height &&
+ IsTileType(tile, MP_TUNNELBRIDGE) &&
+ GB(_m[tile].m5, 4, 4) == 0 &&
+ GetTunnelDirection(tile) == dir;
+}
+
+bool IsTunnelInWay(TileIndex tile, uint z)
+{
+ return
+ IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
+ IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
+ IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
+ IsTunnelInWayDir(tile, z, DIAGDIR_NW);
+}