};
sigc::signal<void, Block &, Sensor *> signal_advanced;
+ sigc::signal<void, Block &> signal_rear_advanced;
private:
struct BlockMatch;
const Block *stop_at_block;
bool reserving;
bool advancing;
+ bool reserve_pending;
public:
BlockAllocator(Train &);
bool has_block(const Block &) const;
bool is_block_current(const Block &) const;
+ void tick();
+
private:
void reserve_more();
bool reserve_block(const BlockIter &);
void block_reserved(Block &, const Train *);
void sensor_state_changed(Sensor &, Sensor::State);
void update_next_sensor(Sensor *);
+ void halt_event(bool);
public:
void save(std::list<Msp::DataFile::Statement> &) const;