]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/blockallocator.cpp
Export properly formatted track statements from shoppinglist
[r2c2.git] / source / libr2c2 / blockallocator.cpp
index 2c92ddc647a5178672200f3cb49ffc5b62f18715..ed32193f3e1d116b65b557d9bb8619f82dc0bf41 100644 (file)
@@ -42,7 +42,7 @@ BlockAllocator::BlockAllocator(Train &t):
 
        const set<Track *> &tracks = layout.get_all<Track>();
        for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
-               if((*i)->get_turnout_address())
+               if((*i)->get_type().is_turnout())
                {
                        (*i)->signal_path_changing.connect(sigc::hide(sigc::bind(sigc::mem_fun(this, &BlockAllocator::turnout_path_changing), sigc::ref(**i))));
                        (*i)->signal_path_changed.connect(sigc::hide(sigc::bind(sigc::mem_fun(this, &BlockAllocator::turnout_path_changed), sigc::ref(**i))));
@@ -339,6 +339,9 @@ void BlockAllocator::advance_front(const Block *block, bool inclusive)
        else
                end = blocks.end();
 
+       if(end==blocks.end() && blocks.back().block()==pending_block)
+               --end;
+
        SetFlag setf(advancing);
        BlockList::iterator i = cur_blocks_end;
        // Update cur_blocks_end first to keep things consistent.
@@ -502,7 +505,7 @@ void BlockAllocator::sensor_state_changed(Sensor &sensor, Sensor::State state)
                                reserve_more();
                }
                else if(!is_block_current(*block))
-                       train.get_layout().emergency("Sensor for "+train.get_name()+" triggered out of order");
+                       train.get_layout().emergency(block, "Sensor for "+train.get_name()+" triggered out of order");
        }
        else if(state==Sensor::INACTIVE)
                advance_back();