(svn r12541) -Codechange: Declare Slope enum as bit set, and remove some (then) unneeded casts.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
frosch 16 years ago
parent 5e5e074a5d
commit fa68e5f770

@ -54,7 +54,7 @@ static inline bool IsHalftileSlope(Slope s)
*/ */
static inline Slope RemoveHalftileSlope(Slope s) static inline Slope RemoveHalftileSlope(Slope s)
{ {
return (Slope)(s & ~SLOPE_HALFTILE_MASK); return s & ~SLOPE_HALFTILE_MASK;
} }
/** /**
@ -71,7 +71,7 @@ static inline Slope RemoveHalftileSlope(Slope s)
static inline Slope ComplementSlope(Slope s) static inline Slope ComplementSlope(Slope s)
{ {
assert(!IsSteepSlope(s) && !IsHalftileSlope(s)); assert(!IsSteepSlope(s) && !IsHalftileSlope(s));
return (Slope)(0xF ^ s); return s ^ SLOPE_ELEVATED;
} }
/** /**
@ -200,7 +200,7 @@ static inline Slope SlopeWithThreeCornersRaised(Corner corner)
*/ */
static inline Slope SteepSlope(Corner corner) static inline Slope SteepSlope(Corner corner)
{ {
return (Slope)(SLOPE_STEEP | SlopeWithThreeCornersRaised(OppositeCorner(corner))); return SLOPE_STEEP | SlopeWithThreeCornersRaised(OppositeCorner(corner));
} }
/** /**

@ -70,6 +70,7 @@ enum Slope {
SLOPE_HALFTILE_E = SLOPE_HALFTILE | (CORNER_E << 6), ///< the east halftile is leveled (non continuous slope) SLOPE_HALFTILE_E = SLOPE_HALFTILE | (CORNER_E << 6), ///< the east halftile is leveled (non continuous slope)
SLOPE_HALFTILE_N = SLOPE_HALFTILE | (CORNER_N << 6), ///< the north halftile is leveled (non continuous slope) SLOPE_HALFTILE_N = SLOPE_HALFTILE | (CORNER_N << 6), ///< the north halftile is leveled (non continuous slope)
}; };
DECLARE_ENUM_AS_BIT_SET(Slope)
/** /**

@ -287,11 +287,11 @@ CommandCost CmdTerraformLand(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
uint z_max = max(max(z_N, z_W), max(z_S, z_E)); uint z_max = max(max(z_N, z_W), max(z_S, z_E));
/* Compute tile slope */ /* Compute tile slope */
uint tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT); Slope tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT);
if (z_W > z_min) tileh += SLOPE_W; if (z_W > z_min) tileh |= SLOPE_W;
if (z_S > z_min) tileh += SLOPE_S; if (z_S > z_min) tileh |= SLOPE_S;
if (z_E > z_min) tileh += SLOPE_E; if (z_E > z_min) tileh |= SLOPE_E;
if (z_N > z_min) tileh += SLOPE_N; if (z_N > z_min) tileh |= SLOPE_N;
/* Check if bridge would take damage */ /* Check if bridge would take damage */
if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) &&
@ -305,7 +305,7 @@ CommandCost CmdTerraformLand(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE); return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
} }
/* Check tiletype-specific things, and add extra-cost */ /* Check tiletype-specific things, and add extra-cost */
CommandCost cost = _tile_type_procs[GetTileType(tile)]->terraform_tile_proc(tile, flags | DC_AUTO, z_min * TILE_HEIGHT, (Slope) tileh); CommandCost cost = _tile_type_procs[GetTileType(tile)]->terraform_tile_proc(tile, flags | DC_AUTO, z_min * TILE_HEIGHT, tileh);
if (CmdFailed(cost)) { if (CmdFailed(cost)) {
_terraform_err_tile = tile; _terraform_err_tile = tile;
return cost; return cost;

@ -1040,7 +1040,7 @@ void TileLoop_Water(TileIndex tile)
if (IsTileType(dest, MP_WATER)) continue; if (IsTileType(dest, MP_WATER)) continue;
uint z_dest; uint z_dest;
Slope slope_dest = (Slope)(GetFoundationSlope(dest, &z_dest) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP); Slope slope_dest = GetFoundationSlope(dest, &z_dest) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP;
if (z_dest > 0) continue; if (z_dest > 0) continue;
if (!HasBit(_flood_from_dirs[slope_dest], ReverseDir(dir))) continue; if (!HasBit(_flood_from_dirs[slope_dest], ReverseDir(dir))) continue;
@ -1050,7 +1050,7 @@ void TileLoop_Water(TileIndex tile)
break; break;
case FLOOD_DRYUP: { case FLOOD_DRYUP: {
Slope slope_here = (Slope)(GetFoundationSlope(tile, NULL) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP); Slope slope_here = GetFoundationSlope(tile, NULL) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP;
uint check_dirs = _flood_from_dirs[slope_here]; uint check_dirs = _flood_from_dirs[slope_here];
uint dir; uint dir;
FOR_EACH_SET_BIT(dir, check_dirs) { FOR_EACH_SET_BIT(dir, check_dirs) {
@ -1097,7 +1097,7 @@ void ConvertGroundTilesIntoWaterTiles()
uint dir; uint dir;
FOR_EACH_SET_BIT(dir, check_dirs) { FOR_EACH_SET_BIT(dir, check_dirs) {
TileIndex dest = TILE_ADD(tile, TileOffsByDir((Direction)dir)); TileIndex dest = TILE_ADD(tile, TileOffsByDir((Direction)dir));
Slope slope_dest = (Slope)(GetTileSlope(dest, NULL) & ~SLOPE_STEEP); Slope slope_dest = GetTileSlope(dest, NULL) & ~SLOPE_STEEP;
if (slope_dest == SLOPE_FLAT || IsSlopeWithOneCornerRaised(slope_dest)) { if (slope_dest == SLOPE_FLAT || IsSlopeWithOneCornerRaised(slope_dest)) {
MakeShore(tile); MakeShore(tile);
break; break;

Loading…
Cancel
Save