changeset 9792:d0f3b939a387 draft

(svn r13934) -Codechange [YAPP]: Handle through signals in the pathfinders. (michi_cc)
author rubidium <rubidium@openttd.org>
date Sat, 02 Aug 2008 22:49:10 +0000
parents 361c89e64692
children 7a1f095154a8
files src/npf.cpp src/pathfind.cpp src/yapf/yapf_costrail.hpp
diffstat 3 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/npf.cpp
+++ b/src/npf.cpp
@@ -719,10 +719,10 @@
 		Trackdir dst_trackdir = RemoveFirstTrackdir(&trackdirbits);
 		DEBUG(npf, 5, "Expanded into trackdir: %d, remaining trackdirs: 0x%X", dst_trackdir, trackdirbits);
 
-		/* Check for oneway signal against us */
+		/* Tile with signals? */
 		if (IsTileType(dst_tile, MP_RAILWAY) && GetRailTileType(dst_tile) == RAIL_TILE_SIGNALS) {
-			if (HasSignalOnTrackdir(dst_tile, ReverseTrackdir(dst_trackdir)) && !HasSignalOnTrackdir(dst_tile, dst_trackdir))
-				/* if one way signal not pointing towards us, stop going in this direction. */
+			if (HasSignalOnTrackdir(dst_tile, ReverseTrackdir(dst_trackdir)) && !HasSignalOnTrackdir(dst_tile, dst_trackdir) && IsOnewaySignal(dst_tile, TrackdirToTrack(dst_trackdir)))
+				/* If there's a one-way signal not pointing towards us, stop going in this direction. */
 				break;
 		}
 		{
--- a/src/pathfind.cpp
+++ b/src/pathfind.cpp
@@ -674,7 +674,7 @@
 			if (HasSignals(tile)) {
 				if (!HasSignalOnTrackdir(tile, track)) {
 					/* if one way signal not pointing towards us, stop going in this direction => End of rail segment. */
-					if (HasSignalOnTrackdir(tile, ReverseTrackdir(track))) {
+					if (HasSignalOnTrackdir(tile, ReverseTrackdir(track)) && IsOnewaySignal(tile, TrackdirToTrack(track))) {
 						bits = TRACK_BIT_NONE;
 						break;
 					}
--- a/src/yapf/yapf_costrail.hpp
+++ b/src/yapf/yapf_costrail.hpp
@@ -136,7 +136,7 @@
 		if (IsTileType(tile, MP_RAILWAY)) {
 			bool has_signal_against = HasSignalOnTrackdir(tile, ReverseTrackdir(trackdir));
 			bool has_signal_along = HasSignalOnTrackdir(tile, trackdir);
-			if (has_signal_against && !has_signal_along) {
+			if (has_signal_against && !has_signal_along && IsOnewaySignal(tile, TrackdirToTrack(trackdir))) {
 				// one-way signal in opposite direction
 				n.m_segment->m_end_segment_reason |= ESRB_DEAD_END;
 			} else if (has_signal_along) {