Files
@ r9583:b6e25a00b908
Branch filter:
Location: cpp/openttd-patchpack/source/src/tunnel_map.cpp - annotation
r9583:b6e25a00b908
1.6 KiB
text/x-c
(svn r13621) -Fix: building roadbits in the wrong direction on bridges or building roadbits from underneath the bridge to the bridgehead is impossible, so don't silently ignore that error when building over houses and industries is not ignored.
r5584:545d748cc681 r5584:545d748cc681 r9111:983de9c5a848 r6422:5983361e241a r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r8083:8cd2123a0c7c r5584:545d748cc681 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r7002:201ff6832d3a r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r6489:47abbb44f4d0 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r7323:a531c9f4c784 r7323:a531c9f4c784 r5584:545d748cc681 | /* $Id$ */
/** @file tunnel_map.cpp Map accessors for tunnels. */
#include "stdafx.h"
#include "openttd.h"
#include "tunnel_map.h"
#include "tunnelbridge_map.h"
/**
* Gets the other end of the tunnel. Where a vehicle would reappear when it
* enters at the given tile.
* @param tile the tile to search from.
* @return the tile of the other end of the tunnel.
*/
TileIndex GetOtherTunnelEnd(TileIndex tile)
{
DiagDirection dir = GetTunnelBridgeDirection(tile);
TileIndexDiff delta = TileOffsByDiagDir(dir);
uint z = GetTileZ(tile);
dir = ReverseDiagDir(dir);
do {
tile += delta;
} while (
!IsTunnelTile(tile) ||
GetTunnelBridgeDirection(tile) != dir ||
GetTileZ(tile) != z
);
return tile;
}
/**
* Is there a tunnel in the way in the given direction?
* @param tile the tile to search from.
* @param z the 'z' to search on.
* @param dir the direction to start searching to.
* @return true if and only if there is a tunnel.
*/
bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
{
TileIndexDiff delta = TileOffsByDiagDir(dir);
uint height;
do {
tile -= delta;
height = GetTileZ(tile);
} while (z < height);
return
z == height &&
IsTunnelTile(tile) &&
GetTunnelBridgeDirection(tile) == dir;
}
/**
* Is there a tunnel in the way in any direction?
* @param tile the tile to search from.
* @param z the 'z' to search on.
* @return true if and only if there is a tunnel.
*/
bool IsTunnelInWay(TileIndex tile, uint z)
{
return
IsTunnelInWayDir(tile, z, (TileX(tile) > (MapMaxX() / 2)) ? DIAGDIR_NE : DIAGDIR_SW) ||
IsTunnelInWayDir(tile, z, (TileY(tile) > (MapMaxY() / 2)) ? DIAGDIR_NW : DIAGDIR_SE);
}
|