1 #ifndef HEADER_FINDERALG_H 2 #define HEADER_FINDERALG_H 3 4 class V2; 5 class Unit; 6 7 #include "Dir.h" 8 #include "FinderField.h" 9 #include "FinderPlace.h" 10 11 #include <deque> 12 13 /** 14 * Algorithm to find shortest path. 15 */ 16 class FinderAlg { 17 private: 18 const Unit *m_unit; 19 FinderField m_closed; 20 std::deque<FinderPlace> m_fifo; 21 private: 22 void pushNext(const FinderPlace &parent, const V2 &shift); 23 bool isInRect(const V2 &rectLoc, int w, int h, const V2 &dest) const; 24 bool tryPlace(const FinderPlace &place) const; 25 public: 26 FinderAlg(int w, int h); 27 Dir::eDir findDir(const Unit *unit, const V2 &dest); 28 }; 29 30 #endif 31