forked from mirror/OpenTTD
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
This commit is contained in:
50
src/tunnel_map.cpp
Normal file
50
src/tunnel_map.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
/* $Id$ */
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "openttd.h"
|
||||
#include "tile.h"
|
||||
#include "tunnel_map.h"
|
||||
|
||||
TileIndex GetOtherTunnelEnd(TileIndex tile)
|
||||
{
|
||||
DiagDirection dir = GetTunnelDirection(tile);
|
||||
TileIndexDiff delta = TileOffsByDiagDir(dir);
|
||||
uint z = GetTileZ(tile);
|
||||
|
||||
dir = ReverseDiagDir(dir);
|
||||
do {
|
||||
tile += delta;
|
||||
} while (
|
||||
!IsTunnelTile(tile) ||
|
||||
GetTunnelDirection(tile) != dir ||
|
||||
GetTileZ(tile) != z
|
||||
);
|
||||
|
||||
return tile;
|
||||
}
|
||||
|
||||
|
||||
static 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) &&
|
||||
GetTunnelDirection(tile) == dir;
|
||||
}
|
||||
|
||||
bool IsTunnelInWay(TileIndex tile, uint z)
|
||||
{
|
||||
return
|
||||
IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
|
||||
IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
|
||||
IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
|
||||
IsTunnelInWayDir(tile, z, DIAGDIR_NW);
|
||||
}
|
Reference in New Issue
Block a user