+ waypoints.clear();
+ sequence_points.clear();
+ current_sequence = 0;
+ sequence_check_pending = false;
+
+ route_changed();
+
+ return true;
+}
+
+const Route *TrainRouter::get_route() const
+{
+ if(routes.empty())
+ return 0;
+ return routes.front();
+}
+
+void TrainRouter::use_planned_route()
+{
+ if(!planner || planner->get_result()!=TrainRoutePlanner::COMPLETE)
+ return;
+
+ const list<Route *> &planned_routes = planner->get_routes_for(train);
+
+ routes.clear();
+ routes.insert(routes.end(), planned_routes.begin(), planned_routes.end());
+ create_lead_route();
+
+ sequence_points = planner->get_sequence_for(train);
+ current_sequence = 0;
+ sequence_check_pending = false;
+
+ route_changed();
+}
+
+void TrainRouter::route_changed()
+{
+ BlockIter fncb = train.get_last_critical_block().next();
+
+ arrival = ON_THE_WAY;
+ reserving_route = routes.begin();
+ if(!routes.empty())