ais.erase(i);
}
-TrainAI *Train::get_tagged_ai(const string &tag) const
-{
- for(list<TrainAI *>::const_iterator i=ais.begin(); i!=ais.end(); ++i)
- if((*i)->get_tag()==tag)
- return *i;
-
- return 0;
-}
-
void Train::ai_message(const TrainAI::Message &msg)
{
for(list<TrainAI *>::iterator i=ais.begin(); i!=ais.end(); ++i)
else if(&*start==pending_block)
{
TrackIter track = start.track_iter();
- if(!(track.endpoint().paths&(1<<track->get_active_path())))
+ if(!track.endpoint().has_path(track->get_active_path()))
return;
}
{
const TrackType::Endpoint &entry_ep = track.endpoint();
unsigned path = track->get_active_path();
- if(!(entry_ep.paths&(1<<path)))
+ if(!entry_ep.has_path(path))
{
const TrackType::Endpoint &exit_ep = track.reverse().endpoint();
- if(unsigned mask = entry_ep.paths&exit_ep.paths)
+ if(entry_ep.has_common_paths(exit_ep))
{
+ unsigned mask = entry_ep.paths&exit_ep.paths;
for(path=0; mask>1; ++path, mask>>=1) ;
track->set_active_path(path);