X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fsimplephysics.cpp;h=3bcbd5774cf29f634be6d192213a9d53eb9634d4;hb=77f8c0e033b9b5e7085de5d22a62128a996a5b2a;hp=3dc8e2ef93c2b61ee3c806252b81029aa78f5701;hpb=9ddcd066e37e4c72685817c042c30897786ece05;p=r2c2.git diff --git a/source/libmarklin/simplephysics.cpp b/source/libmarklin/simplephysics.cpp index 3dc8e2e..3bcbd57 100644 --- a/source/libmarklin/simplephysics.cpp +++ b/source/libmarklin/simplephysics.cpp @@ -15,7 +15,8 @@ using namespace Msp; namespace Marklin { SimplePhysics::SimplePhysics(): - target_speed(TrainControl::continuous("speed", -1000, 1000)), + target_speed(TrainControl::continuous("speed", 0, 1000)), + reverse(TrainControl::binary("reverse")), accel(0.07), speed(0) { @@ -25,13 +26,25 @@ SimplePhysics::SimplePhysics(): void SimplePhysics::set_control(const string &name, float v) { if(name=="speed") + { target_speed.set(v); + signal_control_changed.emit(target_speed); + } + else if(name=="reverse") + { + if(target_speed.value || speed) + throw InvalidState("Must be stopped to change reverse"); + reverse.set(v); + signal_control_changed.emit(reverse); + } } const TrainControl &SimplePhysics::get_control(const string &name) const { if(name=="speed") return target_speed; + else if(name=="reverse") + return reverse; else throw KeyError("Unknown control", name); }