]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/engineer.cpp
Prefer is_turnout() when checking if a track is, in fact, a turnout
[r2c2.git] / source / engineer / engineer.cpp
index 49edd48d0d86b7cd8e4bdae246e62c72637d0188..fb0502dbfde6d7f4df131c368006b58967d027c7 100644 (file)
@@ -121,17 +121,15 @@ Engineer::Engineer(int argc, char **argv):
 
 Engineer::~Engineer()
 {
-       const map<unsigned, Train *> &trains = layout.get_trains();
-       for(map<unsigned, Train *>::const_iterator i=trains.begin(); i!=trains.end(); ++i)
-               layout.get_driver().set_loco_speed(i->first, 0);
-       layout.get_driver().flush();
-
        if(!options.simulate)
        {
                layout.save_dynamic(options.state_fn+".tmp");
                FS::rename(options.state_fn+".tmp", options.state_fn);
        }
 
+       layout.get_driver().halt(true);
+       layout.get_driver().flush();
+
        delete overlay;
        delete root_arrangement;
        delete root;
@@ -198,7 +196,7 @@ void Engineer::button_press(unsigned btn)
                Object *obj = pick_object(pointer);
                if(Track *track = dynamic_cast<Track *>(obj))
                {
-                       if(track->get_turnout_address())
+                       if(track->get_type().is_turnout())
                        {
                                Block &block = track->get_block();
                                if(block.get_train() && block.get_train()->is_block_critical(block))