X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrack.cpp;h=fc365862301c9acfa0734ccd3b510b7a5c6cbe77;hb=9b68c21ebf8ce26d92246ecd4a392d2908b511f7;hp=250888dd6a8f5aa23f331a1bcf39830c789d3af7;hpb=47bff0c8939de3ae20b5ced1ee2f6a264397dcee;p=r2c2.git diff --git a/source/libmarklin/track.cpp b/source/libmarklin/track.cpp index 250888d..fc36586 100644 --- a/source/libmarklin/track.cpp +++ b/source/libmarklin/track.cpp @@ -31,6 +31,8 @@ Track::Track(Layout &l, const TrackType &t): if(layout.has_driver()) layout.get_driver().signal_turnout.connect(sigc::mem_fun(this, &Track::turnout_event)); + + for(unsigned paths = type.get_paths(); !(paths&1); ++active_path, paths>>=1) ; } Track::~Track() @@ -102,7 +104,11 @@ void Track::set_turnout_id(unsigned i) turnout_id = i; layout.create_blocks(*this); if(layout.has_driver() && turnout_id) + { layout.get_driver().add_turnout(turnout_id); + if(type.is_double_address()) + layout.get_driver().add_turnout(turnout_id+1); + } } void Track::set_sensor_id(unsigned i)