tron@3214: /* $Id$ */ tron@3214: rubidium@6418: /** @file bridge_map.cpp Map accessor functions for bridges. */ belugas@6123: tron@3214: #include "stdafx.h" tron@3214: #include "openttd.h" tron@3214: #include "bridge_map.h" rubidium@6418: #include "bridge.h" celestar@5385: #include "variables.h" rubidium@7764: #include "landscape.h" tron@3214: tron@3214: tron@3225: TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir) tron@3225: { Darkvater@4559: TileIndexDiff delta = TileOffsByDiagDir(dir); tron@3225: celestar@5385: dir = ReverseDiagDir(dir); tron@3977: do { tron@3977: tile += delta; celestar@5385: } while (!IsBridgeTile(tile) || GetBridgeRampDirection(tile) != dir); tron@3225: tron@3225: return tile; tron@3225: } tron@3225: tron@3225: celestar@5385: TileIndex GetNorthernBridgeEnd(TileIndex t) celestar@5385: { celestar@5385: return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t)))); celestar@5385: } celestar@5385: celestar@5385: 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@5385: assert(IsBridgeTile(tile)); celestar@5385: return GetBridgeEnd(tile, GetBridgeRampDirection(tile)); celestar@5385: } celestar@3933: celestar@5385: uint GetBridgeHeight(TileIndex t) celestar@5385: { celestar@5385: uint h; rubidium@5587: Slope tileh = GetTileSlope(t, &h); rubidium@7336: Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetBridgeRampDirection(t))); celestar@3933: rubidium@7764: /* one height level extra for the ramp */ rubidium@7764: return h + TILE_HEIGHT + ApplyFoundationToSlope(f, &tileh); tron@3214: }