+void TrainRoutePlanner::TrainRoutingState::advance(const Time::TimeDelta &dt)
+{
+ if(delay>=dt)
+ {
+ delay -= dt;
+ return;
+ }
+
+ float secs = dt/Time::sec;
+ if(delay)
+ {
+ secs -= delay/Time::sec;
+ delay = Time::zero;
+ }
+
+ if(state==MOVING)
+ advance(info->speed*secs);
+ else if(state!=ARRIVED)
+ wait_time += secs*Time::sec;
+}
+