#include <map>
#include <msp/datafile/loader.h>
+#include "articlenumber.h"
#include "layout.h"
#include "profile.h"
namespace Marklin {
-class LocoType;
class TrackType;
class VehicleType;
void ballast_profile();
void gauge(float);
void layout();
- void locomotive(unsigned);
void rail_profile();
void scale(float, float);
void track(unsigned);
+ void track(ArticleNumber);
+ void vehicle(unsigned);
+ void vehicle(ArticleNumber);
};
+ typedef std::map<ArticleNumber, TrackType *> TrackMap;
+ typedef std::map<ArticleNumber, VehicleType *> VehicleMap;
+
sigc::signal<void, const TrackType &> signal_track_added;
- sigc::signal<void, const LocoType &> signal_loco_added;
+ sigc::signal<void, const VehicleType &> signal_vehicle_added;
private:
float scale;
Profile rail_profile;
Profile ballast_profile;
Profile path_profile;
- std::map<unsigned, TrackType *> tracks;
- std::map<unsigned, LocoType *> locos;
+ TrackMap tracks;
+ VehicleMap vehicles;
Layout layout;
public:
float get_scale() const { return scale; }
float get_gauge() const { return gauge; }
+ float get_rail_elevation() const;
const Profile &get_rail_profile() const { return rail_profile; }
const Profile &get_ballast_profile() const { return ballast_profile; }
const Profile &get_path_profile() const { return path_profile; }
void add_track(TrackType &);
- const TrackType &get_track(unsigned) const;
- const std::map<unsigned, TrackType *> &get_tracks() const { return tracks; }
+ const TrackType &get_track(const ArticleNumber &) const;
+ const TrackMap &get_tracks() const { return tracks; }
- void add_locomotive(LocoType &);
- const LocoType &get_locomotive(unsigned) const;
- const std::map<unsigned, LocoType *> &get_locomotives() const { return locos; }
+ void add_vehicle(VehicleType &);
+ const VehicleType &get_vehicle(const ArticleNumber &) const;
+ const VehicleMap &get_vehicles() const { return vehicles; }
Layout &get_layout() { return layout; }
};