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;