From 7645c5ac43b8b16611fdd169bc01fb5e9d2d43b9 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 15 Jan 2011 22:40:54 +0000 Subject: [PATCH] (svn r21815) -Fix [FS#3908]: [YAPF] Apply a pathfinder penalty for back of one-way path signals so those aren't preferred over other possibilities --- src/pathfinder/yapf/yapf_costrail.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index 5d00adddbe..0cee476993 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -515,10 +515,13 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th TILE next(tf_local.m_new_tile, (Trackdir)FindFirstBit2x64(tf_local.m_new_td_bits)); if (TrackFollower::DoTrackMasking() && IsTileType(next.tile, MP_RAILWAY)) { - if ((HasSignalOnTrackdir(next.tile, next.td) && IsPbsSignal(GetSignalType(next.tile, TrackdirToTrack(next.td)))) || - (HasSignalOnTrackdir(next.tile, ReverseTrackdir(next.td)) && GetSignalType(next.tile, TrackdirToTrack(next.td)) == SIGTYPE_PBS_ONEWAY)) { + if (HasSignalOnTrackdir(next.tile, next.td) && IsPbsSignal(GetSignalType(next.tile, TrackdirToTrack(next.td)))) { /* Possible safe tile. */ end_segment_reason |= ESRB_SAFE_TILE; + } else if (HasSignalOnTrackdir(next.tile, ReverseTrackdir(next.td)) && GetSignalType(next.tile, TrackdirToTrack(next.td)) == SIGTYPE_PBS_ONEWAY) { + /* Possible safe tile, but not so good as it's the back of a signal... */ + end_segment_reason |= ESRB_SAFE_TILE | ESRB_DEAD_END; + extra_cost += Yapf().PfGetSettings().rail_lastred_exit_penalty; } }