OpenTTD
road_map.cpp
Go to the documentation of this file.
1 /* $Id: road_map.cpp 26482 2014-04-23 20:13:33Z rubidium $ */
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 #include "stdafx.h"
13 #include "station_map.h"
14 #include "tunnelbridge_map.h"
15 
16 #include "safeguards.h"
17 
18 
35 RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance)
36 {
37  if (!HasTileRoadType(tile, rt)) return ROAD_NONE;
38 
39  switch (GetTileType(tile)) {
40  case MP_ROAD:
41  switch (GetRoadTileType(tile)) {
42  default:
43  case ROAD_TILE_NORMAL: return GetRoadBits(tile, rt);
44  case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile);
46  }
47 
48  case MP_STATION:
49  if (!IsRoadStopTile(tile)) return ROAD_NONE;
50  if (IsDriveThroughStopTile(tile)) return (GetRoadStopDir(tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y;
51  return DiagDirToRoadBits(GetRoadStopDir(tile));
52 
53  case MP_TUNNELBRIDGE:
55  return straight_tunnel_bridge_entrance ?
58 
59  default: return ROAD_NONE;
60  }
61 }
static TileType GetTileType(TileIndex tile)
Get the tiletype of a given tile.
Definition: tile_map.h:89
static TransportType GetTunnelBridgeTransportType(TileIndex t)
Tunnel: Get the transport type of the tunnel (road or rail) Bridge: Get the transport type of the bri...
Level crossing.
Definition: road_map.h:25
Maps accessors for stations.
A tile with road (or tram tracks)
Definition: tile_type.h:45
Full road along the x-axis (south-west + north-east)
Definition: road_type.h:61
static bool HasTileRoadType(TileIndex t, RoadType rt)
Check if a tile has a specific road type.
Definition: road_map.h:188
static RoadBits GetRoadBits(TileIndex t, RoadType rt)
Get the present road bits for a specific road type.
Definition: road_map.h:111
Northeast, upper right on your monitor.
static DiagDirection GetRoadDepotDirection(TileIndex t)
Get the direction of the exit of a road depot.
Definition: road_map.h:534
RoadType
The different roadtypes we support.
Definition: road_type.h:22
static bool IsDriveThroughStopTile(TileIndex t)
Is tile t a drive through road stop station?
Definition: station_map.h:234
Normal road.
Definition: road_map.h:24
static RoadBits DiagDirToRoadBits(DiagDirection d)
Create the road-part which belongs to the given DiagDirection.
Definition: road_func.h:144
static DiagDirection GetRoadStopDir(TileIndex t)
Gets the direction the road stop entrance points towards.
Definition: station_map.h:258
static DiagDirection ReverseDiagDir(DiagDirection d)
Returns the reverse direction of the given DiagDirection.
Definition of base types and functions in a cross-platform compatible way.
A number of safeguards to prevent using unsafe methods.
RoadBits
Enumeration for the road parts on a tile.
Definition: road_type.h:55
No road-part is build.
Definition: road_type.h:56
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance)
Returns the RoadBits on an arbitrary tile Special behaviour:
Definition: road_map.cpp:35
static DiagDirection GetTunnelBridgeDirection(TileIndex t)
Get the direction pointing to the other end.
static RoadBits GetCrossingRoadBits(TileIndex tile)
Get the road bits of a level crossing.
Definition: road_map.h:318
static Axis DiagDirToAxis(DiagDirection d)
Convert a DiagDirection to the axis.
static RoadTileType GetRoadTileType(TileIndex t)
Get the type of the road tile.
Definition: road_map.h:35
Tunnel entry/exit and bridge heads.
Definition: tile_type.h:52
uint32 TileIndex
The index/ID of a Tile.
Definition: tile_type.h:80
A tile of a station.
Definition: tile_type.h:48
Transport by road vehicle.
static bool IsRoadStopTile(TileIndex t)
Is tile t a road stop station?
Definition: station_map.h:214
Functions that have tunnels and bridges in common.
Full road along the y-axis (north-west + south-east)
Definition: road_type.h:62
Depot (one entrance)
Definition: road_map.h:26
static RoadBits AxisToRoadBits(Axis a)
Create the road-part which belongs to the given Axis.
Definition: road_func.h:159