]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/train.h
Don't send redundant loco commands
[r2c2.git] / source / libmarklin / train.h
index a89dc93c6addca56ff07ab23b0bd3b10cca6e404..f9dba5dfbabb68339fd71ddc3fd4a0fd353ff816 100644 (file)
@@ -17,6 +17,7 @@ namespace Marklin {
 
 class LocoType;
 class Route;
+class Vehicle;
 
 class Train: public sigc::trackable
 {
@@ -50,7 +51,8 @@ private:
                Block *block;
                unsigned entry;
 
-               BlockRef(Block *s, unsigned e): block(s), entry(e) { }
+               BlockRef(Block *, unsigned);
+               BlockRef next() const;
        };
 
        struct RealSpeed
@@ -66,6 +68,7 @@ private:
        const LocoType &loco_type;
        unsigned address;
        std::string name;
+       std::vector<Vehicle *> vehicles;
        std::list<BlockRef> cur_blocks;
        std::list<BlockRef> rsv_blocks;
        Block *pending_block;
@@ -75,6 +78,7 @@ private:
        Msp::Time::TimeStamp stop_timeout;
        unsigned functions;
        const Route *route;
+       const Route *next_route;
        bool end_of_route;
        std::string status;
 
@@ -84,11 +88,6 @@ private:
        bool pure_speed;
        std::vector<RealSpeed> real_speed;
 
-       Track *cur_track;
-       unsigned cur_track_ep;
-       float offset;
-       Point pos;
-
 public:
        Train(Layout &, const LocoType &, unsigned);
        ~Train();
@@ -98,6 +97,9 @@ public:
        void set_name(const std::string &);
        const std::string &get_name() const { return name; }
 
+       Vehicle &get_vehicle(unsigned);
+       const Vehicle &get_vehicle(unsigned) const;
+
        void set_speed(unsigned);
        void set_reverse(bool);
        void set_function(unsigned, bool);
@@ -116,7 +118,6 @@ public:
        int get_entry_to_block(Block &) const;
 
        const std::string &get_status() const { return status; }
-       const Point &get_position() const { return pos; }
 
        void tick(const Msp::Time::TimeStamp &, const Msp::Time::TimeDelta &);