X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fengineer.cpp;h=da95505a1c2956191ab94086ddde7c6e54338a12;hb=d84f187ca34a6ab2f8c37d85fa13d5c113714344;hp=36412cfeb017f857efd354c30e8e8e85c1f33fcd;hpb=32cf18ff4306b36f2ce59d41056f888638a85578;p=r2c2.git diff --git a/source/engineer/engineer.cpp b/source/engineer/engineer.cpp index 36412cf..da95505 100644 --- a/source/engineer/engineer.cpp +++ b/source/engineer/engineer.cpp @@ -20,11 +20,13 @@ #include "libr2c2/driver.h" #include "libr2c2/trackcircuit.h" #include "libr2c2/tracktype.h" +#include "libr2c2/zone.h" #include "3d/allocation.h" #include "3d/path.h" #include "3d/track.h" #include "3d/trackcircuit.h" #include "3d/vehicle.h" +#include "departuresdialog.h" #include "dynamicdialog.h" #include "engineer.h" #include "mainwindow.h" @@ -170,7 +172,7 @@ void Engineer::tick() process_new_train(**i); new_trains.clear(); - layout.tick(); + layout.tick(options.sim_speed); layout_3d.tick(); event_disp.tick(Time::zero); @@ -228,12 +230,23 @@ void Engineer::button_press(unsigned btn) set_status(format("Turnout %d", track->get_turnout_address())); } } - if(unsigned saddr = track->get_sensor_address()) + else if(unsigned saddr = track->get_sensor_address()) { if(options.simulate) layout.get_driver().set_sensor(saddr, !layout.get_driver().get_sensor(saddr)); set_status(format("Sensor %d", saddr)); } + else + { + const set &zones = layout.get_all(); + for(set::const_iterator i=zones.begin(); i!=zones.end(); ++i) + if((*i)->has_track(*track)) + { + DeparturesDialog *dlg = new DeparturesDialog(layout, (*i)->get_group()); + root->add(*dlg); + break; + } + } } else if(Vehicle *veh = dynamic_cast(obj)) {