]> 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 7c388ad7087801fe5928f69cfa9915da43b05d6b..461a27e583146bde1080e64acbb6384b0c33a3e6 100644 (file)
@@ -57,7 +57,6 @@ private:
        std::vector<Vehicle *> vehicles;
        BlockList blocks;
        BlockList::iterator cur_blocks_end;
-       BlockList::iterator clear_blocks_end;
        Block *pending_block;
        Block *stop_at_block;
        bool reserving;
@@ -110,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(); }
@@ -138,7 +145,6 @@ private:
 public:
        void reserve_more();
 private:
-       void check_turnout_paths(bool);
        float get_reserved_distance_until(const Block *, bool) const;
        void release_blocks();
        void release_blocks(BlockList::iterator, BlockList::iterator);