summaryrefslogtreecommitdiff
path: root/tunnelbridge_cmd.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-06-09 15:27:17 +0000
committertron <tron@openttd.org>2006-06-09 15:27:17 +0000
commit901e2d02b1dd5664a9580f503674516feb910f83 (patch)
tree2d0b0cbbe79dc3a4843633f964c2046be3b41714 /tunnelbridge_cmd.c
parentc1bcead499fed6a31a9dae1e4b281e6ab4840348 (diff)
downloadopenttd-901e2d02b1dd5664a9580f503674516feb910f83.tar.xz
(svn r5199) Make the control flow of GetTileTrackStatus_TunnelBridge() more comprehensible
Diffstat (limited to 'tunnelbridge_cmd.c')
-rw-r--r--tunnelbridge_cmd.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c
index 168122a11..735be04f0 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)