TrainState state;
Msp::Time::TimeDelta delay;
int waypoint;
+ int blocked_by;
TrainRoutingState(TrainRoutingInfo &);
TrainRoutingState(const TrainRoutingState &);
RoutingStep();
RoutingStep(RoutingStep *);
+ bool update_states();
+ bool check_deadlocks() const;
+ int get_occupant(Track &) const;
+ int find_next_train() const;
void advance(const Msp::Time::TimeDelta &);
bool is_viable() const;
bool is_goal() const;
void plan();
private:
bool update_states(RoutingStep &);
- int find_next_train(RoutingStep &);
void add_steps(RoutingStep &, unsigned);
void add_waiting_step(RoutingStep &, unsigned);
void add_steps(RoutingStep &, TrainRoutingState &train);