pbs.c
changeset 2115 71e12444631c
parent 2049 ad0d49c916d4
child 2163 637ec3c361f5
--- a/pbs.c	Sun Jul 17 19:38:40 2005 +0000
+++ b/pbs.c	Sun Jul 17 20:09:02 2005 +0000
@@ -189,13 +189,17 @@
 		MarkTileDirtyByTile(tile);
 };
 
-void PBSClearPath(TileIndex tile, Trackdir trackdir) {
+void PBSClearPath(TileIndex tile, Trackdir trackdir, TileIndex end_tile, Trackdir end_trackdir) {
 	uint16 res;
 	FindLengthOfTunnelResult flotr;
 	assert(IsValidTile(tile));
-	assert((trackdir & ~8) <= 5);
+	assert(IsValidTrackdir(trackdir));
+
 	do {
-		PBSClearTrack(tile, trackdir & 7);
+		PBSClearTrack(tile, TrackdirToTrack(trackdir));
+
+		if (tile == end_tile && TrackdirToTrack(trackdir) == TrackdirToTrack(end_trackdir))
+			return;
 
 		if (IsTileType(tile, MP_TUNNELBRIDGE) && (_m[tile].m5 & 0xF0)==0 && (unsigned)(_m[tile].m5 & 3) == TrackdirToExitdir(trackdir)) {
 			// this is a tunnel
@@ -204,11 +208,7 @@
 			tile = flotr.tile;
 		} else {
 			byte exitdir = TrackdirToExitdir(trackdir);
-			if (IsTileDepotType(tile, TRANSPORT_RAIL) && (exitdir != GetDepotDirection(tile, TRANSPORT_RAIL)))
-				return;
 			tile = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(exitdir));
-			if (IsTileDepotType(tile, TRANSPORT_RAIL) && (exitdir != ReverseDiagdir(GetDepotDirection(tile, TRANSPORT_RAIL))))
-				return;
 		};
 
 		res = PBSTileReserved(tile);