X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fvehicle.h;h=8990a5b538d68c0f144b2404db636229ec6f9f00;hb=64340dad429ba4040538fc06b6882aabdb489925;hp=1f118cc579b15c76a90b9eb86c686e7f82d5c0a9;hpb=ce8be590703fdc0709863f0ee9695f40b6adb200;p=r2c2.git diff --git a/source/libr2c2/vehicle.h b/source/libr2c2/vehicle.h index 1f118cc..8990a5b 100644 --- a/source/libr2c2/vehicle.h +++ b/source/libr2c2/vehicle.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #ifndef LIBR2C2_VEHICLE_H_ #define LIBR2C2_VEHICLE_H_ @@ -16,6 +9,14 @@ namespace R2C2 { class Layout; class Track; +class attachment_error: public std::logic_error +{ +public: + attachment_error(const std::string &w): std::logic_error(w) { } + virtual ~attachment_error() throw() { } +}; + + class Vehicle { public: @@ -48,7 +49,7 @@ public: struct Rod { const VehicleType::Rod *type; - Point position; + Vector position; float angle; Rod(const VehicleType::Rod &); @@ -72,7 +73,7 @@ private: Vehicle *next; Vehicle *prev; TrackPosition track_pos; - Point position; + Vector position; float direction; std::vector axles; std::vector bogies; @@ -99,9 +100,9 @@ public: Track *get_track() const { return track_pos.track; } unsigned get_entry() const { return track_pos.ep; } float get_offset() const { return track_pos.offs; } - const Point &get_position() const { return position; } + const Vector &get_position() const { return position; } float get_direction() const { return direction; } - const Axle &get_axle(unsigned) const; + const Axle &get_fixed_axle(unsigned) const; const Bogie &get_bogie(unsigned) const; const Axle &get_bogie_axle(unsigned, unsigned) const; const Rod &get_rod(unsigned) const; @@ -116,7 +117,7 @@ private: void update_rods(); void adjust_for_distance(TrackPosition &, TrackPosition &, float, float = 0.5) const; - TrackPoint get_point(const Point &, const Point &, float = 0.5) const; + TrackPoint get_point(const Vector &, const Vector &, float = 0.5) const; TrackPoint get_point(const TrackPosition &, float, float = 0.5) const; };