changeset 4156:bb7de74c82d4 draft

(svn r5580) -Regression: Under certain circumstances it was possible to remove/convert bridges while a vehicle was on it. Fix this by properly calculating the height of a bridge
author tron <tron@openttd.org>
date Sat, 22 Jul 2006 07:28:04 +0000
parents 12de6ffed37d
children b0e2004122f9
files tunnelbridge_cmd.c
diffstat 1 files changed, 6 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -597,13 +597,12 @@
 
 static uint GetBridgeHeightRamp(TileIndex t)
 {
-	/* Return the height there (the height of the NORTH CORNER)
-	 * If the end of the bridge is on a tile with all corners except the north corner raised,
-	 * the z coordinate is 1 height level too low. Compensate for that */
-	return
-		TilePixelHeight(t) +
-		(GetTileSlope(t, NULL) == SLOPE_WSE ? TILE_HEIGHT : 0) +
-		TILE_HEIGHT;
+	uint h;
+	uint tileh = GetTileSlope(t, &h);
+	uint f = GetBridgeFoundation(tileh, DiagDirToAxis(GetBridgeRampDirection(t)));
+
+	// one height level extra if the ramp is on a flat foundation
+	return h + TILE_HEIGHT + (IS_INT_INSIDE(f, 1, 15) ? TILE_HEIGHT : 0);
 }