X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Frouteselect.cpp;h=ae3dd8340949304b22c4a08bf3ba313307a153b9;hb=eb9c7f5200da4f3f31b41233be8cee397cb6abb9;hp=47259e3ba4b6b27e745743beb0411aab1c1161ba;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/engineer/routeselect.cpp b/source/engineer/routeselect.cpp index 47259e3..ae3dd83 100644 --- a/source/engineer/routeselect.cpp +++ b/source/engineer/routeselect.cpp @@ -1,6 +1,7 @@ #include #include "engineer.h" #include "libr2c2/route.h" +#include "libr2c2/trainrouter.h" #include "routeselect.h" using namespace std; @@ -21,13 +22,18 @@ RouteSelect::RouteSelect(Engineer &e, Train &t): drp_route->set_geometry(GLtk::Geometry(10, geom.h-50, geom.w-20, 20)); drp_route->append("(none)"); drp_route->set_selected_index(0); - const set &routes = engineer.get_layout().get_routes(); + + const Route *current_route = 0; + if(TrainRouter *router = train.get_ai_of_type()) + current_route = router->get_route(); + + const set &routes = engineer.get_layout().get_all(); unsigned n = 1; for(set::const_iterator i=routes.begin(); i!=routes.end(); ++i) if(!(*i)->is_temporary()) { drp_route->append((*i)->get_name()); - if(*i==train.get_route()) + if(*i==current_route) drp_route->set_selected_index(n); ++n; } @@ -37,7 +43,7 @@ void RouteSelect::on_ok_clicked() { if(drp_route->get_selected_index()>0) { - const set &routes = engineer.get_layout().get_routes(); + const set &routes = engineer.get_layout().get_all(); set::const_iterator i = routes.begin(); unsigned n = drp_route->get_selected_index()-1; while(i!=routes.end()) @@ -50,10 +56,9 @@ void RouteSelect::on_ok_clicked() } ++i; } - - if(!train.set_route(*i)) - engineer.set_status("Could not set route"); + + train.ai_message(TrainAI::Message("set-route", *i)); } else - train.set_route(0); + train.ai_message(TrainAI::Message("clear-route")); }