*/
#include <algorithm>
+#include <msp/datafile/writer.h>
#include <msp/time/utils.h>
+#include "catalogue.h"
#include "control.h"
#include "layout.h"
+#include "locotype.h"
#include "tracktype.h"
#include "trafficmanager.h"
#include "turnout.h"
(*i)->tick(t, dt);
}
+void TrafficManager::save(const string &fn) const
+{
+ IO::BufferedFile out(fn, IO::M_WRITE);
+ DataFile::Writer writer(out);
+ for(list<Train *>::const_iterator i=trains.begin(); i!=trains.end(); ++i)
+ {
+ const Locomotive &loco=(*i)->get_locomotive();
+ DataFile::Statement st("train");
+ st.append(loco.get_type().get_article_number());
+ st.append(loco.get_address());
+ (*i)->save(st.sub);
+ writer.write(st);
+ }
+}
+
void TrafficManager::turnout_route_changed(unsigned, Turnout *)
{
}
+
+TrafficManager::Loader::Loader(TrafficManager &tm):
+ DataFile::BasicLoader<TrafficManager>(tm)
+{
+ add("train", &Loader::train);
+}
+
+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);
+ load_sub(*trn);
+}
+
} // namespace Marklin