diff options
author | tron <tron@openttd.org> | 2006-08-16 06:05:44 +0000 |
---|---|---|
committer | tron <tron@openttd.org> | 2006-08-16 06:05:44 +0000 |
commit | fa5564db133f9c93d78346d696bc09cdbc690f58 (patch) | |
tree | 7cfcba64810d448a38ca2b1cc9acee015f53cf04 /tunnel_map.c | |
parent | a0b4a29a575b3bf8e3a7573924fa917603d26abc (diff) | |
download | openttd-fa5564db133f9c93d78346d696bc09cdbc690f58.tar.xz |
(svn r5923) Fix 'make depend' which was broken in r3574 (it just did nothing)
Diffstat (limited to 'tunnel_map.c')
-rw-r--r-- | tunnel_map.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tunnel_map.c b/tunnel_map.c index 435d62f20..32f653eaa 100644 --- a/tunnel_map.c +++ b/tunnel_map.c @@ -4,6 +4,7 @@ #include "openttd.h" #include "tile.h" #include "tunnel_map.h" +#include "vehicle.h" TileIndex GetOtherTunnelEnd(TileIndex tile) { @@ -24,6 +25,31 @@ TileIndex GetOtherTunnelEnd(TileIndex tile) } +/** Retrieve the exit-tile of the vehicle from inside a tunnel + * Very similar to GetOtherTunnelEnd(), but we use the vehicle's + * direction for determining which end of the tunnel to find + * @param v the vehicle which is inside the tunnel and needs an exit + * @return the exit-tile of the tunnel based on the vehicle's direction */ +TileIndex GetVehicleOutOfTunnelTile(const Vehicle *v) +{ + TileIndex tile = TileVirtXY(v->x_pos, v->y_pos); + DiagDirection dir = DirToDiagDir(v->direction); + TileIndexDiff delta = TileOffsByDir(dir); + uint z = v->z_pos; + + dir = ReverseDiagDir(dir); + while ( + !IsTunnelTile(tile) || + GetTunnelDirection(tile) != dir || + GetTileZ(tile) != z + ) { + tile += delta; + } + + return tile; +} + + static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir) { TileIndexDiff delta = TileOffsByDir(dir); |