]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainrouter.cpp
Implement a departure delay for TrainRouter
[r2c2.git] / source / libr2c2 / trainrouter.cpp
index b5a5bef11f674f3301a36c1304558bc63b2bc8fa..462af3853d5f04200eef5a0ca657e2006daad28e 100644 (file)
@@ -110,6 +110,12 @@ bool TrainRouter::is_destination(Track &track) const
                return false;
 }
 
+void TrainRouter::set_departure_delay(const Time::TimeDelta &d)
+{
+       delay = d;
+       update_pending = true;
+}
+
 void TrainRouter::message(const Message &msg)
 {
        if(msg.type=="set-route")
@@ -135,10 +141,19 @@ void TrainRouter::message(const Message &msg)
                else
                        set_destination(*msg.value.value<const Zone *>());
        }
+       else if(msg.type=="set-departure-delay")
+               set_departure_delay(msg.value.value<Time::TimeDelta>());
 }
 
-void TrainRouter::tick(const Time::TimeDelta &)
+void TrainRouter::tick(const Time::TimeDelta &dt)
 {
+       if(delay)
+       {
+               delay -= dt;
+               if(delay<=Time::zero)
+                       delay = Time::zero;
+       }
+
        if(update_pending)
                create_plans(train.get_layout());