summaryrefslogtreecommitdiff
path: root/src/yapf
diff options
context:
space:
mode:
Diffstat (limited to 'src/yapf')
-rw-r--r--src/yapf/follow_track.hpp38
-rw-r--r--src/yapf/yapf.hpp1
2 files changed, 15 insertions, 24 deletions
diff --git a/src/yapf/follow_track.hpp b/src/yapf/follow_track.hpp
index d6e0552a0..d4cd455b5 100644
--- a/src/yapf/follow_track.hpp
+++ b/src/yapf/follow_track.hpp
@@ -76,32 +76,22 @@ protected:
m_is_station = m_is_bridge = m_is_tunnel = false;
m_tiles_skipped = 0;
- // extra handling for tunnels in our direction
- if (IsTunnelTile(m_old_tile)) {
- DiagDirection tunnel_enterdir = GetTunnelBridgeDirection(m_old_tile);
- if (tunnel_enterdir == m_exitdir) {
- // we are entering the tunnel
- FindLengthOfTunnelResult flotr = FindLengthOfTunnel(m_old_tile, m_exitdir);
- m_new_tile = flotr.tile;
- m_is_tunnel = true;
- m_tiles_skipped = flotr.length - 1;
- return;
- }
- assert(ReverseDiagDir(tunnel_enterdir) == m_exitdir);
- }
-
- // extra handling for bridge ramp in our direction
- if (IsBridgeTile(m_old_tile)) {
- DiagDirection bridge_enterdir = GetTunnelBridgeDirection(m_old_tile);
- if (bridge_enterdir == m_exitdir) {
- // we are entering the bridge ramp
- m_new_tile = GetOtherBridgeEnd(m_old_tile);
- uint32 bridge_length = GetBridgeLength(m_old_tile, m_new_tile);
- m_tiles_skipped = bridge_length;
- m_is_bridge = true;
+ // extra handling for tunnels and bridges in our direction
+ if (IsTileType(m_old_tile, MP_TUNNELBRIDGE)) {
+ DiagDirection enterdir = GetTunnelBridgeDirection(m_old_tile);
+ if (enterdir == m_exitdir) {
+ // we are entering the tunnel / bridge
+ if (IsTunnel(m_old_tile)) {
+ m_is_tunnel = true;
+ m_new_tile = GetOtherTunnelEnd(m_old_tile);
+ } else { // IsBridge(m_old_tile)
+ m_is_bridge = true;
+ m_new_tile = GetOtherBridgeEnd(m_old_tile);
+ }
+ m_tiles_skipped = GetTunnelBridgeLength(m_new_tile, m_old_tile);
return;
}
- assert(ReverseDiagDir(bridge_enterdir) == m_exitdir);
+ assert(ReverseDiagDir(enterdir) == m_exitdir);
}
// normal or station tile, do one step
diff --git a/src/yapf/yapf.hpp b/src/yapf/yapf.hpp
index d728d0bfe..b98dfdf4b 100644
--- a/src/yapf/yapf.hpp
+++ b/src/yapf/yapf.hpp
@@ -23,6 +23,7 @@
#include "../waypoint.h"
#include "../debug.h"
#include "../settings_type.h"
+#include "../tunnelbridge.h"
extern uint64 _rdtsc();