(svn r12178) -Codechange: use the 'side' parameter in TrainController and TrainCheckIfLineEnds to simplify the code
authorsmatz
Mon, 18 Feb 2008 16:35:38 +0000
changeset 9093 49392c2d9ac7
parent 9092 383a632de666
child 9094 58d1cddf1af6
(svn r12178) -Codechange: use the 'side' parameter in TrainController and TrainCheckIfLineEnds to simplify the code
src/train_cmd.cpp
--- a/src/train_cmd.cpp	Mon Feb 18 16:11:31 2008 +0000
+++ b/src/train_cmd.cpp	Mon Feb 18 16:35:38 2008 +0000
@@ -3040,7 +3040,7 @@
 
 				/* Get the status of the tracks in the new tile and mask
 				 * away the bits that aren't reachable. */
-				uint32 ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL, 0) & _reachable_tracks[enterdir];
+				uint32 ts = GetTileTrackStatus(gp.new_tile, TRANSPORT_RAIL, 0, ReverseDiagDir(enterdir)) & _reachable_tracks[enterdir];
 
 				/* Combine the from & to directions.
 				 * Now, the lower byte contains the track status, and the byte at bit 16 contains
@@ -3475,7 +3475,7 @@
 	TileIndex tile = v->tile + TileOffsByDiagDir(dir);
 
 	/* Determine the track status on the next tile */
-	uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _reachable_tracks[dir];
+	uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & _reachable_tracks[dir];
 
 	/* We are sure the train is not entering a depot, it is detected above */
 
@@ -3485,11 +3485,8 @@
 		bits &= ~TrackCrossesTracks(FindFirstTrack(v->u.rail.track));
 	}
 
-	/* no suitable trackbits at all || wrong railtype || not our track ||
-	 *   tunnel/bridge from opposite side || depot from opposite side */
-	if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner ||
-			(IsTileType(tile, MP_TUNNELBRIDGE) && GetTunnelBridgeDirection(tile) != dir) ||
-			(IsTileDepotType(tile, TRANSPORT_RAIL) && GetRailDepotDirection(tile) == dir) ) {
+	/* no suitable trackbits at all || wrong railtype || not our track */
+	if (bits == TRACK_BIT_NONE || !CheckCompatibleRail(v, tile) || GetTileOwner(tile) != v->owner) {
 		return TrainApproachingLineEnd(v, false);
 	}