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))));
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.
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();