(svn r4927) Replace 3 big ifs (which regard foundations) by a bit less confusing code
--- a/rail_cmd.c Sat May 20 16:46:37 2006 +0000
+++ b/rail_cmd.c Sat May 20 18:03:22 2006 +0000
@@ -153,27 +153,24 @@
uint GetRailFoundation(Slope tileh, TrackBits bits)
{
- int i;
-
- if ((~_valid_tileh_slopes[0][tileh] & bits) == 0)
- return 0;
-
- if ((~_valid_tileh_slopes[1][tileh] & bits) == 0)
- return tileh;
+ uint i;
- 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;
+ if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) return 0;
+ if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) return tileh;
+
+ 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;
}
--- a/road_cmd.c Sat May 20 16:46:37 2006 +0000
+++ b/road_cmd.c Sat May 20 18:03:22 2006 +0000
@@ -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] = {
--- a/tunnelbridge_cmd.c Sat May 20 16:46:37 2006 +0000
+++ b/tunnelbridge_cmd.c Sat May 20 18:03:22 2006 +0000
@@ -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;
}
/**