src/bridge_map.cpp
author miham
Tue, 15 Jul 2008 23:27:28 +0000
changeset 11149 f3ff534dded8
parent 8579 3efbb430092e
permissions -rw-r--r--
(svn r13707) -Update: WebTranslator2 update to 2008-07-16 01:21:36
brazilian_portuguese - 3 fixed by tucalipe (3)
bulgarian - 78 fixed, 230 changed by thetitan (3), groupsky (305)
catalan - 3 fixed by arnaullv (3)
dutch - 3 fixed by webfreakz (3)
italian - 3 changed by lorenzodv (3)
korean - 4 fixed, 5 changed by leejaeuk5 (9)
russian - 3 fixed by Smoky555 (3)
slovenian - 4 fixed by Necrolyte (4)
spanish - 3 fixed by eusebio (3)
swedish - 4 fixed by daishan (4)
ukrainian - 2 fixed by mad (2)
/* $Id$ */

/** @file bridge_map.cpp Map accessor functions for bridges. */

#include "stdafx.h"
#include "openttd.h"
#include "bridge_map.h"
#include "bridge.h"
#include "variables.h"
#include "landscape.h"
#include "tunnelbridge_map.h"


TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir)
{
	TileIndexDiff delta = TileOffsByDiagDir(dir);

	dir = ReverseDiagDir(dir);
	do {
		tile += delta;
	} while (!IsBridgeTile(tile) || GetTunnelBridgeDirection(tile) != dir);

	return tile;
}


TileIndex GetNorthernBridgeEnd(TileIndex t)
{
	return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t))));
}


TileIndex GetSouthernBridgeEnd(TileIndex t)
{
	return GetBridgeEnd(t, AxisToDiagDir(GetBridgeAxis(t)));
}


TileIndex GetOtherBridgeEnd(TileIndex tile)
{
	assert(IsBridgeTile(tile));
	return GetBridgeEnd(tile, GetTunnelBridgeDirection(tile));
}

uint GetBridgeHeight(TileIndex t)
{
	uint h;
	Slope tileh = GetTileSlope(t, &h);
	Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetTunnelBridgeDirection(t)));

	/* one height level extra for the ramp */
	return h + TILE_HEIGHT + ApplyFoundationToSlope(f, &tileh);
}