From e744b97ec8bfe567136200096d2279bce982d160 Mon Sep 17 00:00:00 2001 From: michi_cc Date: Wed, 15 Dec 2010 14:33:24 +0000 Subject: (svn r21524) -Fix [FS#4302]: Do not apply the last signal red pathfinder penalty when the signal is a path signal. --- src/pathfinder/npf/npf.cpp | 5 +++-- src/pathfinder/yapf/yapf_costrail.hpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pathfinder/npf/npf.cpp b/src/pathfinder/npf/npf.cpp index e8e13f5fd..4f277cdcc 100644 --- a/src/pathfinder/npf/npf.cpp +++ b/src/pathfinder/npf/npf.cpp @@ -469,8 +469,9 @@ static int32 NPFRailPathCost(AyStar *as, AyStarNode *current, OpenListNode *pare } } } - /* Record the state of this signal */ - NPFSetFlag(current, NPF_FLAG_LAST_SIGNAL_RED, true); + /* Record the state of this signal. Path signals are assumed to + * be green as the signal state of them has no meaning for this. */ + NPFSetFlag(current, NPF_FLAG_LAST_SIGNAL_RED, !IsPbsSignal(sigtype)); } else { /* Record the state of this signal */ NPFSetFlag(current, NPF_FLAG_LAST_SIGNAL_RED, false); diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index 5c445843a..4b965f2e0 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -587,8 +587,8 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th if (n.m_last_red_signal_type == SIGTYPE_EXIT) { /* last signal was red pre-signal-exit */ extra_cost += Yapf().PfGetSettings().rail_lastred_exit_penalty; - } else { - /* last signal was red, but not exit */ + } else if (!IsPbsSignal(n.m_last_red_signal_type)) { + /* Last signal was red, but not exit or path signal. */ extra_cost += Yapf().PfGetSettings().rail_lastred_penalty; } } -- cgit v1.2.3-70-g09d2