tunnel_map.h
author tron
Sun, 21 May 2006 13:51:36 +0000
changeset 3884 793081f80381
parent 3369 cab209754317
child 4666 172a0cdf28a6
permissions -rw-r--r--
(svn r4940) Remove the dubious feature of remembering the last built depot. It serves no real purpose except causing confusion
3154
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     1
/* $Id$ */
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     2
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     3
#ifndef TUNNEL_MAP_H
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     4
#define TUNNEL_MAP_H
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     5
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     6
#include "direction.h"
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     7
#include "macros.h"
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     8
#include "map.h"
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     9
#include "rail.h"
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    10
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    11
3184
118a520164e4 (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
    12
static inline bool IsTunnel(TileIndex t)
118a520164e4 (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
    13
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    14
	assert(IsTileType(t, MP_TUNNELBRIDGE));
3184
118a520164e4 (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
    15
	return !HASBIT(_m[t].m5, 7);
118a520164e4 (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
    16
}
118a520164e4 (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
    17
118a520164e4 (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
118a520164e4 (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
    19
static inline bool IsTunnelTile(TileIndex t)
118a520164e4 (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
    20
{
118a520164e4 (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
    21
	return IsTileType(t, MP_TUNNELBRIDGE) && IsTunnel(t);
118a520164e4 (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
    22
}
118a520164e4 (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
    23
118a520164e4 (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
    24
3154
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    25
static inline DiagDirection GetTunnelDirection(TileIndex t)
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    26
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    27
	assert(IsTunnelTile(t));
3154
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    28
	return (DiagDirection)GB(_m[t].m5, 0, 2);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    29
}
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    30
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    31
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    32
static inline TransportType GetTunnelTransportType(TileIndex t)
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    33
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    34
	assert(IsTunnelTile(t));
3154
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    35
	return (TransportType)GB(_m[t].m5, 2, 2);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    36
}
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    37
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    38
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    39
TileIndex GetOtherTunnelEnd(TileIndex);
3156
f4caf4197189 (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
bool IsTunnelInWay(TileIndex, uint z);
3154
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    41
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    42
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    43
static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d)
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    44
{
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    45
	SetTileType(t, MP_TUNNELBRIDGE);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    46
	SetTileOwner(t, o);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    47
	_m[t].m2 = 0;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    48
	_m[t].m3 = 0;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    49
	_m[t].m4 = 0;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    50
	_m[t].m5 = TRANSPORT_ROAD << 2 | d;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    51
}
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    52
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    53
static inline void MakeRailTunnel(TileIndex t, Owner o, DiagDirection d, RailType r)
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    54
{
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    55
	SetTileType(t, MP_TUNNELBRIDGE);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    56
	SetTileOwner(t, o);
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    57
	_m[t].m2 = 0;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    58
	_m[t].m3 = r;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    59
	_m[t].m4 = 0;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    60
	_m[t].m5 = TRANSPORT_RAIL << 2 | d;
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    61
}
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    62
6ab0cb6b7ab3 (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    63
#endif