void quantized_speed();
void router();
void timetable();
- void vehicle(ArticleNumber);
+ void vehicle(const std::string &);
};
sigc::signal<void, const std::string &> signal_name_changed;
sigc::signal<void, unsigned, bool> signal_function_changed;
sigc::signal<void, TrainAI &, const TrainAI::Message &> signal_ai_event;
sigc::signal<void, Block &> signal_advanced;
+ sigc::signal<void, Block &> signal_rear_advanced;
sigc::signal<void, unsigned, Vehicle &> signal_vehicle_added;
sigc::signal<void, unsigned, Vehicle &> signal_vehicle_removed;
bool is_placed() const { return !allocator.empty(); }
void stop_at(Block *);
bool is_block_critical(const Block &) const;
- BlockIter get_first_noncritical_block() const;
+ BlockIter get_last_critical_block() const;
+private:
+ BlockIter check_critical_blocks(const Block *) const;
+public:
void refresh_blocks_from(Block &);
const BlockAllocator &get_block_allocator() const { return allocator; }
float get_reserved_distance() const;
void control_changed(const Controller::Control &);
void loco_speed_event(unsigned, unsigned, bool);
void loco_func_event(unsigned, unsigned, bool);
- void sensor_state_changed(Sensor &, Sensor::State);
+ void advanced(Block &, Sensor *);
void halt_event(bool);
void block_reserved(const Block &, const Train *);
float get_reserved_distance_until(const Block *) const;