void Signal::update_attachment()
{
- attach_to_closest(layout.get_catalogue().get_gauge()*2);
+ attach_to_closest(2);
if(track)
block = track.block_iter();
if(check_allocated_blocks)
{
unsigned n_blocks = 0;
- BlockIter iter = block.next();
- while(iter && iter->get_train()==train)
+ const Block *last = train->get_block_allocator().last().block();
+ if(block.block()!=last)
{
- if(iter->get_sensor_id())
- ++n_blocks;
- iter=iter.next();
+ BlockIter iter = block.next();
+ while(iter && iter->get_train()==train && iter.block()!=last)
+ {
+ if(iter->get_sensor_address())
+ ++n_blocks;
+ iter = iter.next();
+ }
}
check_allocated_blocks = false;
{
if(&b==block.block())
passing = true;
- else if(passing && b.get_sensor_id())
+ else if(passing && b.get_sensor_address())
{
layout.get_driver().set_signal(address, type.get_indications().back().aspect);
reset();