tunnel_map.c
author Darkvater
Sat, 12 Aug 2006 12:35:23 +0000
branch0.4
changeset 10075 7ae6bc813772
parent 10050 53795ed4cdaf
permissions -rw-r--r--
(svn r5862) - Prepare 0.4 branch for release. Update readme's, bugs, installers, changelog, etc. to 0.4.8
10050
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     1
/* $Id$ */
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     2
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     3
#include "stdafx.h"
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     4
#include "openttd.h"
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     5
#include "tile.h"
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     6
#include "tunnel_map.h"
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     7
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     8
static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
     9
{
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    10
	TileIndexDiff delta = TileOffsByDir(dir);
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    11
	uint height;
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    12
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    13
	do {
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    14
		tile -= delta;
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    15
		height = GetTileZ(tile);
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    16
	} while (z < height);
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    17
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    18
	return
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    19
		z == height &&
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    20
		IsTunnelTile(tile) &&
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    21
		GetTunnelDirection(tile) == dir;
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    22
}
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    23
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    24
bool IsTunnelInWay(TileIndex tile, uint z)
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    25
{
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    26
	return
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    27
		IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    28
		IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    29
		IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    30
		IsTunnelInWayDir(tile, z, DIAGDIR_NW);
53795ed4cdaf (svn r5369) -Backport: 5363, 5364, 5365
tron
parents:
diff changeset
    31
}