]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/routeselect.cpp
Return null from Route::find if a route can't be found
[r2c2.git] / source / engineer / routeselect.cpp
index 8b526aeab75b80fdb42613c0ce90346c0cea2dab..cd1e7042e846b730ca180b71a96efe4ff21e5f29 100644 (file)
@@ -32,12 +32,14 @@ RouteSelect::RouteSelect(Engineer &e, const GLtk::Resources &r, Train &t):
        drp_route->set_selected_index(0);
        const set<Route *> &routes = engineer.get_layout().get_routes();
        unsigned n = 1;
-       for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i, ++n)
-       {
-               drp_route->append((*i)->get_name());
-               if(*i==train.get_route())
-                       drp_route->set_selected_index(n);
-       }
+       for(set<Route *>::const_iterator i=routes.begin(); i!=routes.end(); ++i)
+               if(!(*i)->is_temporary())
+               {
+                       drp_route->append((*i)->get_name());
+                       if(*i==train.get_route())
+                               drp_route->set_selected_index(n);
+                       ++n;
+               }
 }
 
 void RouteSelect::on_ok_clicked()
@@ -46,9 +48,20 @@ void RouteSelect::on_ok_clicked()
        {
                const set<Route *> &routes = engineer.get_layout().get_routes();
                set<Route *>::const_iterator i = routes.begin();
-               advance(i, drp_route->get_selected_index()-1);
+               unsigned n = drp_route->get_selected_index()-1;
+               while(i!=routes.end())
+               {
+                       if(!(*i)->is_temporary())
+                       {
+                               if(!n)
+                                       break;
+                               --n;
+                       }
+                       ++i;
+               }
                
-               train.set_route(*i);
+               if(!train.set_route(*i))
+                       engineer.set_status("Could not set route");
        }
        else
                train.set_route(0);