OpenTTD Source 20241224-master-gf74b0cf984
tunnelbridge_map.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * 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.
4 * 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.
5 * 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/>.
6 */
7
10#ifndef TUNNELBRIDGE_MAP_H
11#define TUNNELBRIDGE_MAP_H
12
13#include "bridge_map.h"
14#include "tunnel_map.h"
15
16
27{
28 assert(IsTileType(t, MP_TUNNELBRIDGE));
29 return (DiagDirection)GB(t.m5(), 0, 2);
30}
31
40{
41 assert(IsTileType(t, MP_TUNNELBRIDGE));
42 return (TransportType)GB(t.m5(), 2, 2);
43}
44
53{
54 assert(IsTileType(t, MP_TUNNELBRIDGE));
55 return HasBit(t.m7(), 5);
56}
57
66inline void SetTunnelBridgeSnowOrDesert(Tile t, bool snow_or_desert)
67{
68 assert(IsTileType(t, MP_TUNNELBRIDGE));
69 SB(t.m7(), 5, 1, snow_or_desert);
70}
71
83
84
92{
93 assert(IsTileType(t, MP_TUNNELBRIDGE));
95 return HasBit(t.m5(), 4);
96}
97
104inline void SetTunnelBridgeReservation(Tile t, bool b)
105{
106 assert(IsTileType(t, MP_TUNNELBRIDGE));
108 AssignBit(t.m5(), 4, b);
109}
110
121
122#endif /* TUNNELBRIDGE_MAP_H */
debug_inline constexpr bool HasBit(const T x, const uint8_t y)
Checks if a bit in a value is set.
constexpr T AssignBit(T &x, const uint8_t y, bool value)
Assigns a bit in a variable.
constexpr T SB(T &x, const uint8_t s, const uint8_t n, const U d)
Set n bits in x starting at bit s to d.
debug_inline static constexpr uint GB(const T x, const uint8_t s, const uint8_t n)
Fetch n bits from x, started at bit s.
TileIndex GetOtherBridgeEnd(TileIndex tile)
Starting at one bridge end finds the other bridge end.
Map accessor functions for bridges.
Wrapper class to abstract away the way the tiles are stored.
Definition map_func.h:25
debug_inline uint8_t & m7()
Primarily used for newgrf support.
Definition map_func.h:185
debug_inline uint8_t & m5()
General purpose.
Definition map_func.h:161
DiagDirection
Enumeration for diagonal directions.
static debug_inline bool IsTileType(Tile tile, TileType type)
Checks if a tile is a given tiletype.
Definition tile_map.h:150
@ MP_TUNNELBRIDGE
Tunnel entry/exit and bridge heads.
Definition tile_type.h:57
TrackBits DiagDirToDiagTrackBits(DiagDirection diagdir)
Maps a (4-way) direction to the diagonal track bits incidating with that diagdir.
Definition track_func.h:524
TrackBits
Allow incrementing of Track variables.
Definition track_type.h:35
@ TRACK_BIT_NONE
No track.
Definition track_type.h:36
TransportType
Available types of transport.
@ TRANSPORT_RAIL
Transport by train.
TileIndex GetOtherTunnelEnd(TileIndex tile)
Gets the other end of the tunnel.
Map accessors for tunnels.
bool IsTunnel(Tile t)
Is this a tunnel (entrance)?
Definition tunnel_map.h:23
void SetTunnelBridgeSnowOrDesert(Tile t, bool snow_or_desert)
Tunnel: Places this tunnel entrance in a snowy or desert area, or takes it out of there.
DiagDirection GetTunnelBridgeDirection(Tile t)
Get the direction pointing to the other end.
bool HasTunnelBridgeSnowOrDesert(Tile t)
Tunnel: Is this tunnel entrance in a snowy or desert area? Bridge: Does the bridge ramp lie in a snow...
bool HasTunnelBridgeReservation(Tile t)
Get the reservation state of the rail tunnel/bridge.
TransportType GetTunnelBridgeTransportType(Tile t)
Tunnel: Get the transport type of the tunnel (road or rail) Bridge: Get the transport type of the bri...
TrackBits GetTunnelBridgeReservationTrackBits(Tile t)
Get the reserved track bits for a rail tunnel/bridge.
TileIndex GetOtherTunnelBridgeEnd(Tile t)
Determines type of the wormhole and returns its other end.
void SetTunnelBridgeReservation(Tile t, bool b)
Set the reservation state of the rail tunnel/bridge.