]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/trafficmanager.cpp
Major code refactoring:
[r2c2.git] / source / libmarklin / trafficmanager.cpp
index 516f64fd0b00741ea65ee2572cbec2e501d44afc..cc2089b32780fdcc210bea450265ef606b69ee55 100644 (file)
@@ -11,27 +11,19 @@ TrafficManager::TrafficManager(Control &c, Layout &l):
        control(c),
        layout(l)
 {
-       const TrackSeq &tracks=layout.get_tracks();
+       const set<Track *> &tracks=layout.get_tracks();
 
-       TrackSet used_tracks;
-       for(TrackSeq::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
+       set<Track *> used_tracks;
+       for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
        {
                if(unsigned tid=(*i)->get_turnout_id())
-               {
-                       Turnout *t=control.get_turnout(tid);
-                       if(!t)
-                               t=new Turnout(control, tid);
-                       //t->signal_route_changed.connect(sigc::mem_fun(*i, &Track::set_current_route));
-               }
+                       new Turnout(control, tid);
                if(unsigned sid=(*i)->get_sensor_id())
-               {
-                       Sensor *s=control.get_sensor(sid);
-                       if(!s)
-                               s=new Sensor(control, sid);
-               }
+                       new Sensor(control, sid);
+
                if(used_tracks.count(*i)==0)
                {
-                       Block *block=new Block(*this, *i);
+                       Block *block=new Block(*this, **i);
                        blocks.push_back(block);
                        used_tracks.insert(block->get_tracks().begin(), block->get_tracks().end());
                }
@@ -58,7 +50,7 @@ Block *TrafficManager::get_block_by_track(const Track *t) const
 {
        for(BlockSeq::const_iterator i=blocks.begin(); i!=blocks.end(); ++i)
        {
-               const TrackSet &tracks=(*i)->get_tracks();
+               const set<Track *> &tracks=(*i)->get_tracks();
                if(tracks.count(const_cast<Track *>(t)))
                        return *i;
        }