diff options
author | KUDr <KUDr@openttd.org> | 2007-01-10 18:12:09 +0000 |
---|---|---|
committer | KUDr <KUDr@openttd.org> | 2007-01-10 18:12:09 +0000 |
commit | 07c30785ab226c4762b442f5a09ec745017cc94b (patch) | |
tree | d9abc3d9810159441bed9f82a52bd1ee52d770dd /src/tunnel_map.cpp | |
parent | dc44d341075a525d6069bfbf935efe75ac7ff0f0 (diff) | |
download | openttd-07c30785ab226c4762b442f5a09ec745017cc94b.tar.xz |
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
Diffstat (limited to 'src/tunnel_map.cpp')
-rw-r--r-- | src/tunnel_map.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/tunnel_map.cpp b/src/tunnel_map.cpp new file mode 100644 index 000000000..a4945591d --- /dev/null +++ b/src/tunnel_map.cpp @@ -0,0 +1,50 @@ +/* $Id$ */ + +#include "stdafx.h" +#include "openttd.h" +#include "tile.h" +#include "tunnel_map.h" + +TileIndex GetOtherTunnelEnd(TileIndex tile) +{ + DiagDirection dir = GetTunnelDirection(tile); + TileIndexDiff delta = TileOffsByDiagDir(dir); + uint z = GetTileZ(tile); + + dir = ReverseDiagDir(dir); + do { + tile += delta; + } while ( + !IsTunnelTile(tile) || + GetTunnelDirection(tile) != dir || + GetTileZ(tile) != z + ); + + return tile; +} + + +static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir) +{ + TileIndexDiff delta = TileOffsByDiagDir(dir); + uint height; + + do { + tile -= delta; + height = GetTileZ(tile); + } while (z < height); + + return + z == height && + IsTunnelTile(tile) && + 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); +} |