X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrain.cpp;h=fad68605e7c70952faf21ac6931616a7114a7f70;hb=6968273080fa2a1cbcfc506610d5f249299611e9;hp=307b1b7da0f2903cc526b348fcdc291af3970815;hpb=d88bc162df8b34f2ca966524222880033132da0f;p=r2c2.git diff --git a/source/libmarklin/train.cpp b/source/libmarklin/train.cpp index 307b1b7..fad6860 100644 --- a/source/libmarklin/train.cpp +++ b/source/libmarklin/train.cpp @@ -336,7 +336,8 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) if(!active) set_active(true); - Track *track = vehicles[0]->get_track(); + Vehicle &vehicle = *(reverse ? vehicles.back() : vehicles.front()); + Track *track = vehicle.get_track(); bool ok = false; for(list::const_iterator i=cur_blocks.begin(); (!ok && i!=cur_blocks.end()); ++i) @@ -345,7 +346,7 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) if(ok) { float d = get_real_speed(current_speed)*(dt/Time::sec); - vehicles[0]->advance(reverse ? -d : d); + vehicle.advance(reverse ? -d : d); } } else if(end_of_route) @@ -785,6 +786,7 @@ Train::Loader::Loader(Train &t): add("real_speed", &Loader::real_speed); add("route", &Loader::route); add("timetable", &Loader::timetable); + add("vehicle", &Loader::vehicle); } void Train::Loader::block(unsigned id) @@ -838,4 +840,12 @@ void Train::Loader::timetable() load_sub(*obj.timetable); } +void Train::Loader::vehicle(unsigned n) +{ + const VehicleType &vtype = obj.layout.get_catalogue().get_vehicle(n); + Vehicle *veh = new Vehicle(obj.layout, vtype); + obj.vehicles.back()->attach_back(*veh); + obj.vehicles.push_back(veh); +} + } // namespace Marklin