From 2bb88255388bedae0d94c9c06751ee8f140a9194 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 2 Aug 2008 22:47:48 +0000 Subject: (svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc) --- src/pbs.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ src/pbs.h | 13 +++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/pbs.cpp create mode 100644 src/pbs.h (limited to 'src') diff --git a/src/pbs.cpp b/src/pbs.cpp new file mode 100644 index 000000000..c75eb8caf --- /dev/null +++ b/src/pbs.cpp @@ -0,0 +1,43 @@ +/* $Id$ */ + +/** @file pbs.cpp */ + +#include "stdafx.h" +#include "openttd.h" +#include "pbs.h" +#include "rail_map.h" +#include "road_map.h" +#include "station_map.h" +#include "tunnelbridge_map.h" + +/** + * Get the reserved trackbits for any tile, regardless of type. + * @param t the tile + * @return the reserved trackbits. TRACK_BIT_NONE on nothing reserved or + * a tile without rail. + */ +TrackBits GetReservedTrackbits(TileIndex t) +{ + switch (GetTileType(t)) { + case MP_RAILWAY: + if (IsRailWaypoint(t) || IsRailDepot(t)) return GetRailWaypointReservation(t); + if (IsPlainRailTile(t)) return GetTrackReservation(t); + break; + + case MP_ROAD: + if (IsLevelCrossing(t)) return GetRailCrossingReservation(t); + break; + + case MP_STATION: + if (IsRailwayStation(t)) return GetRailStationReservation(t); + break; + + case MP_TUNNELBRIDGE: + if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) return GetRailTunnelBridgeReservation(t); + break; + + default: + break; + } + return TRACK_BIT_NONE; +} diff --git a/src/pbs.h b/src/pbs.h new file mode 100644 index 000000000..51a9ba201 --- /dev/null +++ b/src/pbs.h @@ -0,0 +1,13 @@ +/* $Id$ */ + +/** @file pbs.h PBS support routines */ + +#ifndef PBS_H +#define PBS_H + +#include "tile_type.h" +#include "track_type.h" + +TrackBits GetReservedTrackbits(TileIndex t); + +#endif /* PBS_H */ -- cgit v1.2.3-54-g00ecf