diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | tunnel_map.c | 26 | ||||
-rw-r--r-- | tunnelbridge_cmd.c | 23 |
3 files changed, 27 insertions, 24 deletions
@@ -1037,7 +1037,7 @@ depend: @true # The include handles this automagically # Introduce the dependencies -ifeq ($(findstring $(MAKECMDGOALS), clean info depend mrproper upgradeconf unittest $(MAKE_CONFIG)),) +ifeq ($(findstring $(MAKECMDGOALS), clean info mrproper upgradeconf unittest $(MAKE_CONFIG)),) -include $(DEPS) endif 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); diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c index b37619b22..3d7205a76 100644 --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -1425,29 +1425,6 @@ static uint32 VehicleEnter_TunnelBridge(Vehicle *v, TileIndex tile, int x, int y return 0; } -/** 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 = v->tile; - DiagDirection dir = DirToDiagDir(v->direction); - TileIndexDiff delta = TileOffsByDir(dir); - byte z = v->z_pos; - - dir = ReverseDiagDir(dir); - while ( - !IsTunnelTile(tile) || - GetTunnelDirection(tile) != dir || - GetTileZ(tile) != z - ) { - tile += delta; - } - - return tile; -} const TileTypeProcs _tile_type_tunnelbridge_procs = { DrawTile_TunnelBridge, /* draw_tile_proc */ |