]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/signal.cpp
Activate allocator if an AI intends to move
[r2c2.git] / source / libr2c2 / signal.cpp
index 0139b1fbdaa9cf73ff6a3b25cdaff0b7f63eb984..38e11248793258641a6ef3557c247bb8406f3b09 100644 (file)
@@ -24,14 +24,14 @@ Signal::Signal(Layout &l, const SignalType &t):
        check_allocated_blocks(false),
        passing(false)
 {
-       layout.add_signal(*this);
+       layout.add(*this);
 
        layout.signal_block_reserved.connect(sigc::mem_fun(this, &Signal::block_reserved));
 }
 
 Signal::~Signal()
 {
-       layout.remove_signal(*this);
+       layout.remove(*this);
 }
 
 Signal *Signal::clone(Layout *to_layout) const
@@ -59,7 +59,7 @@ void Signal::set_position(const Vector &p)
 
 void Signal::update_location()
 {
-       const set<Track *> &tracks = layout.get_tracks();
+       const set<Track *> &tracks = layout.get_all<Track>();
        float limit = layout.get_catalogue().get_gauge()*2;
        float dist = -1;
        for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
@@ -163,8 +163,8 @@ void Signal::block_reserved(const Block &b, Train *t)
        {
                if(t)
                {
-                       int train_entry = t->get_entry_to_block(*block);
-                       if(train_entry>=0 && static_cast<unsigned>(train_entry)==entry)
+                       const BlockIter &b_iter = t->get_block_allocator().iter_for(b);
+                       if(b_iter && b_iter.entry()==entry)
                        {
                                if(train_conn)
                                        train_conn.disconnect();