#define LIBR2C2_CATALOGUE_H_
#include <map>
-#include <msp/datafile/objectloader.h>
+#include <msp/datafile/collection.h>
#include "articlenumber.h"
#include "layout.h"
#include "trackappearance.h"
class ObjectType;
-class Catalogue
+class Catalogue: public Msp::DataFile::Collection
{
public:
- class Loader: public Msp::DataFile::ObjectLoader<Catalogue>
+ class Loader: public Msp::DataFile::Collection::Loader
{
+ private:
+ Catalogue &cat;
+
public:
Loader(Catalogue &);
private:
- void gauge(float);
void layout();
void scale(float, float);
- void signal(ArticleNumber);
- void terrain(ArticleNumber);
- void track(ArticleNumber);
- void track_appearance();
- void vehicle(ArticleNumber);
};
- typedef std::map<ArticleNumber, ObjectType *> ObjectMap;
-
- sigc::signal<void, const ObjectType &> signal_object_added;
-
private:
float scale;
- float gauge;
- TrackAppearance appearance;
- ObjectMap objects;
Layout layout;
public:
Catalogue();
- ~Catalogue();
float get_scale() const { return scale; }
- float get_gauge() const { return gauge; }
-
- void add(ObjectType &);
- const ObjectType &get(const ArticleNumber &) const;
- const ObjectMap &get_all() const { return objects; }
-
- template<typename T>
- const T &get(const ArticleNumber &an) const
- { return dynamic_cast<const T &>(get(an)); }
-
Layout &get_layout() { return layout; }
};