]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainrouteplanner.h
Follow the same path until another is significantly better
[r2c2.git] / source / libr2c2 / trainrouteplanner.h
index 3076c3978efa5ed0b27edae5cec7b4130e72afa7..32c9dadc3494671dcbe805c6fcf1ff4bee5b5247 100644 (file)
@@ -31,6 +31,7 @@ private:
        struct TrainRoutingInfo
        {
                Train *train;
+               float length;
                float speed;
                Block *first_noncritical;
                TrainRouter *router;
@@ -81,6 +82,7 @@ private:
                float distance_traveled;
                float remaining_estimate;
                Msp::Time::TimeDelta wait_time;
+               Msp::Time::TimeDelta estimated_wait;
                int blocked_by;
 
                TrainRoutingState(TrainRoutingInfo &);
@@ -88,6 +90,7 @@ private:
                ~TrainRoutingState();
 
                Msp::Time::TimeDelta get_time_to_next_track() const;
+               Msp::Time::TimeDelta get_time_to_pass(Track &) const;
                bool is_occupying(Track &) const;
                bool check_arrival();
                void advance(float);
@@ -100,8 +103,8 @@ private:
        struct RoutingStep
        {
                Msp::Time::TimeDelta time;
-               Msp::Time::TimeDelta penalty;
                Msp::Time::TimeDelta cost_estimate;
+               bool preferred;
                std::vector<TrainRoutingState> trains;
                const RoutingStep *prev;
 
@@ -138,6 +141,7 @@ private:
        std::list<RoutingStep> steps;
        std::list<RoutingStep> queue;
        const RoutingStep *goal;
+       Msp::Time::TimeDelta path_switch_bias;
        Msp::Time::TimeDelta timeout;
        Result result;
        PlanningThread *thread;