OpenTTD
tunnelbridge_map.h
Go to the documentation of this file.
1 /* $Id: tunnelbridge_map.h 24900 2013-01-08 22:46:42Z planetmaker $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef TUNNELBRIDGE_MAP_H
13 #define TUNNELBRIDGE_MAP_H
14 
15 #include "bridge_map.h"
16 #include "tunnel_map.h"
17 
18 
29 {
30  assert(IsTileType(t, MP_TUNNELBRIDGE));
31  return (DiagDirection)GB(_m[t].m5, 0, 2);
32 }
33 
42 {
43  assert(IsTileType(t, MP_TUNNELBRIDGE));
44  return (TransportType)GB(_m[t].m5, 2, 2);
45 }
46 
55 {
56  assert(IsTileType(t, MP_TUNNELBRIDGE));
57  return HasBit(_me[t].m7, 5);
58 }
59 
68 static inline void SetTunnelBridgeSnowOrDesert(TileIndex t, bool snow_or_desert)
69 {
70  assert(IsTileType(t, MP_TUNNELBRIDGE));
71  SB(_me[t].m7, 5, 1, snow_or_desert);
72 }
73 
81 {
82  assert(IsTileType(t, MP_TUNNELBRIDGE));
83  return IsTunnel(t) ? GetOtherTunnelEnd(t) : GetOtherBridgeEnd(t);
84 }
85 
86 
94 {
95  assert(IsTileType(t, MP_TUNNELBRIDGE));
97  return HasBit(_m[t].m5, 4);
98 }
99 
106 static inline void SetTunnelBridgeReservation(TileIndex t, bool b)
107 {
108  assert(IsTileType(t, MP_TUNNELBRIDGE));
110  SB(_m[t].m5, 4, 1, b ? 1 : 0);
111 }
112 
120 {
122 }
123 
124 #endif /* TUNNELBRIDGE_MAP_H */
TileIndex GetOtherBridgeEnd(TileIndex tile)
Starting at one bridge end finds the other bridge end.
Definition: bridge_map.cpp:61
static TransportType GetTunnelBridgeTransportType(TileIndex t)
Tunnel: Get the transport type of the tunnel (road or rail) Bridge: Get the transport type of the bri...
static void SetTunnelBridgeReservation(TileIndex t, bool b)
Set the reservation state of the rail tunnel/bridge.
Tile * _m
Tiles of the map.
Definition: map.cpp:32
static void SetTunnelBridgeSnowOrDesert(TileIndex t, bool snow_or_desert)
Tunnel: Places this tunnel entrance in a snowy or desert area, or takes it out of there...
static TrackBits DiagDirToDiagTrackBits(DiagDirection diagdir)
Maps a (4-way) direction to the diagonal track bits incidating with that diagdir. ...
Definition: track_func.h:512
static T SB(T &x, const uint8 s, const uint8 n, const U d)
Set n bits in x starting at bit s to d.
TrackBits
Bitfield corresponding to Track.
Definition: track_type.h:41
static bool IsTileType(TileIndex tile, TileType type)
Checks if a tile is a give tiletype.
Definition: tile_map.h:143
TileExtended * _me
Extended Tiles of the map.
Definition: map.cpp:33
Map accessor functions for bridges.
DiagDirection
Enumeration for diagonal directions.
static DiagDirection GetTunnelBridgeDirection(TileIndex t)
Get the direction pointing to the other end.
static TileIndex GetOtherTunnelBridgeEnd(TileIndex t)
Determines type of the wormhole and returns its other end.
Transport by train.
static bool HasTunnelBridgeSnowOrDesert(TileIndex t)
Tunnel: Is this tunnel entrance in a snowy or desert area? Bridge: Does the bridge ramp lie in a snow...
Tunnel entry/exit and bridge heads.
Definition: tile_type.h:52
static bool HasTunnelBridgeReservation(TileIndex t)
Get the reservation state of the rail tunnel/bridge.
uint32 TileIndex
The index/ID of a Tile.
Definition: tile_type.h:80
TransportType
Available types of transport.
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
TileIndex GetOtherTunnelEnd(TileIndex tile)
Gets the other end of the tunnel.
Definition: tunnel_map.cpp:24
static TrackBits GetTunnelBridgeReservationTrackBits(TileIndex t)
Get the reserved track bits for a rail tunnel/bridge.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
Map accessors for tunnels.
static bool IsTunnel(TileIndex t)
Is this a tunnel (entrance)?
Definition: tunnel_map.h:24
No track.
Definition: track_type.h:42