X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrafficmanager.cpp;h=b7301d3dd63e19674ebc0f0896c9aa1ce3ff6f5e;hb=010d8321e982d1684fcbff5bf6fc2bdec7cb7bae;hp=4075415ac95fdbe703a3287ad0e1f8d6e586d2d0;hpb=3df8cb5c78fbb0b919bcb79677c6c788b8028482;p=r2c2.git diff --git a/source/libmarklin/trafficmanager.cpp b/source/libmarklin/trafficmanager.cpp index 4075415..b7301d3 100644 --- a/source/libmarklin/trafficmanager.cpp +++ b/source/libmarklin/trafficmanager.cpp @@ -25,7 +25,7 @@ TrafficManager::TrafficManager(Control &c, Layout &l): control(c), layout(l) { - const set &tracks=layout.get_tracks(); + const set &tracks = layout.get_tracks(); set used_tracks; for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) @@ -37,7 +37,7 @@ TrafficManager::TrafficManager(Control &c, Layout &l): if(used_tracks.count(*i)==0) { - Block *block=new Block(*this, **i); + Block *block = new Block(*this, **i); blocks.push_back(block); used_tracks.insert(block->get_tracks().begin(), block->get_tracks().end()); } @@ -61,7 +61,7 @@ Block &TrafficManager::get_block_by_track(const Track &t) const { for(list::const_iterator i=blocks.begin(); i!=blocks.end(); ++i) { - const set &tracks=(*i)->get_tracks(); + const set &tracks = (*i)->get_tracks(); if(tracks.count(const_cast(&t))) return **i; } @@ -69,19 +69,31 @@ Block &TrafficManager::get_block_by_track(const Track &t) const throw InvalidParameterValue("Unknown track"); } +Train &TrafficManager::get_train_by_locomotive(const Locomotive &loco) const +{ + for(list::const_iterator i=trains.begin(); i!=trains.end(); ++i) + if(&(*i)->get_locomotive()==&loco) + return **i; + + throw InvalidParameterValue("Unknown locomotive"); +} + void TrafficManager::add_train(Train *t) { if(find(trains.begin(), trains.end(), t)==trains.end()) + { trains.push_back(t); + signal_train_added.emit(*t); + } } void TrafficManager::tick() { - Time::TimeStamp t=Time::now(); + Time::TimeStamp t = Time::now(); Time::TimeDelta dt; if(last_tick) - dt=t-last_tick; - last_tick=t; + dt = t-last_tick; + last_tick = t; for(list::iterator i=trains.begin(); i!=trains.end(); ++i) (*i)->tick(t, dt); @@ -93,7 +105,7 @@ void TrafficManager::save(const string &fn) const DataFile::Writer writer(out); for(list::const_iterator i=trains.begin(); i!=trains.end(); ++i) { - const Locomotive &loco=(*i)->get_locomotive(); + const Locomotive &loco = (*i)->get_locomotive(); DataFile::Statement st("train"); st.append(loco.get_type().get_article_number()); st.append(loco.get_address()); @@ -115,8 +127,8 @@ TrafficManager::Loader::Loader(TrafficManager &tm): void TrafficManager::Loader::train(unsigned art_nr, unsigned addr) { - Locomotive *loco=new Locomotive(obj.layout.get_catalogue().get_locomotive(art_nr), obj.control, addr); - Train *trn=new Train(obj, *loco); + Locomotive *loco = new Locomotive(obj.layout.get_catalogue().get_locomotive(art_nr), obj.control, addr); + Train *trn = new Train(obj, *loco); load_sub(*trn); }