- Track *trk=new Track(art_no);
- try
- {
- load_sub(*trk);
- }
- catch(const Msp::Exception &)
- {
- delete trk;
- throw;
- }
- cat.tracks.insert(TrackMap::value_type(trk->get_article_number(), trk));
+void Catalogue::Loader::gauge(float g)
+{
+ obj.gauge = g/1000;
+ obj.path_profile = Profile();
+ obj.path_profile.append_point(Point(0.1*obj.gauge, 0));
+ obj.path_profile.append_point(Point(-0.1*obj.gauge, 0));
+}
+
+void Catalogue::Loader::layout()
+{
+ load_sub(obj.layout);
+}
+
+void Catalogue::Loader::locomotive(unsigned art_nr)
+{
+ RefPtr<LocoType> loco = new LocoType(art_nr);
+ load_sub(*loco);
+ obj.add_vehicle(*loco);
+ loco.release();
+}
+
+void Catalogue::Loader::rail_profile()
+{
+ load_sub(obj.rail_profile);
+}
+
+void Catalogue::Loader::scale(float n, float d)
+{
+ obj.scale = n/d;
+}
+
+void Catalogue::Loader::track(unsigned art_nr)
+{
+ RefPtr<TrackType> trk = new TrackType(art_nr);
+ load_sub(*trk);
+ obj.add_track(*trk);
+ trk.release();
+}
+
+void Catalogue::Loader::vehicle(unsigned art_nr)
+{
+ RefPtr<VehicleType> veh = new VehicleType(art_nr);
+ load_sub(*veh);
+ obj.add_vehicle(*veh);
+ veh.release();