]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trainroutemetric.cpp
Add an actual heuristic for wait time
[r2c2.git] / source / libr2c2 / trainroutemetric.cpp
index 469fc9494715dfea68be9517b7a71f1b783d8b89..1fc4fcea2389d917ecaa90627791801dc0ee46e2 100644 (file)
@@ -68,6 +68,22 @@ void TrainRouteMetric::chain_to(const TrainRouteMetric &metric)
                i->base_distance = metric.get_distance_from(*i->track.track(), i->track.entry());
 }
 
+float TrainRouteMetric::get_distance_from(const Track &track) const
+{
+       map<Key, Data>::const_iterator i = tracks.lower_bound(Key(&track, 0));
+       map<Key, Data>::const_iterator j = tracks.upper_bound(Key(&track, 255));
+
+       float result = -1;
+       for(; i!=j; ++i)
+       {
+               float d = i->second.distance+i->second.goal->base_distance;
+               if(result<0 || d<result)
+                       result = d;
+       }
+
+       return result;
+}
+
 float TrainRouteMetric::get_distance_from(const Track &track, unsigned exit) const
 {
        map<Key, Data>::const_iterator i = tracks.find(Key(&track, exit));