3 This file is part of the MSP Märklin suite
4 Copyright © 2010 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
8 #include "vehicletype.h"
15 VehicleType::VehicleType(unsigned n):
22 unsigned VehicleType::get_max_function() const
26 return (--functions.end())->first;
29 float VehicleType::get_front_axle_offset() const
31 float front = length/2;
33 front = axles.front().position;
36 const Bogie &bogie = bogies.front();
37 front = max(front, bogie.position+bogie.axles.front().position);
42 float VehicleType::get_back_axle_offset() const
44 float back = -length/2;
46 back = axles.back().position;
49 const Bogie &bogie = bogies.back();
50 back = min(back, bogie.position+bogie.axles.back().position);
56 VehicleType::Axle::Axle():
63 VehicleType::Bogie::Bogie():
69 VehicleType::Loader::Loader(VehicleType &vt):
70 DataFile::ObjectLoader<VehicleType>(vt)
72 add("axle", &Loader::axle);
73 add("bogie", &Loader::bogie);
74 add("function", &Loader::function);
75 add("height", &Loader::height);
76 add("length", &Loader::length);
77 add("locomotive", &VehicleType::locomotive);
78 add("object", &VehicleType::object);
79 add("name", &VehicleType::name);
80 add("width", &Loader::width);
83 void VehicleType::Loader::axle()
87 obj.axles.push_back(axl);
90 void VehicleType::Loader::bogie()
94 obj.bogies.push_back(bog);
97 void VehicleType::Loader::function(unsigned i, const string &f)
102 void VehicleType::Loader::height(float h)
107 void VehicleType::Loader::length(float l)
112 void VehicleType::Loader::width(float w)
118 VehicleType::Axle::Loader::Loader(Axle &a):
119 DataFile::ObjectLoader<Axle>(a)
121 add("position", &Loader::position);
122 add("powered", &Axle::powered);
123 add("wheel_diameter", &Loader::wheel_diameter);
126 void VehicleType::Axle::Loader::position(float p)
128 obj.position = p/1000;
131 void VehicleType::Axle::Loader::wheel_diameter(float d)
133 obj.wheel_dia = d/1000;
137 VehicleType::Bogie::Loader::Loader(Bogie &b):
138 DataFile::ObjectLoader<Bogie>(b)
140 add("axle", &Loader::axle);
141 add("object", &Bogie::object);
142 add("position", &Loader::position);
143 add("rotate_object", &Bogie::rotate_object);
146 void VehicleType::Bogie::Loader::axle()
150 obj.axles.push_back(axl);
153 void VehicleType::Bogie::Loader::position(float p)
155 obj.position = p/1000;
158 } // namespace Marklin