+ float scale;
+ float gauge;
+ Profile rail_profile;
+ Profile ballast_profile;
+ Profile path_profile;
+ std::map<unsigned, TrackType *> tracks;
+ std::map<unsigned, VehicleType *> vehicles;
+ Layout layout;
+
+public:
+ Catalogue();
+ ~Catalogue();
+
+ float get_scale() const { return scale; }
+ float get_gauge() const { return gauge; }
+ 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; }
+
+ void add_vehicle(VehicleType &);
+ const VehicleType &get_vehicle(unsigned) const;
+ const LocoType &get_locomotive(unsigned) const;
+ const std::map<unsigned, VehicleType *> &get_vehicles() const { return vehicles; }
+
+ Layout &get_layout() { return layout; }