X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrain.cpp;h=c3affef1fdb48dbb0fbe18ff7d9adefda12a9b70;hb=42398f0178d499bb013ccc08f0c29f69f6f1ad2d;hp=920ae4ab37e678a64ae5c54a5b8953b545a3e61c;hpb=2571c111ec85b0d6a56ae369c83b5763b1975f93;p=r2c2.git diff --git a/source/libmarklin/train.cpp b/source/libmarklin/train.cpp index 920ae4a..c3affef 100644 --- a/source/libmarklin/train.cpp +++ b/source/libmarklin/train.cpp @@ -272,7 +272,7 @@ void Train::place(Block &block, unsigned entry) else { const Block::Endpoint &bep = block.get_endpoints()[entry]; - vehicles.front()->place(bep.track, bep.track_ep, 0, Vehicle::BACK_BUFFER); + vehicles.back()->place(bep.track, bep.track_ep, 0, Vehicle::BACK_BUFFER); } } @@ -435,7 +435,10 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) unsigned entry = bep.track_ep; bool found = false; - float dist = veh.get_offset()-veh.get_type().get_length()/2; + float dist = veh.get_offset(); + if(reverse) + dist = veh.get_track()->get_type().get_path_length(veh.get_track()->get_active_path())-dist; + dist -= veh.get_type().get_length()/2; while(1) { if(track==veh.get_track()) @@ -514,7 +517,7 @@ void Train::save(list &st) const } } -void Train::control_changed(const TrainControl &ctrl) +void Train::control_changed(const Controller::Control &ctrl) { signal_control_changed.emit(ctrl.name, ctrl.value); }