X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrafficmanager.cpp;h=096d675e8432aafbba37902cefa5200ecdcc7187;hb=aead7f2da831199fbb8f6950b067656b2965c2fa;hp=cc2089b32780fdcc210bea450265ef606b69ee55;hpb=52cbe8d99669f843f8f75c51128e2748584dd03a;p=r2c2.git diff --git a/source/libmarklin/trafficmanager.cpp b/source/libmarklin/trafficmanager.cpp index cc2089b..096d675 100644 --- a/source/libmarklin/trafficmanager.cpp +++ b/source/libmarklin/trafficmanager.cpp @@ -1,9 +1,11 @@ +#include #include "control.h" #include "layout.h" #include "trafficmanager.h" #include "turnout.h" using namespace std; +using namespace Msp; namespace Marklin { @@ -46,16 +48,16 @@ TrafficManager::~TrafficManager() delete *i; } -Block *TrafficManager::get_block_by_track(const Track *t) const +Block &TrafficManager::get_block_by_track(const Track &t) const { for(BlockSeq::const_iterator i=blocks.begin(); i!=blocks.end(); ++i) { const set &tracks=(*i)->get_tracks(); - if(tracks.count(const_cast(t))) - return *i; + if(tracks.count(const_cast(&t))) + return **i; } - return 0; + throw InvalidParameterValue("Unknown track"); } void TrafficManager::add_train(Train *t) @@ -64,6 +66,14 @@ void TrafficManager::add_train(Train *t) trains.push_back(t); } +void TrafficManager::tick() +{ + Time::TimeStamp t=Time::now(); + + for(list::iterator i=trains.begin(); i!=trains.end(); ++i) + (*i)->tick(t); +} + void TrafficManager::turnout_route_changed(unsigned, Turnout *) { }