tunnel_map.h
author rubidium
Tue, 26 Dec 2006 00:33:07 +0000
changeset 5562 6ad177b6c9ff
parent 4666 850b5b6e4bac
child 5513 0d3227e250eb
child 5590 dc34c43fc3eb
child 5661 6c6145677e7c
permissions -rw-r--r--
(svn r7559) -Fix (FS#456): clicking the 'Full Load' button when the 'current' order is selected in the Order GUI and one has instructed the train to go to the depot, via the button in the Train View GUI, changed the depot order by switching from 'service at depot' to 'stop at depot' and vice versa.
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
#ifndef TUNNEL_MAP_H
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     4
#define TUNNEL_MAP_H
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     5
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     6
#include "direction.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     7
#include "macros.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     8
#include "map.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
     9
#include "rail.h"
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    10
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    11
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
    12
static inline bool IsTunnel(TileIndex t)
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
    13
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    14
	assert(IsTileType(t, MP_TUNNELBRIDGE));
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
    15
	return !HASBIT(_m[t].m5, 7);
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
    16
}
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
    17
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
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
    19
static inline bool IsTunnelTile(TileIndex t)
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
    20
{
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
    21
	return IsTileType(t, MP_TUNNELBRIDGE) && IsTunnel(t);
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
    22
}
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
    23
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
    24
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    25
static inline DiagDirection GetTunnelDirection(TileIndex t)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    26
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    27
	assert(IsTunnelTile(t));
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    28
	return (DiagDirection)GB(_m[t].m5, 0, 2);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    29
}
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    30
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    31
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    32
static inline TransportType GetTunnelTransportType(TileIndex t)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    33
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3184
diff changeset
    34
	assert(IsTunnelTile(t));
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    35
	return (TransportType)GB(_m[t].m5, 2, 2);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    36
}
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    37
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    38
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    39
TileIndex GetOtherTunnelEnd(TileIndex);
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
bool IsTunnelInWay(TileIndex, uint z);
3154
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    41
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    42
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    43
static inline void MakeRoadTunnel(TileIndex t, Owner o, DiagDirection d)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    44
{
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    45
	SetTileType(t, MP_TUNNELBRIDGE);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    46
	SetTileOwner(t, o);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    47
	_m[t].m2 = 0;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    48
	_m[t].m3 = 0;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    49
	_m[t].m4 = 0;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    50
	_m[t].m5 = TRANSPORT_ROAD << 2 | d;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    51
}
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    52
a8fffb204d0e (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)
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    54
{
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    55
	SetTileType(t, MP_TUNNELBRIDGE);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    56
	SetTileOwner(t, o);
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    57
	_m[t].m2 = 0;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    58
	_m[t].m3 = r;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    59
	_m[t].m4 = 0;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    60
	_m[t].m5 = TRANSPORT_RAIL << 2 | d;
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    61
}
a8fffb204d0e (svn r3777) Add some functions to handle tunnels
tron
parents:
diff changeset
    62
4666
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3369
diff changeset
    63
#endif /* TUNNEL_MAP_H */