rail.h
changeset 1967 c57192f4c121
parent 1950 6e4d384034d9
child 2001 480b824e27f0
--- a/rail.h	Wed Jun 22 18:00:48 2005 +0000
+++ b/rail.h	Wed Jun 22 22:38:18 2005 +0000
@@ -443,4 +443,33 @@
  */
 RailType GetTileRailType(TileIndex tile, byte trackdir);
 
+/**
+ * Returns whether the given tile is a level crossing.
+ */
+static inline bool IsLevelCrossing(TileIndex tile)
+{
+	return (_map5[tile] & 0xF0) == 0x10;
+}
+
+/**
+ * Gets the transport type of the given track on the given crossing tile.
+ * @return  The transport type of the given track, either TRANSPORT_ROAD,
+ * TRANSPORT_RAIL.
+ */
+static inline TransportType GetCrossingTransportType(TileIndex tile, Track track)
+{
+	/* XXX: Nicer way to write this? */
+	switch(track)
+	{
+		/* When map5 bit 3 is set, the road runs in the y direction (DIAG2) */
+		case TRACK_DIAG1:
+			return (HASBIT(_map5[tile], 3) ? TRANSPORT_RAIL : TRANSPORT_ROAD);
+		case TRACK_DIAG2:
+			return (HASBIT(_map5[tile], 3) ? TRANSPORT_ROAD : TRANSPORT_RAIL);
+		default:
+			assert(0);
+	}
+	return INVALID_TRANSPORT;
+}
+
 #endif // RAIL_H