]> 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 d0c879c02067ebb260d841528c05cd26eafb5649..fb0502dbfde6d7f4df131c368006b58967d027c7 100644 (file)
@@ -71,6 +71,7 @@ Engineer::Engineer(int argc, char **argv):
        DataFile::load(catalogue, "tracks.dat");
        DataFile::load(catalogue, "locos.dat");
        DataFile::load(catalogue, "wagons.dat");
+       DataFile::load(catalogue, "terrain.dat");
        DataFile::load(layout, options.layout_fn);
 
        if(layout.has_driver())
@@ -120,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;
@@ -197,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))