- remaining_estimate -= (distance/info->speed)*Time::sec;
- if(remaining_estimate<Time::zero)
- remaining_estimate = Time::zero;
+ distance_traveled += distance;
+ remaining_estimate -= distance;
+}
+
+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;