summaryrefslogtreecommitdiff
path: root/src/pbs.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-08-02 22:47:48 +0000
committerrubidium <rubidium@openttd.org>2008-08-02 22:47:48 +0000
commit2bb88255388bedae0d94c9c06751ee8f140a9194 (patch)
treeab32926a52ecf98f970be7136e5b8f5078296938 /src/pbs.cpp
parentdf99103a3167874a34b1f1f65fe60aae8ff3116a (diff)
downloadopenttd-2bb88255388bedae0d94c9c06751ee8f140a9194.tar.xz
(svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
Diffstat (limited to 'src/pbs.cpp')
-rw-r--r--src/pbs.cpp43
1 files changed, 43 insertions, 0 deletions
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;
+}