From: Mikko Rasa Date: Tue, 3 Feb 2015 22:37:24 +0000 (+0200) Subject: Eliminate the one step delay in adding tracks to routes X-Git-Url: http://git.tdb.fi/?p=r2c2.git;a=commitdiff_plain;h=997e14793d8e58d3cb14a495970b36b1e0cad39b Eliminate the one step delay in adding tracks to routes It is no longer necessary now that we inspect linked tracks to detect loops. Removing it makes the logic easier to understand. --- diff --git a/source/libr2c2/trainrouteplanner.cpp b/source/libr2c2/trainrouteplanner.cpp index b4f01ab..30d9f5e 100644 --- a/source/libr2c2/trainrouteplanner.cpp +++ b/source/libr2c2/trainrouteplanner.cpp @@ -133,7 +133,7 @@ void TrainRoutePlanner::finalize_plan() { i->routes.clear(); i->sequence.clear(); - for(unsigned j=0; j<3; ++j) + for(unsigned j=0; j<2; ++j) i->track_history[j] = 0; } @@ -168,16 +168,13 @@ void TrainRoutePlanner::finalize_plan() route = new Route(j->info->train->get_layout()); route->set_name("Router"); route->set_temporary(true); - for(unsigned k=2; k>0; --k) - if(history[k]) - route->add_track(*history[k]); + for(unsigned k=0; (k<2 && history[k]); ++k) + route->add_track(*history[k]); j->info->routes.push_front(route); } - if(history[0]) - route->add_track(*history[0]); - for(unsigned k=2; k>0; --k) - history[k] = history[k-1]; + route->add_track(*j->track.track()); + history[1] = history[0]; history[0] = j->track.track(); bool waitable = j->track.endpoint().paths!=j->track->get_type().get_paths(); diff --git a/source/libr2c2/trainrouteplanner.h b/source/libr2c2/trainrouteplanner.h index 54ecadb..153eda0 100644 --- a/source/libr2c2/trainrouteplanner.h +++ b/source/libr2c2/trainrouteplanner.h @@ -34,7 +34,7 @@ private: float speed; TrainRouter *router; std::list routes; - Track *track_history[3]; + Track *track_history[2]; std::list sequence; TrainRoutingInfo(Train &);