]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/aicontrol.cpp
Implement train priority system
[r2c2.git] / source / libmarklin / aicontrol.cpp
index ae47d412b7ffb38f619dd0981aba324e5ef0f196..d5a29c0e540b2ceafbee82151db6e1153c5006ab 100644 (file)
@@ -41,6 +41,8 @@ void AIControl::set_control(const string &n, float v)
                target_speed.set(v);
                if(!blocked)
                        next_model->set_control("speed", target_speed.value);
+
+               signal_control_changed.emit(n, target_speed.value);
        }
        else
                next_model->set_control(n, v);
@@ -59,6 +61,14 @@ float AIControl::get_speed() const
        return next_model->get_speed();
 }
 
+bool AIControl::get_reverse() const
+{
+       if(float ns = next_model->get_speed())
+               return ns<0;
+       else
+               return target_speed.value<0;
+}
+
 float AIControl::get_braking_distance() const
 {
        return next_model->get_braking_distance();
@@ -86,6 +96,12 @@ void AIControl::tick(const Time::TimeDelta &dt)
                train.set_active(false);
 }
 
+void AIControl::control_changed(const string &n, float v)
+{
+       if(n!="speed")
+               signal_control_changed.emit(n, v);
+}
+
 void AIControl::arrived()
 {
        set_control("speed", 0);