]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/train.cpp
Add reverse and arrival row types to Timetable
[r2c2.git] / source / libmarklin / train.cpp
index 920ae4ab37e678a64ae5c54a5b8953b545a3e61c..c3affef1fdb48dbb0fbe18ff7d9adefda12a9b70 100644 (file)
@@ -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<DataFile::Statement> &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);
 }