break;
}
- unsigned paths = lowest.track->get_type().get_endpoints()[lowest.track.entry()].paths;
+ unsigned paths = lowest.track.endpoint().paths;
for(unsigned i=0; paths>>i; ++i)
if(paths&(1<<i))
{
if(unsigned tid2 = links[j]->get_turnout_id())
{
- const TrackType::Endpoint &ep = links[j]->get_type().get_endpoints()[links[j]->get_endpoint_by_link(**i)];
+ const TrackType::Endpoint &ep = links[j]->get_type().get_endpoint(links[j]->get_endpoint_by_link(**i));
int p = get_turnout(tid2);
if(p>=0 && !(ep.paths&(1<<p)))
{
return -1;
}
+unsigned Route::get_path(Track &trk) const
+{
+ if(unsigned tid = trk.get_turnout_id())
+ {
+ map<unsigned, int>::const_iterator i = turnouts.find(tid);
+ if(i!=turnouts.end())
+ return i->second;
+ }
+ return trk.get_active_path();
+}
+
void Route::add_track(Track &trk)
{
if(tracks.count(&trk))