From 901e2d02b1dd5664a9580f503674516feb910f83 Mon Sep 17 00:00:00 2001 From: tron Date: Fri, 9 Jun 2006 15:27:17 +0000 Subject: [PATCH] (svn r5199) Make the control flow of GetTileTrackStatus_TunnelBridge() more comprehensible --- tunnelbridge_cmd.c | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c index 168122a119..735be04f0b 100644 --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -1241,41 +1241,26 @@ static void ClickTile_TunnelBridge(TileIndex tile) static uint32 GetTileTrackStatus_TunnelBridge(TileIndex tile, TransportType mode) { - uint32 result; - if (IsTunnel(tile)) { - if (GetTunnelTransportType(tile) == mode) { - return DiagDirToAxis(GetTunnelDirection(tile)) == AXIS_X ? 0x101 : 0x202; - } - } else if (IsBridge(tile)) { // XXX is this necessary? + if (GetTunnelTransportType(tile) != mode) return 0; + return (DiagDirToAxis(GetTunnelDirection(tile)) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y) * 0x101; + } else { if (IsBridgeRamp(tile)) { if (GetBridgeTransportType(tile) != mode) return 0; return (DiagDirToAxis(GetBridgeRampDirection(tile)) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y) * 0x101; } else { - result = 0; + uint32 result = 0; + if (GetBridgeTransportType(tile) == mode) { result = (GetBridgeAxis(tile) == AXIS_X ? TRACK_BIT_X : TRACK_BIT_Y) * 0x101; } - if (IsTransportUnderBridge(tile)) { - if (GetTransportTypeUnderBridge(tile) != mode) return result; - } else { - if (IsClearUnderBridge(tile)) { - return result; - } else { - if (mode != TRANSPORT_WATER) return result; - } + if ((IsTransportUnderBridge(tile) && mode == GetTransportTypeUnderBridge(tile)) || + (IsWaterUnderBridge(tile) && mode == TRANSPORT_WATER)) { + result |= (GetBridgeAxis(tile) == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X) * 0x101; } - /* If we've not returned yet, there is a compatible - * transport or water beneath, so we can add it to - * result */ - /* Why is this xor'd ? Can't it just be or'd? */ - result ^= (GetBridgeAxis(tile) == AXIS_X ? 0x202 : 0x101); + return result; } - return result; - } else { - assert(0); /* This should never occur */ } - return 0; } static void ChangeTileOwner_TunnelBridge(TileIndex tile, PlayerID old_player, PlayerID new_player)