X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrain.cpp;h=973cc07e8c5a234c9d0e11094b810585ba693344;hb=c5b6976004967e9e0a3c43ad025ebfa096894f3f;hp=ed57dd7ee143c7f1ec8eb1a5b1081f85d9ad4881;hpb=e39a3bb041867d6b469bb26278ea0b05ebea0277;p=r2c2.git diff --git a/source/libmarklin/train.cpp b/source/libmarklin/train.cpp index ed57dd7..973cc07 100644 --- a/source/libmarklin/train.cpp +++ b/source/libmarklin/train.cpp @@ -60,6 +60,8 @@ Train::Train(Layout &l, const LocoType &t, unsigned a): layout.get_driver().signal_sensor.connect(sigc::mem_fun(this, &Train::sensor_event)); layout.get_driver().signal_turnout.connect(sigc::mem_fun(this, &Train::turnout_event)); + layout.get_driver().signal_halt.connect(sigc::mem_fun(this, &Train::halt_event)); + control->signal_control_changed.connect(signal_control_changed); } @@ -362,7 +364,10 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) { overshoot_dist += d; if(overshoot_dist>40*layout.get_catalogue().get_scale()) + { layout.emergency(name+" has not arrived at sensor"); + accurate_position = false; + } } } else if(end_of_route) @@ -557,6 +562,12 @@ void Train::turnout_event(unsigned addr, bool) } } +void Train::halt_event(bool h) +{ + if(h) + accurate_position = false; +} + void Train::block_reserved(const Block &block, const Train *train) { if(&block==pending_block && !train)