tron@3214: /* $Id$ */ tron@3214: tron@3214: #include "stdafx.h" tron@3214: #include "openttd.h" tron@3214: #include "bridge_map.h" celestar@3933: #include "variables.h" tron@3214: tron@3214: tron@3225: TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir) tron@3225: { tron@3225: TileIndexDiff delta = TileOffsByDir(dir); tron@3225: celestar@3933: do { tile += delta; } while (IsBridgeAbove(tile) && IsBridgeOfAxis(tile, DiagDirToAxis(dir))); tron@3225: tron@3225: return tile; tron@3225: } tron@3225: tron@3225: celestar@3933: TileIndex GetNorthernBridgeEnd(TileIndex t) celestar@3933: { celestar@3933: return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t)))); celestar@3933: } celestar@3933: celestar@3933: 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@3933: assert(IsBridgeTile(tile)); celestar@3933: return GetBridgeEnd(tile, GetBridgeRampDirection(tile)); celestar@3933: } tron@3214: celestar@3933: uint GetBridgeHeight(TileIndex tile, Axis a) celestar@3933: { celestar@3933: uint h, f; celestar@3933: uint tileh = GetTileSlope(tile, &h); tron@3214: celestar@3933: f = GetBridgeFoundation(tileh, a); celestar@3933: celestar@3933: if (f) { celestar@3933: if (f < 15) { celestar@3933: h += TILE_HEIGHT; celestar@3933: tileh = SLOPE_FLAT; celestar@3933: } else { celestar@3933: tileh = _inclined_tileh[f - 15]; celestar@3933: } celestar@3933: } celestar@3933: celestar@3933: return h + TILE_HEIGHT; tron@3214: }