(svn r4000) Rewrite GetSlope{Tileh,Z}_{Road,Track} in a less confusing way
authortron
Tue, 21 Mar 2006 22:06:32 +0000
changeset 3286 3250f1488eb2
parent 3285 c162cb0b57c1
child 3287 720ed37be8c6
(svn r4000) Rewrite GetSlope{Tileh,Z}_{Road,Track} in a less confusing way
rail_cmd.c
road_cmd.c
--- a/rail_cmd.c	Tue Mar 21 21:55:49 2006 +0000
+++ b/rail_cmd.c	Tue Mar 21 22:06:32 2006 +0000
@@ -1753,49 +1753,35 @@
 
 static uint GetSlopeZ_Track(const TileInfo* ti)
 {
+	uint tileh = ti->tileh;
 	uint z = ti->z;
-	int th = ti->tileh;
-
-	// check if it's a foundation
-	if (ti->tileh != 0) {
-		if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
-			return z + 8;
-		} else {
-			uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
 
-			if (f != 0) {
-				if (f < 15) {
-					// leveled foundation
-					return z + 8;
-				}
-				// inclined foundation
-				th = _inclined_tileh[f - 15];
-			}
+	if (tileh == 0) return z;
+	if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
+		return z + 8;
+	} else {
+		uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
+
+		if (f != 0) {
+			if (f < 15) return z + 8; // leveled foundation
+			tileh = _inclined_tileh[f - 15]; // inclined foundation
 		}
-		return GetPartialZ(ti->x & 0xF, ti->y & 0xF, th) + z;
+		return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh);
 	}
-	return z;
 }
 
 static uint GetSlopeTileh_Track(const TileInfo *ti)
 {
-	// check if it's a foundation
-	if (ti->tileh != 0) {
-		if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
-			return 0;
-		} else {
-			uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
-			if (f != 0) {
-				if (f < 15) {
-					// leveled foundation
-					return 0;
-				}
-				// inclined foundation
-				return _inclined_tileh[f - 15];
-			}
-		}
+	if (ti->tileh == 0) return ti->tileh;
+	if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
+		return 0;
+	} else {
+		uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
+
+		if (f == 0) return ti->tileh;
+		if (f < 15) return 0; // leveled foundation
+		return _inclined_tileh[f - 15]; // inclined foundation
 	}
-	return ti->tileh;
 }
 
 static void GetAcceptedCargo_Track(TileIndex tile, AcceptedCargo ac)
--- a/road_cmd.c	Tue Mar 21 21:55:49 2006 +0000
+++ b/road_cmd.c	Tue Mar 21 22:06:32 2006 +0000
@@ -846,66 +846,35 @@
 
 static uint GetSlopeZ_Road(const TileInfo* ti)
 {
+	uint tileh = ti->tileh;
 	uint z = ti->z;
-	int th = ti->tileh;
-
-	// check if it's a foundation
-	if (ti->tileh != 0) {
-		switch (GetRoadType(ti->tile)) {
-			case ROAD_NORMAL: {
-				uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
 
-				if (f != 0) {
-					if (f < 15) {
-						// leveled foundation
-						return z + 8;
-					}
-					// inclined foundation
-					th = _inclined_tileh[f - 15];
-				}
-				break;
-			}
+	if (tileh == 0) return z;
+	if (GetRoadType(ti->tile) == ROAD_NORMAL) {
+		uint f = GetRoadFoundation(tileh, GetRoadBits(ti->tile));
 
-			// if these are on a slope then there's a level foundation
-			case ROAD_DEPOT:
-			case ROAD_CROSSING:
-				return z + 8;
-
-			default: break;
+		if (f != 0) {
+			if (f < 15) return z + 8; // leveled foundation
+			tileh = _inclined_tileh[f - 15]; // inclined foundation
 		}
-		return GetPartialZ(ti->x&0xF, ti->y&0xF, th) + z;
+		return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh);
+	} else {
+		return z + 8;
 	}
-	return z; // normal Z if no slope
 }
 
 static uint GetSlopeTileh_Road(const TileInfo *ti)
 {
-	// check if it's a foundation
-	if (ti->tileh != 0) {
-		switch (GetRoadType(ti->tile)) {
-			case ROAD_NORMAL: {
-				uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
+	if (ti->tileh == 0) return ti->tileh;
+	if (GetRoadType(ti->tile) == ROAD_NORMAL) {
+		uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
 
-				if (f != 0) {
-					if (f < 15) {
-						// leveled foundation
-						return 0;
-					}
-					// inclined foundation
-					return _inclined_tileh[f - 15];
-				}
-				break;
-			}
-
-			// if these are on a slope then there's a level foundation
-			case ROAD_CROSSING:
-			case ROAD_DEPOT:
-				return 0;
-
-			default: break;
-		}
+		if (f == 0) return ti->tileh;
+		if (f < 15) return 0; // leveled foundation
+		return _inclined_tileh[f - 15]; // inclined foundation
+	} else {
+		return 0;
 	}
-	return ti->tileh;
 }
 
 static void GetAcceptedCargo_Road(TileIndex tile, AcceptedCargo ac)