]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.h
Get rid of the TrainAI tagging system
[r2c2.git] / source / libr2c2 / train.h
index fa638f8d5034390b25388a1fa06b7e125538ef80..461a27e583146bde1080e64acbb6384b0c33a3e6 100644 (file)
@@ -109,9 +109,17 @@ public:
 
        void add_ai(TrainAI &);
        void remove_ai(TrainAI &);
-       TrainAI *get_tagged_ai(const std::string &) const;
        void ai_message(const TrainAI::Message &);
 
+       template<typename T>
+       T *get_ai_of_type() const
+       {
+               for(std::list<TrainAI *>::const_iterator i=ais.begin(); i!=ais.end(); ++i)
+                       if(T *ai = dynamic_cast<T *>(*i))
+                               return ai;
+               return 0;
+       }
+
        void place(Block &, unsigned);
        void unplace();
        bool is_placed() const { return !blocks.empty(); }