Loader(Layout &);
private:
virtual void finish();
+ void route();
void route(const std::string &);
void track(unsigned);
void train(unsigned, unsigned);
sigc::signal<void, Vehicle &> signal_vehicle_added;
sigc::signal<void, Vehicle &> signal_vehicle_removed;
sigc::signal<void, Block &, Train *> signal_block_reserved;
+ sigc::signal<void, const std::string &> signal_emergency;
private:
Catalogue &catalogue;
Driver *driver;
std::string base;
std::set<Track *> tracks;
- std::map<std::string, Route *> routes;
+ std::set<Route *> routes;
std::set<Block *> blocks;
std::map<unsigned, Train *> trains;
std::set<Vehicle *> vehicles;
Msp::Time::TimeStamp last_tick;
+ unsigned next_turnout_id;
public:
Layout(Catalogue &, Driver * = 0);
void add_track(Track &);
const std::set<Track *> &get_tracks() const { return tracks; }
void remove_track(Track &);
+ unsigned allocate_turnout_id(bool);
void add_block(Block &);
Block &get_block(unsigned) const;
void remove_block(Block &);
void add_route(Route &);
- const std::map<std::string, Route *> &get_routes() const { return routes; }
+ const std::set<Route *> &get_routes() const { return routes; }
Route &get_route(const std::string &) const;
+ void update_routes();
void remove_route(Route &);
void add_train(Train &);
void remove_vehicle(Vehicle &);
void tick();
+ void emergency(const std::string &);
void save(const std::string &);
void save_trains(const std::string &);
private:
- void check_links();
- void check_routes();
+ void sensor_event(unsigned, bool);
};
} // namespace Marklin