summaryrefslogtreecommitdiff
path: root/src/rail_cmd.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2007-12-16 19:30:42 +0000
committersmatz <smatz@openttd.org>2007-12-16 19:30:42 +0000
commitd56a690ba432c3ef483ac7a8072266349f2bfc96 (patch)
tree3d93af5bbe577ea3e66b1184cb89c1a934d6bcda /src/rail_cmd.cpp
parentcdee7d4cb8541657d99891ee59cb5caab6aaf444 (diff)
downloadopenttd-d56a690ba432c3ef483ac7a8072266349f2bfc96.tar.xz
(svn r11649) -Codechange: some code can be simplified thanks to changes in r11642
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r--src/rail_cmd.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
index 793d9363f..454e4b30e 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
@@ -926,17 +926,15 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
return true;
case MP_TUNNELBRIDGE: {
- TileIndex orig_tile = tile;
- /* Skip to end of tunnel or bridge */
- if (IsBridge(tile)) {
- if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false;
- if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir)) return false;
- tile = GetOtherBridgeEnd(tile);
- } else {
- if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false;
- if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir)) return false;
- tile = GetOtherTunnelEnd(tile);
- }
+ TileIndex orig_tile = tile; // backup old value
+
+ if (GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) return false;
+ if (GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir)) return false;
+
+ /* Skip to end of tunnel or bridge
+ * note that tile is a parameter by reference, so it must be updated */
+ tile = IsTunnel(tile) ? GetOtherTunnelEnd(tile) : GetOtherBridgeEnd(tile);
+
signal_ctr += 2 + DistanceMax(orig_tile, tile) * 2;
return true;
}