X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fvehicle.h;h=1f118cc579b15c76a90b9eb86c686e7f82d5c0a9;hb=ce8be590703fdc0709863f0ee9695f40b6adb200;hp=2e91962842f2d319153ea4e8a2592f9f7af2275b;hpb=3fa2b4016a4573be61f48c1dd4162c1dbc3372ba;p=r2c2.git diff --git a/source/libr2c2/vehicle.h b/source/libr2c2/vehicle.h index 2e91962..1f118cc 100644 --- a/source/libr2c2/vehicle.h +++ b/source/libr2c2/vehicle.h @@ -9,12 +9,12 @@ Distributed under the GPL #define LIBR2C2_VEHICLE_H_ #include "geometry.h" +#include "vehicletype.h" namespace R2C2 { class Layout; class Track; -class VehicleType; class Vehicle { @@ -28,6 +28,32 @@ public: BACK_BUFFER }; + struct Axle + { + const VehicleType::Axle *type; + float angle; + + Axle(const VehicleType::Axle &); + }; + + struct Bogie + { + const VehicleType::Bogie *type; + float direction; + std::vector axles; + + Bogie(const VehicleType::Bogie &); + }; + + struct Rod + { + const VehicleType::Rod *type; + Point position; + float angle; + + Rod(const VehicleType::Rod &); + }; + private: struct TrackPosition { @@ -41,14 +67,6 @@ private: TrackPoint get_point() const; }; - struct Rod - { - Point position; - float angle; - - Rod(); - }; - Layout &layout; const VehicleType &type; Vehicle *next; @@ -56,8 +74,8 @@ private: TrackPosition track_pos; Point position; float direction; - std::vector bogie_dirs; - std::vector > axle_angles; + std::vector axles; + std::vector bogies; std::vector rods; unsigned front_sensor; unsigned back_sensor; @@ -83,11 +101,10 @@ public: float get_offset() const { return track_pos.offs; } const Point &get_position() const { return position; } float get_direction() const { return direction; } - float get_axle_angle(unsigned) const; - float get_bogie_direction(unsigned) const; - float get_bogie_axle_angle(unsigned, unsigned) const; - const Point &get_rod_position(unsigned) const; - float get_rod_angle(unsigned) const; + const Axle &get_axle(unsigned) const; + const Bogie &get_bogie(unsigned) const; + const Axle &get_bogie_axle(unsigned, unsigned) const; + const Rod &get_rod(unsigned) const; private: void update_position(); void update_position_from(const Vehicle &);