]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/tracktype.cpp
Measure and display train speeds
[r2c2.git] / source / libmarklin / tracktype.cpp
index 70d031699ff71ed3fcca68b28b2b254a45f064f4..cd832eb1997140e95c9e68eca7910c4d1c90dc6c 100644 (file)
@@ -10,15 +10,21 @@ TrackType::TrackType(unsigned a):
 { }
 
 float TrackType::get_total_length() const
+{
+       return get_route_length(-1);
+}
+
+float TrackType::get_route_length(int r) const
 {
        float len=0;
        for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
-       {
-               float l=i->length;
-               if(i->radius)
-                       l*=i->radius;
-               len+=l;
-       }
+               if(r<0 || i->route==static_cast<unsigned>(r))
+               {
+                       float l=i->length;
+                       if(i->radius)
+                               l*=abs(i->radius);
+                       len+=l;
+               }
        return len;
 }