X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Flayout.cpp;h=0025ec3b5b3adcd305ebd08ec8b8a9c44b8622ac;hb=2220ba2f11705ea9a4e480603d43ab7ed4cf5a89;hp=c23ad38fb1d39969c2463ebab919ea165a3b0895;hpb=e37f7bfbbee86eef3b1f6e338a21239905911608;p=r2c2.git diff --git a/source/libr2c2/layout.cpp b/source/libr2c2/layout.cpp index c23ad38..0025ec3 100644 --- a/source/libr2c2/layout.cpp +++ b/source/libr2c2/layout.cpp @@ -13,6 +13,7 @@ #include "route.h" #include "signal.h" #include "signaltype.h" +#include "terrain.h" #include "track.h" #include "trackcircuit.h" #include "tracktype.h" @@ -135,6 +136,12 @@ const set &Layout::get_all() const return objects.get(); } +template<> +const set &Layout::get_all() const +{ + return objects.get(); +} + template<> const set &Layout::get_all() const { @@ -414,6 +421,15 @@ void Layout::save(const string &fn) const writer.write(st); } + const set &terrains = objects.get(); + for(set::const_iterator i=terrains.begin(); i!=terrains.end(); ++i) + { + DataFile::Statement st("terrain"); + st.append((*i)->get_type().get_article_number()); + (*i)->save(st.sub); + writer.write(st); + } + const set &gates = objects.get(); for(set::const_iterator i=gates.begin(); i!=gates.end(); ++i) { @@ -534,6 +550,7 @@ Layout::Loader::Loader(Layout &l): add("beamgate", &Loader::beamgate); add("route", &Loader::route); add("signal", &Loader::signal); + add("terrain", &Loader::terrain); add("track", &Loader::track); add("train", &Loader::train); add("turnout", &Loader::turnout); @@ -558,6 +575,12 @@ void Layout::Loader::signal(ArticleNumber art_nr) load_sub(*sig); } +void Layout::Loader::terrain(ArticleNumber art_nr) +{ + Terrain *ter = new Terrain(obj, obj.catalogue.get(art_nr)); + load_sub(*ter); +} + void Layout::Loader::track(ArticleNumber art_nr) { Track *trk = new Track(obj, obj.catalogue.get(art_nr));