]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainrouteplanner.h
Refactor TrainRoutePlanner so that the same object may be used again
[r2c2.git] / source / libr2c2 / trainrouteplanner.h
index 33e6ef5f1b4c5c7f22e23432eb3ed87932191e0c..c6ca741555282c767bf7247e76c6fa49407aabb3 100644 (file)
@@ -18,6 +18,17 @@ class TrainRoutePlanner
 {
 private:
        struct TrainRoutingState;
+       struct TrainRoutingInfo;
+
+       struct SequencingInfo
+       {
+               Track *track;
+               TrainRoutingInfo *preceding;
+               unsigned sequence_in;
+               unsigned sequence_out;
+
+               SequencingInfo(Track *, unsigned);
+       };
 
        struct TrainRoutingInfo
        {
@@ -26,7 +37,7 @@ private:
                TrainRouter *router;
                std::list<Route *> routes;
                Track *track_history[3];
-               std::list<const TrainRoutingState *> waits;
+               std::list<SequencingInfo> sequence;
 
                TrainRoutingInfo(Train &);
        };
@@ -63,7 +74,9 @@ private:
                TrainState state;
                Msp::Time::TimeDelta delay;
                int waypoint;
+               float distance_traveled;
                float remaining_estimate;
+               Msp::Time::TimeDelta wait_time;
                int blocked_by;
 
                TrainRoutingState(TrainRoutingInfo &);
@@ -82,7 +95,7 @@ private:
        struct RoutingStep
        {
                Msp::Time::TimeDelta time;
-               Msp::Time::TimeDelta total_estimate;
+               Msp::Time::TimeDelta cost_estimate;
                std::vector<TrainRoutingState> trains;
                const RoutingStep *prev;