]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/track.cpp
Add a separate double_address flag to TrackType
[r2c2.git] / source / libmarklin / track.cpp
index 208d40f10cdbbdfe09e81f6457c1a29a3da1a7c8..05f9f2f717c1044b47446b73aeab0ac01f68b73b 100644 (file)
@@ -130,8 +130,10 @@ void Track::set_active_path(unsigned p)
                throw InvalidParameterValue("Invalid path");
 
        layout.get_driver().set_turnout(turnout_id, p&1);
-       if(type.get_n_paths()>2)
+       if(type.is_double_address())
                layout.get_driver().set_turnout(turnout_id+1, p&2);
+       else if(type.get_n_paths()>2)
+               active_path = (active_path&1) | (p&2);
 }
 
 int Track::get_endpoint_by_link(const Track &other) const