tron@3214: /* $Id$ */ tron@3214: tron@3214: #include "stdafx.h" tron@3214: #include "openttd.h" tron@3214: #include "bridge_map.h" celestar@5573: #include "variables.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; celestar@5591: } while (!IsBridgeTile(tile) || GetBridgeRampDirection(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)); celestar@5573: return GetBridgeEnd(tile, GetBridgeRampDirection(tile)); celestar@5573: } celestar@3933: celestar@5573: uint GetBridgeHeight(TileIndex t) celestar@5573: { celestar@5573: uint h; celestar@5573: uint tileh = GetTileSlope(t, &h); celestar@5573: uint f = GetBridgeFoundation(tileh, DiagDirToAxis(GetBridgeRampDirection(t))); celestar@3933: celestar@5573: // one height level extra if the ramp is on a flat foundation celestar@5573: return celestar@5573: h + TILE_HEIGHT + celestar@5573: (IS_INT_INSIDE(f, 1, 15) ? TILE_HEIGHT : 0) + celestar@5573: (IsSteepSlope(tileh) ? TILE_HEIGHT : 0); tron@3214: }