summaryrefslogtreecommitdiff
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
parentdf99103a3167874a34b1f1f65fe60aae8ff3116a (diff)
downloadopenttd-2bb88255388bedae0d94c9c06751ee8f140a9194.tar.xz
(svn r13928) -Add [YAPP]: Function for getting the path reservation state of any tile. (michi_cc)
-rw-r--r--projects/openttd_vs80.vcproj8
-rw-r--r--projects/openttd_vs90.vcproj8
-rw-r--r--source.list2
-rw-r--r--src/pbs.cpp43
-rw-r--r--src/pbs.h13
5 files changed, 74 insertions, 0 deletions
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
index 2d4f9c02e..b19198b2d 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -664,6 +664,10 @@
>
</File>
<File
+ RelativePath=".\..\src\pbs.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\players.cpp"
>
</File>
@@ -1264,6 +1268,10 @@
>
</File>
<File
+ RelativePath=".\..\src\pbs.h"
+ >
+ </File>
+ <File
RelativePath=".\..\src\player_base.h"
>
</File>
diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj
index 4b33a7f35..3523d11dc 100644
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -661,6 +661,10 @@
>
</File>
<File
+ RelativePath=".\..\src\pbs.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\players.cpp"
>
</File>
@@ -1261,6 +1265,10 @@
>
</File>
<File
+ RelativePath=".\..\src\pbs.h"
+ >
+ </File>
+ <File
RelativePath=".\..\src\player_base.h"
>
</File>
diff --git a/source.list b/source.list
index 8624afe24..a46e52a1e 100644
--- a/source.list
+++ b/source.list
@@ -57,6 +57,7 @@ os_timer.cpp
ottdres.rc
#end
pathfind.cpp
+pbs.cpp
players.cpp
queue.cpp
rail.cpp
@@ -241,6 +242,7 @@ order_base.h
order_func.h
order_type.h
pathfind.h
+pbs.h
player_base.h
player_face.h
player_func.h
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 */