]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.h
Move speed quantization into a separate class
[r2c2.git] / source / libr2c2 / train.h
index 330eadd32e93f6f504963b8429eea4c1d8803334..b72fbf635c1d613c8e7f4aab07333dc4fb29eed3 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of R²C²
-Copyright © 2006-2010  Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2011  Mikkosoft Productions, Mikko Rasa
 Distributed under the GPL
 */
 
@@ -19,6 +19,7 @@ namespace R2C2 {
 
 class ArticleNumber;
 class Route;
+class SpeedQuantizer;
 class Timetable;
 class Vehicle;
 class VehicleType;
@@ -40,7 +41,7 @@ public:
                void block(unsigned);
                void block_hint(unsigned);
                void name(const std::string &);
-               void real_speed(unsigned, float, float);
+               void quantized_speed();
                void route(const std::string &);
                void timetable();
                void vehicle(ArticleNumber);
@@ -50,6 +51,7 @@ public:
        sigc::signal<void, const std::string &, float> signal_control_changed;
        sigc::signal<void, unsigned, bool> signal_function_changed;
        sigc::signal<void, const Route *> signal_route_changed;
+       sigc::signal<void, Block &> signal_advanced;
        sigc::signal<void> signal_arrived;
        sigc::signal<void, const std::string &> signal_status_changed;
 
@@ -62,15 +64,6 @@ private:
                RouteRef(const Route *, unsigned = 0);
        };
 
-       struct RealSpeed
-       {
-               float speed;
-               float weight;
-
-               RealSpeed();
-               void add(float, float);
-       };
-
        typedef std::list<BlockIter> BlockList;
 
        Layout &layout;
@@ -80,6 +73,7 @@ private:
        std::string name;
        int priority;
        const Train *yielding_to;
+       const Train *preceding_train;
        std::vector<Vehicle *> vehicles;
        BlockList blocks;
        BlockList::iterator cur_blocks_end;
@@ -102,7 +96,7 @@ private:
        Msp::Time::TimeStamp last_entry_time;
        float travel_dist;
        bool pure_speed;
-       std::vector<RealSpeed> real_speed;
+       SpeedQuantizer *speed_quantizer;
        bool accurate_position;
        float overshoot_dist;
 
@@ -119,6 +113,7 @@ public:
        void set_priority(int);
        void yield_to(const Train &);
        int get_priority() const { return priority; }
+       const Train *get_preceding_train() const { return preceding_train; }
        Controller &get_controller() const { return *controller; }
 
        void add_vehicle(const VehicleType &);