}
}
-void TrainRouter::tick(const Time::TimeStamp &, const Time::TimeDelta &)
+void TrainRouter::tick(const Time::TimeDelta &)
{
if(update_pending)
create_plans(train.get_layout());
return;
}
- BlockIter b_iter(&block, t->get_block_allocator().get_entry_to_block(block));
+ BlockIter b_iter = t->get_block_allocator().iter_for(block);
RouteList::iterator route = routes.begin();
if(advance_route(route, block))
void TrainRouter::train_advanced(Block &block)
{
+ BlockIter b_iter = train.get_block_allocator().iter_for(block);
+
// Check if we've reached the next route
if(routes.size()>1)
{
- unsigned entry = train.get_block_allocator().get_entry_to_block(block);
- Track &track = *block.get_endpoint(entry).track;
const Route &route = **++routes.begin();
- if(route.has_track(track))
+ if(route.has_track(*b_iter.endpoint().track))
{
routes.pop_front();
// XXX Exceptions?
if(!routes.empty())
{
- BlockIter iter(&block, train.get_block_allocator().get_entry_to_block(block));
- iter = iter.next();
- if(iter && !is_on_route(*iter))
+ b_iter = b_iter.next();
+ if(b_iter && !is_on_route(*b_iter))
arriving = true;
}
}