+public:
+ sigc::signal<void, const std::string &> signal_name_changed;
+
+ Train(TrafficManager &, Locomotive &);
+ void set_name(const std::string &);
+ void set_speed(unsigned);
+ const std::string &get_name() const { return name; }
+ Locomotive &get_locomotive() const { return loco; }
+ void place(Block *, unsigned);
+ bool free_block(Block *);
+ void tick();
+private:
+ void sensor_event(bool, Sensor *);