]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainrouteplanner.h
Don't allow trains to become blocked in critical blocks
[r2c2.git] / source / libr2c2 / trainrouteplanner.h
index 0ed2e118e7bb4e5ef503769f7ef3c765848752e2..9a9978137cfeb58caa9164e66f41ab3b2ee1c5cd 100644 (file)
@@ -34,7 +34,6 @@ private:
                float speed;
                Block *first_noncritical;
                TrainRouter *router;
-               const TrackChain *destination;
                std::vector<const TrackChain *> waypoints;
                std::vector<const TrainRouteMetric *> metrics;
                bool has_duration;
@@ -78,7 +77,7 @@ private:
                TrainState state;
                Msp::Time::TimeDelta delay;
                Msp::Time::TimeDelta duration;
-               int waypoint;
+               unsigned waypoint;
                float distance_traveled;
                float remaining_estimate;
                Msp::Time::TimeDelta wait_time;
@@ -95,6 +94,7 @@ private:
                void advance(const Msp::Time::TimeDelta &);
                void advance_track(unsigned);
                void update_estimate();
+               bool is_viable() const;
        };
 
        struct RoutingStep
@@ -147,7 +147,7 @@ public:
        Result plan();
        void plan_async();
        Result check();
-       Result get_result() { return result; }
+       Result get_result() const { return result; }
        const std::list<Route *> &get_routes_for(const Train &) const;
        const std::list<TrainRouter::SequencePoint> &get_sequence_for(const Train &) const;
 private: