]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.h
Add a timetable command to travel past a turnout
[r2c2.git] / source / libr2c2 / train.h
index 99575bf541912fe679bd2c0a6bd66265f5eb4f48..48ee867a597c7c22e56045dc88df27a7b29bf88c 100644 (file)
@@ -22,6 +22,7 @@ class Route;
 class Timetable;
 class Vehicle;
 class VehicleType;
+class Zone;
 
 class Train: public sigc::trackable
 {
@@ -49,6 +50,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;
 
@@ -79,6 +81,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;
@@ -118,6 +121,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 &);
@@ -140,6 +144,7 @@ public:
 
        bool set_route(const Route *);
        bool go_to(Track &);
+       bool go_to(const Zone &);
        bool divert(Track &);
        const Route *get_route() const;
        void place(Block &, unsigned);