]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainrouter.cpp
Unoccupy destination during planning when the train has departed again
[r2c2.git] / source / libr2c2 / trainrouter.cpp
index bbb87eae116eb56326c911900eec1f0d09fe9303..9245774f605309d597591fa01e95eb60f8b20c38 100644 (file)
@@ -181,6 +181,11 @@ void TrainRouter::set_departure_delay(const Time::TimeDelta &d)
        destination_changed = true;
 }
 
+void TrainRouter::set_trip_duration(const Time::TimeDelta &d)
+{
+       duration = d;
+}
+
 void TrainRouter::message(const Message &msg)
 {
        if(msg.type=="set-route")
@@ -208,6 +213,8 @@ void TrainRouter::message(const Message &msg)
        }
        else if(msg.type=="set-departure-delay")
                set_departure_delay(msg.value.value<Time::TimeDelta>());
+       else if(msg.type=="set-trip-duration")
+               set_trip_duration(msg.value.value<Time::TimeDelta>());
 }
 
 void TrainRouter::tick(const Time::TimeDelta &dt)
@@ -215,9 +222,14 @@ void TrainRouter::tick(const Time::TimeDelta &dt)
        if(delay)
        {
                delay -= dt;
-               if(delay<=Time::zero)
+               if(delay<Time::zero)
+               {
+                       duration = max(duration+delay, Time::zero);
                        delay = Time::zero;
+               }
        }
+       else if(duration)
+               duration = max(duration-dt, Time::zero);
 
        if(destination_changed && !planner)
                start_planning(train.get_layout());