]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.h
TrainAI framework
[r2c2.git] / source / libr2c2 / train.h
index b72fbf635c1d613c8e7f4aab07333dc4fb29eed3..59aa9dc022365be78823885a210f0431872dc48b 100644 (file)
@@ -14,13 +14,13 @@ Distributed under the GPL
 #include "block.h"
 #include "blockiter.h"
 #include "controller.h"
+#include "trainai.h"
 
 namespace R2C2 {
 
 class ArticleNumber;
 class Route;
 class SpeedQuantizer;
-class Timetable;
 class Vehicle;
 class VehicleType;
 class Zone;
@@ -50,6 +50,7 @@ public:
        sigc::signal<void, const std::string &> signal_name_changed;
        sigc::signal<void, const std::string &, float> signal_control_changed;
        sigc::signal<void, unsigned, bool> signal_function_changed;
+       sigc::signal<void, TrainAI &, const TrainAI::Message &> signal_ai_event;
        sigc::signal<void, const Route *> signal_route_changed;
        sigc::signal<void, Block &> signal_advanced;
        sigc::signal<void> signal_arrived;
@@ -82,7 +83,7 @@ private:
        bool reserving;
        bool advancing;
        Controller *controller;
-       Timetable *timetable;
+       std::list<TrainAI *> ais;
        bool active;
        unsigned current_speed_step;
        bool speed_changing;
@@ -131,8 +132,10 @@ public:
        bool get_function(unsigned) const;
        unsigned get_functions() const { return functions; }
 
-       void set_timetable(Timetable *);
-       Timetable *get_timetable() { return timetable; }
+       void add_ai(TrainAI &);
+       void remove_ai(TrainAI &);
+       TrainAI *get_tagged_ai(const std::string &);
+       void ai_message(const TrainAI::Message &);
 
        bool set_route(const Route *);
        bool go_to(Track &);