X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Flayout.cpp;h=d6bd9ee909dee6f11c7016559ccdd24acbf7386a;hb=dbaa67c30705a9993d2626cec588c7320f1eef17;hp=cbe226a684c31ffcf6229fd5d1ead978530ae269;hpb=4e406ca29b1bb87a8e20324e5cf54f5b5de6afb8;p=r2c2.git diff --git a/source/libr2c2/layout.cpp b/source/libr2c2/layout.cpp index cbe226a..d6bd9ee 100644 --- a/source/libr2c2/layout.cpp +++ b/source/libr2c2/layout.cpp @@ -312,11 +312,15 @@ void Layout::save(const string &fn) const } } -void Layout::save_trains(const string &fn) const +void Layout::save_dynamic(const string &fn) const { IO::BufferedFile out(fn, IO::M_WRITE); DataFile::Writer writer(out); + for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) + if(unsigned tid = (*i)->get_turnout_id()) + writer.write((DataFile::Statement("turnout"), tid, (*i)->get_active_path())); + for(map::const_iterator i=trains.begin(); i!=trains.end(); ++i) { DataFile::Statement st("train"); @@ -351,6 +355,7 @@ Layout::Loader::Loader(Layout &l): add("route", static_cast(&Loader::route)); add("track", static_cast(&Loader::track)); add("train", static_cast(&Loader::train)); + add("turnout", &Loader::turnout); add("zone", &Loader::zone); // Deprecated aliases @@ -404,6 +409,12 @@ void Layout::Loader::train(ArticleNumber art_nr, unsigned addr, const std::strin load_sub(*trn); } +void Layout::Loader::turnout(unsigned addr, unsigned path) +{ + if(obj.driver) + obj.driver->set_turnout(addr, path); +} + void Layout::Loader::zone() { Zone *zne = new Zone(obj);