changeset 4062:615435fdd10f draft

(svn r5352) -Fix: Return accurate slope information for tunnels and bridges to fix several foundation graphics glitches
author tron <tron@openttd.org>
date Sat, 24 Jun 2006 22:52:24 +0000
parents 4df950e1af8e
children 199008cded5e
files tunnelbridge_cmd.c
diffstat 1 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -1146,8 +1146,29 @@
 
 static Slope GetSlopeTileh_TunnelBridge(TileIndex tile, Slope tileh)
 {
-	// not accurate, but good enough for slope graphics drawing
-	return SLOPE_FLAT;
+	uint f;
+
+	if (IsTunnel(tile)) {
+		return tileh;
+	} else {
+		if (IsBridgeRamp(tile)) {
+			if (HASBIT(BRIDGE_NO_FOUNDATION, tileh)) {
+				return tileh;
+			} else {
+				f = GetBridgeFoundation(tileh, DiagDirToAxis(GetBridgeRampDirection(tile)));
+			}
+		} else {
+			if (IsTransportUnderBridge(tile)) {
+				f = _bridge_foundations[GetBridgeAxis(tile)][tileh];
+			} else {
+				return tileh;
+			}
+		}
+	}
+
+	if (f == 0) return tileh;
+	if (f < 15) return SLOPE_FLAT;
+	return _inclined_tileh[f - 15];
 }