src/tunnel_map.cpp
author celestar
Mon, 19 Mar 2007 09:33:17 +0000
branchgamebalance
changeset 9894 70d78ac95d6c
parent 5835 e0ff603ae0b7
child 6307 f40e88cff863
child 6719 4cc327ad39d5
permissions -rw-r--r--
(svn r9310) [gamebalance] -Feature: Player performance now influences the wealth level of a town (albeit only on a small scale). This is the first feedback effect that the player has on the local and global economy. Please refrain from using the AI too much for the time being because it'll trash the ratings most likely.
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     1
/* $Id$ */
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     2
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     3
#include "stdafx.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     4
#include "openttd.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     5
#include "tile.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     6
#include "tunnel_map.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     7
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     8
TileIndex GetOtherTunnelEnd(TileIndex tile)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     9
{
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    10
	DiagDirection dir = GetTunnelDirection(tile);
4559
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4291
diff changeset
    11
	TileIndexDiff delta = TileOffsByDiagDir(dir);
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    12
	uint z = GetTileZ(tile);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    13
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    14
	dir = ReverseDiagDir(dir);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    15
	do {
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    16
		tile += delta;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    17
	} while (
3184
7405329343ce (svn r3830) Move IsTunnelTile() from tile.h to tunnel_map.h and add IsTunnel(), which just checks for a tunnel, but not the tile type as IsTunnelTile() does
tron
parents: 3156
diff changeset
    18
		!IsTunnelTile(tile) ||
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    19
		GetTunnelDirection(tile) != dir ||
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    20
		GetTileZ(tile) != z
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    21
	);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    22
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    23
	return tile;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    24
}
3156
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    25
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    26
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    27
static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    28
{
4559
c853d2440065 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4291
diff changeset
    29
	TileIndexDiff delta = TileOffsByDiagDir(dir);
3156
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    30
	uint height;
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    31
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    32
	do {
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    33
		tile -= delta;
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    34
		height = GetTileZ(tile);
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    35
	} while (z < height);
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    36
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    37
	return
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    38
		z == height &&
3184
7405329343ce (svn r3830) Move IsTunnelTile() from tile.h to tunnel_map.h and add IsTunnel(), which just checks for a tunnel, but not the tile type as IsTunnelTile() does
tron
parents: 3156
diff changeset
    39
		IsTunnelTile(tile) &&
3156
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    40
		GetTunnelDirection(tile) == dir;
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    41
}
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    42
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    43
bool IsTunnelInWay(TileIndex tile, uint z)
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    44
{
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    45
	return
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    46
		IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    47
		IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    48
		IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    49
		IsTunnelInWayDir(tile, z, DIAGDIR_NW);
028b6756b279 (svn r3779) Move CheckTunnelInWay() to a more appropriate place, invert its result and give it a less ambiguous name (IsTunnelInWay)
tron
parents: 3154
diff changeset
    50
}