(svn r4927) Replace 3 big ifs (which regard foundations) by a bit less confusing code

This commit is contained in:
tron 2006-05-20 18:03:22 +00:00
parent 2a3aca6139
commit 1dc8b1a00e
3 changed files with 39 additions and 44 deletions

View File

@ -153,27 +153,24 @@ const TrackBits _valid_tileh_slopes[2][15] = {
uint GetRailFoundation(Slope tileh, TrackBits bits) uint GetRailFoundation(Slope tileh, TrackBits bits)
{ {
int i; uint i;
if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) return 0;
return 0; if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) return tileh;
if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) switch (bits) {
return tileh; case TRACK_BIT_X: i = 0; break;
case TRACK_BIT_Y: i = 1; break;
if (( default: return 0;
(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 (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;
} }

View File

@ -659,24 +659,25 @@ typedef struct DrawRoadSeqStruct {
uint GetRoadFoundation(Slope tileh, RoadBits bits) uint GetRoadFoundation(Slope tileh, RoadBits bits)
{ {
int i; uint i;
// normal level sloped building // normal level sloped building
if ((~_valid_tileh_slopes_road[1][tileh] & bits) == 0) return tileh; if ((~_valid_tileh_slopes_road[1][tileh] & bits) == 0) return tileh;
// inclined sloped building // inclined sloped building
if (( switch (bits) {
(i = 0, tileh == SLOPE_W) || case ROAD_X: i = 0; break;
(i += 2, tileh == SLOPE_S) || case ROAD_Y: i = 1; break;
(i += 2, tileh == SLOPE_E) || default: return 0;
(i += 2, tileh == SLOPE_N)
) && (
( bits == ROAD_X) ||
(i++, bits == ROAD_Y)
)) {
return i + 15;
} }
switch (tileh) {
return 0; 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] = { const byte _road_sloped_sprites[14] = {

View File

@ -858,23 +858,20 @@ static void DrawBridgePillars(PalSpriteID image, const TileInfo *ti, int x, int
uint GetBridgeFoundation(Slope tileh, Axis axis) uint GetBridgeFoundation(Slope tileh, Axis axis)
{ {
int i; uint i;
if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh)) return tileh; if (HASBIT(BRIDGE_FULL_LEVELED_FOUNDATION, tileh)) return tileh;
// inclined sloped building // inclined sloped building
if (( switch (tileh) {
(i = 0, tileh == SLOPE_W) || case SLOPE_W: i = 0; break;
(i += 2, tileh == SLOPE_S) || case SLOPE_S: i = 2; break;
(i += 2, tileh == SLOPE_E) || case SLOPE_E: i = 4; break;
(i += 2, tileh == SLOPE_N) case SLOPE_N: i = 6; break;
) && ( default: return 0;
axis == AXIS_X ||
(i++, axis == AXIS_Y)
)) {
return i + 15;
} }
if (axis != AXIS_X) ++i;
return 0; return i + 15;
} }
/** /**