can't rely on the resync code in block_reserved since we may need to
clear the stop marker to continue allocation. */
TrackIter track = train.get_block_allocator().first().track_iter();
+ list<SequencePoint>::iterator seq_begin = sequence_points.begin();
for(; track; track=track.next())
{
if(!advance_to_track(reserving_route, track))
}
if(&track->get_block()==fncb.block())
break;
+
+ if(seq_begin!=sequence_points.end() && seq_begin->block==&track->get_block())
+ {
+ current_sequence = seq_begin->sequence_out;
+ ++seq_begin;
+ }
}
+
+ sequence_points.erase(sequence_points.begin(), seq_begin);
}
if(!already_at_end)
if(!wp.has_track(*t_iter))
{
waypoints.erase(waypoints.begin());
+ metrics_stale = true;
signal_waypoint_reached.emit(&wp);
signal_event.emit(Message("waypoint-reached", &wp));
break;
delete *i;
metrics.clear();
+ metrics_stale = false;
+
if(!destination)
return;
for(unsigned i=metrics.size(); --i>0; )
metrics[i]->chain_to(*metrics[(i+1)%metrics.size()]);
-
- metrics_stale = false;
}
bool TrainRouter::create_lead_route()