X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Faicontrol.cpp;h=d5a29c0e540b2ceafbee82151db6e1153c5006ab;hb=4d33c389881ebdf0b3926343d53e7d1ece654e20;hp=ae47d412b7ffb38f619dd0981aba324e5ef0f196;hpb=9ddcd066e37e4c72685817c042c30897786ece05;p=r2c2.git diff --git a/source/libmarklin/aicontrol.cpp b/source/libmarklin/aicontrol.cpp index ae47d41..d5a29c0 100644 --- a/source/libmarklin/aicontrol.cpp +++ b/source/libmarklin/aicontrol.cpp @@ -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);