# HG changeset patch # User tron # Date 1148148202 0 # Node ID 35f04e3db77cc844404cd3bfd7a100dbbb6d06e9 # Parent 1a641e7bb794bbde5e9a3ef6909d7f750b2930f0 (svn r4927) Replace 3 big ifs (which regard foundations) by a bit less confusing code diff --git a/rail_cmd.c b/rail_cmd.c --- a/rail_cmd.c +++ b/rail_cmd.c @@ -153,27 +153,24 @@ uint GetRailFoundation(Slope tileh, TrackBits bits) { - int i; + uint i; - if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) - return 0; - - if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) - return tileh; + if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) return 0; + if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) return tileh; - if (( - (i = 0, tileh == SLOPE_W) || - (i += 2, tileh == SLOPE_S) || - (i += 2, tileh == SLOPE_E) || - (i += 2, tileh == SLOPE_N) - ) && ( - bits == TRACK_BIT_X || - (i++, bits == TRACK_BIT_Y) - )) { - return i + 15; - } else { - return 0; + switch (bits) { + case TRACK_BIT_X: i = 0; break; + case TRACK_BIT_Y: i = 1; break; + default: return 0; } + switch (tileh) { + case SLOPE_W: i += 0; break; + case SLOPE_S: i += 2; break; + case SLOPE_E: i += 4; break; + case SLOPE_N: i += 6; break; + default: return 0; + } + return i + 15; } diff --git a/road_cmd.c b/road_cmd.c --- a/road_cmd.c +++ b/road_cmd.c @@ -659,24 +659,25 @@ uint GetRoadFoundation(Slope tileh, RoadBits bits) { - int i; + uint i; + // normal level sloped building if ((~_valid_tileh_slopes_road[1][tileh] & bits) == 0) return tileh; // inclined sloped building - if (( - (i = 0, tileh == SLOPE_W) || - (i += 2, tileh == SLOPE_S) || - (i += 2, tileh == SLOPE_E) || - (i += 2, tileh == SLOPE_N) - ) && ( - ( bits == ROAD_X) || - (i++, bits == ROAD_Y) - )) { - return i + 15; + switch (bits) { + case ROAD_X: i = 0; break; + case ROAD_Y: i = 1; break; + default: return 0; } - - return 0; + switch (tileh) { + case SLOPE_W: i += 0; break; + case SLOPE_S: i += 2; break; + case SLOPE_E: i += 4; break; + case SLOPE_N: i += 6; break; + default: return 0; + } + return i + 15; } const byte _road_sloped_sprites[14] = { diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -858,23 +858,20 @@ uint GetBridgeFoundation(Slope tileh, Axis axis) { - int i; + uint i; + if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh)) return tileh; // inclined sloped building - if (( - (i = 0, tileh == SLOPE_W) || - (i += 2, tileh == SLOPE_S) || - (i += 2, tileh == SLOPE_E) || - (i += 2, tileh == SLOPE_N) - ) && ( - axis == AXIS_X || - (i++, axis == AXIS_Y) - )) { - return i + 15; + switch (tileh) { + case SLOPE_W: i = 0; break; + case SLOPE_S: i = 2; break; + case SLOPE_E: i = 4; break; + case SLOPE_N: i = 6; break; + default: return 0; } - - return 0; + if (axis != AXIS_X) ++i; + return i + 15; } /**