mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 06:15:04 +00:00
(svn r7628) -Fix: [YAPF] suppress 'Train is lost' message if pathfinding ended on the first two-way red signal due to yapf.rail_firstred_twoway_eol option.
This commit is contained in:
parent
4cee3f0b06
commit
af2a4cecde
@ -19,10 +19,15 @@ public:
|
||||
protected:
|
||||
int m_max_cost;
|
||||
CBlobT<int> m_sig_look_ahead_costs;
|
||||
public:
|
||||
bool m_stopped_on_first_two_way_signal;
|
||||
protected:
|
||||
|
||||
static const int s_max_segment_cost = 10000;
|
||||
|
||||
CYapfCostRailT() : m_max_cost(0)
|
||||
CYapfCostRailT()
|
||||
: m_max_cost(0)
|
||||
, m_stopped_on_first_two_way_signal(false)
|
||||
{
|
||||
// pre-compute look-ahead penalties into array
|
||||
int p0 = Yapf().PfGetSettings().rail_look_ahead_signal_p0;
|
||||
@ -116,6 +121,7 @@ public:
|
||||
if (Yapf().TreatFirstRedTwoWaySignalAsEOL() && n.flags_u.flags_s.m_choice_seen && has_signal_against && n.m_num_signals_passed == 0) {
|
||||
// yes, the first signal is two-way red signal => DEAD END
|
||||
n.m_segment->flags_u.flags_s.m_end_of_line = true;
|
||||
Yapf().m_stopped_on_first_two_way_signal = true;
|
||||
return -1;
|
||||
}
|
||||
SignalType sig_type = GetSignalType(tile);
|
||||
|
@ -118,9 +118,10 @@ public:
|
||||
|
||||
// find the best path
|
||||
bool path_found = Yapf().FindPath(v);
|
||||
if (!path_found && path_not_found != NULL) {
|
||||
if (path_not_found != NULL) {
|
||||
// tell controller that the path was only 'guessed'
|
||||
*path_not_found = !path_found;
|
||||
// treat the path as found if stopped on the first two way signal(s)
|
||||
*path_not_found = !(path_found || Yapf().m_stopped_on_first_two_way_signal);
|
||||
}
|
||||
|
||||
// if path not found - return INVALID_TRACKDIR
|
||||
|
Loading…
Reference in New Issue
Block a user