X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fsimplecontroller.cpp;h=df828d5498832bf480cea9767518dae92dc6014a;hb=d6516b0d9faa26fe6c64000c34f8d820f91ac479;hp=b53b29163622c107be2cf0606c92ab790aa6ffdb;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/libr2c2/simplecontroller.cpp b/source/libr2c2/simplecontroller.cpp index b53b291..df828d5 100644 --- a/source/libr2c2/simplecontroller.cpp +++ b/source/libr2c2/simplecontroller.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include "simplecontroller.h" @@ -36,7 +36,7 @@ void SimpleController::set_control(const string &name, float v) else if(name==reverse.name) { if(target_speed.value || speed) - throw InvalidState("Must be stopped to change reverse"); + throw logic_error("Must be stopped to change reverse"); reverse.set(v); signal_control_changed.emit(reverse); } @@ -49,7 +49,7 @@ const Controller::Control &SimpleController::get_control(const string &name) con else if(name==reverse.name) return reverse; else - throw KeyError("Unknown control", name); + throw key_error(name); } float SimpleController::get_braking_distance() const @@ -61,17 +61,9 @@ void SimpleController::tick(const Time::TimeDelta &dt) { float secs = dt/Time::sec; if(speedtarget_speed.value) - speed = target_speed.value; - } + speed = min(speed+secs*accel, target_speed.value); else if(speed>target_speed.value) - { - speed -= secs*accel; - if(speed