#define LIBMARKLIN_VEHICLETYPE_H_
#include <msp/datafile/objectloader.h>
+#include "articlenumber.h"
namespace Marklin {
private:
void axle();
void bogie();
+ void function(unsigned, const std::string &);
void height(float);
void length(float);
void width(float);
float position;
float wheel_dia;
bool powered;
+ std::string object;
+
+ Axle();
};
struct Bogie
float position;
std::vector<Axle> axles;
+ std::string object;
+ bool rotate_object;
+
+ Bogie();
};
private:
- unsigned art_nr;
+ ArticleNumber art_nr;
std::string name;
+ bool locomotive;
+ std::map<unsigned, std::string> functions;
float length;
float width;
float height;
std::vector<Axle> axles;
std::vector<Bogie> bogies;
+ std::string object;
public:
- VehicleType(unsigned);
+ VehicleType(const ArticleNumber &);
- unsigned get_article_number() const { return art_nr; }
+ const ArticleNumber &get_article_number() const { return art_nr; }
const std::string &get_name() const { return name; }
+ bool is_locomotive() const { return locomotive; }
+ unsigned get_max_function() const;
+ const std::map<unsigned, std::string> &get_functions() const { return functions; }
float get_length() const { return length; }
float get_width() const { return width; }
float get_height() const { return height; }
const std::vector<Axle> &get_axles() const { return axles; }
const std::vector<Bogie> &get_bogies() const { return bogies; }
+ float get_front_axle_offset() const;
+ float get_back_axle_offset() const;
+ const std::string &get_object() const { return object; }
};
} // namespace Marklin