tron@3214: /* $Id$ */ tron@3214: rubidium@6914: /** @file bridge_map.cpp Map accessor functions for bridges. */ belugas@6449: tron@3214: #include "stdafx.h" tron@3214: #include "openttd.h" tron@3214: #include "bridge_map.h" rubidium@6914: #include "bridge.h" celestar@5573: #include "variables.h" rubidium@8260: #include "landscape.h" smatz@8579: #include "tunnelbridge_map.h" tron@3214: tron@3214: tron@3225: TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir) tron@3225: { Darkvater@4559: TileIndexDiff delta = TileOffsByDiagDir(dir); tron@3225: celestar@5573: dir = ReverseDiagDir(dir); tron@3977: do { tron@3977: tile += delta; smatz@8579: } while (!IsBridgeTile(tile) || GetTunnelBridgeDirection(tile) != dir); tron@3225: tron@3225: return tile; tron@3225: } tron@3225: tron@3225: celestar@5573: TileIndex GetNorthernBridgeEnd(TileIndex t) celestar@5573: { celestar@5573: return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t)))); celestar@5573: } celestar@5573: celestar@5573: tron@3225: TileIndex GetSouthernBridgeEnd(TileIndex t) tron@3225: { tron@3225: return GetBridgeEnd(t, AxisToDiagDir(GetBridgeAxis(t))); tron@3225: } tron@3225: tron@3225: tron@3214: TileIndex GetOtherBridgeEnd(TileIndex tile) tron@3214: { celestar@5573: assert(IsBridgeTile(tile)); smatz@8579: return GetBridgeEnd(tile, GetTunnelBridgeDirection(tile)); celestar@5573: } celestar@3933: celestar@5573: uint GetBridgeHeight(TileIndex t) celestar@5573: { celestar@5573: uint h; rubidium@5838: Slope tileh = GetTileSlope(t, &h); smatz@8579: Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetTunnelBridgeDirection(t))); celestar@3933: rubidium@8260: /* one height level extra for the ramp */ rubidium@8260: return h + TILE_HEIGHT + ApplyFoundationToSlope(f, &tileh); tron@3214: }