layout.signal_block_reserved.connect(sigc::mem_fun(this, &Train::block_reserved));
layout.get_driver().signal_sensor.connect(sigc::mem_fun(this, &Train::sensor_event));
layout.get_driver().signal_turnout.connect(sigc::mem_fun(this, &Train::turnout_event));
+
+ control->signal_control_changed.connect(signal_control_changed);
}
Train::~Train()
void Train::set_control(const string &n, float v)
{
control->set_control(n, v);
- signal_control_changed.emit(n, control->get_control(n).value);
}
void Train::set_active(bool a)
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<BlockRef>::const_iterator i=cur_blocks.begin(); (!ok && i!=cur_blocks.end()); ++i)
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)
add("real_speed", &Loader::real_speed);
add("route", &Loader::route);
add("timetable", &Loader::timetable);
+ add("vehicle", &Loader::vehicle);
}
void Train::Loader::block(unsigned id)
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