duncan
Mom and Dad were wrong!
|
00001 #ifndef CLIENT_PATHFINDER_H_ 00002 #define CLIENT_PATHFINDER_H_ 00003 00004 #include <queue> 00005 #include <vector> 00006 #include <list> 00007 #include <utility> 00008 #include "world.h" 00009 00010 namespace client { 00011 00019 class PathFinder { 00020 public: 00021 typedef std::list<std::pair<size_t,size_t> > path_t; 00022 private: 00023 typedef std::pair<bool,size_t> node_t; 00024 World& world_; 00025 int dirs_[4][2]; 00026 std::vector<node_t> map_; 00027 std::queue<size_t> queue_; 00028 00029 void getpath(size_t,path_t&); 00030 void cleanpath(path_t&); 00031 00032 void newmap(); 00033 inline size_t encode(size_t,size_t); 00034 inline size_t row(size_t); 00035 inline size_t col(size_t); 00036 public: 00037 PathFinder(World&); 00038 00039 bool path(size_t, size_t, size_t, size_t, net::index_t, path_t&); 00040 }; 00041 00042 } 00043 00044 #endif