class Track;
class Train;
class Vehicle;
+class Zone;
class Layout
{
void track(ArticleNumber);
void train(unsigned, unsigned, const std::string &);
void train(ArticleNumber, unsigned, const std::string &);
+ void zone();
};
-public:
+ typedef std::set<Zone *> ZoneSet;
+ typedef std::vector<Zone *> ZoneArray;
+
sigc::signal<void, Track &> signal_track_added;
sigc::signal<void, Track &> signal_track_removed;
sigc::signal<void, Route &> signal_route_added;
sigc::signal<void, Route &> signal_route_removed;
+ sigc::signal<void, Zone &> signal_zone_added;
+ sigc::signal<void, Zone &> signal_zone_removed;
sigc::signal<void, Train &> signal_train_added;
sigc::signal<void, Train &> signal_train_removed;
sigc::signal<void, Vehicle &> signal_vehicle_added;
std::string base;
std::set<Track *> tracks;
std::set<Route *> routes;
+ ZoneSet zones;
std::set<Block *> blocks;
std::map<unsigned, Train *> trains;
std::set<Vehicle *> vehicles;
void update_routes();
void remove_route(Route &);
+ void add_zone(Zone &);
+ const ZoneSet &get_zones() const { return zones; }
+ ZoneArray get_zones(const std::string &) const;
+ Zone &get_zone(const std::string &, unsigned) const;
+ void remove_zone(Zone &);
+
void add_train(Train &);
Train &get_train(unsigned) const;
const std::map<unsigned, Train *> &get_trains() const { return trains; }
void tick();
void emergency(const std::string &);
- void save(const std::string &);
- void save_trains(const std::string &);
+ void save(const std::string &) const;
+ void save_trains(const std::string &) const;
private:
void sensor_event(unsigned, bool);
};