signal_route_changed.emit(get_route());
}
-void Train::go_to(const Track &to)
+void Train::go_to(Track &to)
{
for(list<BlockRef>::const_iterator i=cur_blocks.begin(); i!=cur_blocks.end(); ++i)
- if(i->block->get_tracks().count(const_cast<Track *>(&to)))
+ if(i->block->get_tracks().count(&to))
{
signal_arrived.emit();
set_route(0);
unsigned ep = track->get_endpoint_by_link(from);
- set<const Track *> tracks;
+ set<Track *> tracks;
for(list<RouteRef>::iterator i=routes.begin(); i!=routes.end(); ++i)
tracks.insert(i->route->get_tracks().begin(), i->route->get_tracks().end());
Route *diversion = 0;
// Check if we've reached the next route
if(routes.size()>1)
{
- const set<const Track *> &rtracks = (++routes.begin())->route->get_tracks();
+ const set<Track *> &rtracks = (++routes.begin())->route->get_tracks();
for(list<BlockRef>::iterator j=rsv_blocks.begin(); j!=i; ++j)
if(rtracks.count(j->block->get_endpoints()[j->entry].track))
{
i->entry = i->block->traverse(i->entry);
}
-bool Train::advance_route(list<RouteRef>::iterator &iter, const Track &track)
+bool Train::advance_route(list<RouteRef>::iterator &iter, Track &track)
{
while(iter!=routes.end() && !iter->route->get_tracks().count(&track))
++iter;
lead->set_temporary(true);
}
- set<const Track *> tracks;
+ set<Track *> tracks;
for(list<BlockRef>::iterator i=cur_blocks.begin(); i!=rsv_blocks.end(); )
{
const set<Track *> &btracks = i->block->get_tracks();
return lead;
}
-bool Train::is_valid_diversion(const Route &diversion, const Track &from, unsigned from_ep)
+bool Train::is_valid_diversion(const Route &diversion, Track &from, unsigned from_ep)
{
float diversion_len = 0;
- const Track *track = &from;
+ Track *track = &from;
unsigned ep = from_ep;
while(diversion.get_tracks().count(track))
{
path = diversion.get_turnout(track->get_turnout_id());
diversion_len += track->get_type().get_path_length(path);
- const Track *next = track->get_link(track->traverse(ep, path));
+ Track *next = track->get_link(track->traverse(ep, path));
ep = next->get_endpoint_by_link(*track);
track = next;
if(!advance_route(route, from))
return false;
- set<const Track *> visited;
+ set<Track *> visited;
float route_len = 0;
track = &from;
ep = from_ep;
return false;
visited.insert(track);
- const Track *next = track->get_link(track->traverse(ep, path));
+ Track *next = track->get_link(track->traverse(ep, path));
ep = next->get_endpoint_by_link(*track);
track = next;