diff options
author | tron <tron@openttd.org> | 2006-06-24 22:52:24 +0000 |
---|---|---|
committer | tron <tron@openttd.org> | 2006-06-24 22:52:24 +0000 |
commit | eb15c9fffa201a6fb9758b7f4bd90f456e715f79 (patch) | |
tree | 9cba03d8e1d496e368c397423b43774522f16f5b | |
parent | d1540dad34a611c5717e608b9638f706658eb79d (diff) | |
download | openttd-eb15c9fffa201a6fb9758b7f4bd90f456e715f79.tar.xz |
(svn r5352) -Fix: Return accurate slope information for tunnels and bridges to fix several foundation graphics glitches
-rw-r--r-- | tunnelbridge_cmd.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c index b6034db69..b93fd9ed0 100644 --- a/tunnelbridge_cmd.c +++ b/tunnelbridge_cmd.c @@ -1146,8 +1146,29 @@ static uint GetSlopeZ_TunnelBridge(const TileInfo* ti) 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]; } |