Route *lead = 0;
if(r && train.is_placed())
{
- TrackIter first = train.get_tail_block().track_iter();
- TrackIter next = train.get_head_block().next().track_iter();
+ const BlockAllocator &allocator = train.get_block_allocator();
+ TrackIter first = allocator.first().track_iter();
+ TrackIter next = allocator.last().next().track_iter();
if(!r->has_track(*next))
{
lead = Route::find(next, *r);
return;
}
- BlockIter b_iter(&block, t->get_entry_to_block(block));
+ BlockIter b_iter(&block, t->get_block_allocator().get_entry_to_block(block));
RouteList::iterator route = routes.begin();
if(advance_route(route, block))
// Check if we've reached the next route
if(routes.size()>1)
{
- unsigned entry = train.get_entry_to_block(block);
+ 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(!routes.empty())
{
- BlockIter iter(&block, train.get_entry_to_block(block));
+ BlockIter iter(&block, train.get_block_allocator().get_entry_to_block(block));
iter = iter.next();
if(iter && !is_on_route(*iter))
arriving = true;
}
set<Track *> tracks;
- for(BlockIter i=train.get_tail_block(); (i && i->get_train()==&train); i=i.next())
+ for(BlockIter i=train.get_block_allocator().first(); (i && i->get_train()==&train); i=i.next())
{
const set<Track *> &btracks = i->get_tracks();
for(set<Track *>::const_iterator j=btracks.begin(); j!=btracks.end(); ++j)