+ 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; }
+ const std::string &get_status() const { return status; }
+ void place(Block *, unsigned);
+ bool free_block(Block *);
+ void tick(const Msp::Time::TimeStamp &);
+private:
+ void sensor_event(bool, Sensor *);