X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrainrouteplanner.cpp;h=fc62faaa48ab25d6478e42dc55205cc3f5c92f46;hb=f305e582aef0dceafd3b7b00bf9374bb69bdf8b0;hp=cd79a61c8f947ff64a4533396fc716ca6ff24387;hpb=f86223ef906cad5c492c95d069550f262f5b3dff;p=r2c2.git diff --git a/source/libr2c2/trainrouteplanner.cpp b/source/libr2c2/trainrouteplanner.cpp index cd79a61..fc62faa 100644 --- a/source/libr2c2/trainrouteplanner.cpp +++ b/source/libr2c2/trainrouteplanner.cpp @@ -270,9 +270,7 @@ void TrainRoutePlanner::TrainRoutingState::advance(float distance) --occupied_tracks->n_tracks; } - remaining_estimate -= (distance/info->speed)*Time::sec; - if(remaining_estimaterouter->get_metric(waypoint).get_distance_from(*iter.track(), iter.entry()); distance += track->get_type().get_path_length(path)-offset; - remaining_estimate = (distance/info->speed)*Time::sec+delay; + remaining_estimate = distance; } @@ -458,13 +456,7 @@ void TrainRoutePlanner::RoutingStep::update_estimate() { for(vector::const_iterator i=trains.begin(); i!=trains.end(); ++i) { - if(i->remaining_estimateremaining_estimate; - return; - } - - Time::TimeDelta t = time+i->remaining_estimate; + Time::TimeDelta t = time+(i->remaining_estimate/i->info->speed)*Time::sec+i->delay; if(i==trains.begin() || t>total_estimate) total_estimate = t; } @@ -475,6 +467,10 @@ bool TrainRoutePlanner::RoutingStep::is_viable() const if(total_estimate::const_iterator i=trains.begin(); i!=trains.end(); ++i) + if(i->remaining_estimate<0) + return false; + for(vector::const_iterator i=trains.begin(); i!=trains.end(); ++i) if(i->state==MOVING) return true;