Mercurial > hg > openttd
changeset 8801:9fe7640963e3 draft
(svn r12541) -Codechange: Declare Slope enum as bit set, and remove some (then) unneeded casts.
author | frosch <frosch@openttd.org> |
---|---|
date | Wed, 02 Apr 2008 14:13:15 +0000 |
parents | 2a908464da27 |
children | fea8e000da93 |
files | src/slope_func.h src/slope_type.h src/terraform_cmd.cpp src/water_cmd.cpp |
diffstat | 4 files changed, 13 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/slope_func.h +++ b/src/slope_func.h @@ -54,7 +54,7 @@ */ static inline Slope RemoveHalftileSlope(Slope s) { - return (Slope)(s & ~SLOPE_HALFTILE_MASK); + return s & ~SLOPE_HALFTILE_MASK; } /** @@ -71,7 +71,7 @@ static inline Slope ComplementSlope(Slope s) { assert(!IsSteepSlope(s) && !IsHalftileSlope(s)); - return (Slope)(0xF ^ s); + return s ^ SLOPE_ELEVATED; } /** @@ -200,7 +200,7 @@ */ static inline Slope SteepSlope(Corner corner) { - return (Slope)(SLOPE_STEEP | SlopeWithThreeCornersRaised(OppositeCorner(corner))); + return SLOPE_STEEP | SlopeWithThreeCornersRaised(OppositeCorner(corner)); } /**
--- a/src/slope_type.h +++ b/src/slope_type.h @@ -70,6 +70,7 @@ 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) }; +DECLARE_ENUM_AS_BIT_SET(Slope) /**
--- a/src/terraform_cmd.cpp +++ b/src/terraform_cmd.cpp @@ -287,11 +287,11 @@ uint z_max = max(max(z_N, z_W), max(z_S, z_E)); /* Compute tile slope */ - uint tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT); - if (z_W > z_min) tileh += SLOPE_W; - if (z_S > z_min) tileh += SLOPE_S; - if (z_E > z_min) tileh += SLOPE_E; - if (z_N > z_min) tileh += SLOPE_N; + Slope tileh = (z_max > z_min + 1 ? SLOPE_STEEP : SLOPE_FLAT); + if (z_W > z_min) tileh |= SLOPE_W; + if (z_S > z_min) tileh |= SLOPE_S; + if (z_E > z_min) tileh |= SLOPE_E; + if (z_N > z_min) tileh |= SLOPE_N; /* Check if bridge would take damage */ if (direction == 1 && MayHaveBridgeAbove(tile) && IsBridgeAbove(tile) && @@ -305,7 +305,7 @@ return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE); } /* 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)) { _terraform_err_tile = tile; return cost;
--- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -1040,7 +1040,7 @@ if (IsTileType(dest, MP_WATER)) continue; 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 (!HasBit(_flood_from_dirs[slope_dest], ReverseDir(dir))) continue; @@ -1050,7 +1050,7 @@ break; 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 dir; FOR_EACH_SET_BIT(dir, check_dirs) { @@ -1097,7 +1097,7 @@ uint dir; FOR_EACH_SET_BIT(dir, check_dirs) { 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)) { MakeShore(tile); break;