for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
if(unsigned tid=(*i)->get_turnout_id())
- new Turnout(control, tid, (*i)->get_type().get_n_routes()>=3);
+ new Turnout(control, tid, (*i)->get_type().get_n_paths()>=3);
if(unsigned sid=(*i)->get_sensor_id())
- new Sensor(control, sid);
+ if(!control.get_sensors().count(sid))
+ new Sensor(control, sid);
if(used_tracks.count(*i)==0)
{
throw InvalidParameterValue("Unknown track");
}
+Train &TrafficManager::get_train_by_locomotive(const Locomotive &loco) const
+{
+ for(list<Train *>::const_iterator i=trains.begin(); i!=trains.end(); ++i)
+ if(&(*i)->get_locomotive()==&loco)
+ return **i;
+
+ throw InvalidParameterValue("Unknown locomotive");
+}
+
void TrafficManager::add_train(Train *t)
{
if(find(trains.begin(), trains.end(), t)==trains.end())
+ {
trains.push_back(t);
+ signal_train_added.emit(*t);
+ }
}
void TrafficManager::tick()
}
}
-void TrafficManager::turnout_route_changed(unsigned, Turnout *)
+void TrafficManager::turnout_path_changed(unsigned, Turnout *)
{
}