3 This file is part of R²C²
4 Copyright © 2010 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
8 #ifndef LIBR2C2_VEHICLETYPE_H_
9 #define LIBR2C2_VEHICLETYPE_H_
11 #include <msp/datafile/objectloader.h>
12 #include "articlenumber.h"
20 class Loader: public Msp::DataFile::ObjectLoader<VehicleType>
23 std::map<std::string, unsigned> rod_tags;
26 Loader(VehicleType &);
30 void function(unsigned, const std::string &);
39 class Loader: public Msp::DataFile::ObjectLoader<Axle>
45 void wheel_diameter(float);
58 class Loader: public Msp::DataFile::ObjectLoader<Bogie>
68 std::vector<Axle> axles;
92 class Loader: public Msp::DataFile::ObjectLoader<Rod>
95 const std::map<std::string, unsigned> &tags;
99 Loader(Rod &, const std::map<std::string, unsigned> &);
100 const std::string &get_tag() const { return tag; }
102 void connect(const std::string &, float, float, float, float);
105 void pivot_axle(unsigned);
106 void pivot_bogie_axle(unsigned, unsigned);
107 void pivot_rod(const std::string &);
108 void position(float, float, float);
109 void set_tag(const std::string &);
113 unsigned pivot_index;
114 unsigned pivot_index2;
119 Point connect_offset;
127 ArticleNumber art_nr;
130 std::map<unsigned, std::string> functions;
134 std::vector<Axle> axles;
135 std::vector<Bogie> bogies;
136 std::vector<Rod> rods;
140 VehicleType(const ArticleNumber &);
142 const ArticleNumber &get_article_number() const { return art_nr; }
143 const std::string &get_name() const { return name; }
144 bool is_locomotive() const { return locomotive; }
145 unsigned get_max_function() const;
146 const std::map<unsigned, std::string> &get_functions() const { return functions; }
147 float get_length() const { return length; }
148 float get_width() const { return width; }
149 float get_height() const { return height; }
150 const std::vector<Axle> &get_axles() const { return axles; }
151 const std::vector<Bogie> &get_bogies() const { return bogies; }
152 const std::vector<Rod> &get_rods() const { return rods; }
153 float get_front_axle_offset() const;
154 float get_back_axle_offset() const;
155 const std::string &get_object() const { return object; }