#ifndef CPATHFINDER_H #define CPATHFINDER_H #include "CGameInfo.h" #include "int3.h" #include #include struct CPathNode { bool v1, v2, v3, v4, v5, v6, v7, v8; //true if we can pass, false if not bool accesible; //true if a hero can be on this node int dist; //distance from the first node of searching; -1 is infinity CPathNode * theNodeBefore; int x, y; //coordiantes }; struct CPath { std::queue nodes; //just get node by node }; /** * main pathfinder class */ class CPathfinder { private: std::vector< std::vector > graph; public: CPath * getPath(int3 & src, int3 & dest); //calculates path between src and dest; returns pointer to CPath or NULL if path does not exists CPath * getPath(int3 & src, int3 & dest, int (*getDist)(int3 & a, int3 b)); //calculates path between src and dest; returns pointer to CPath or NULL if path does not exists; uses getDist to calculate distance }; #endif //CPATHFINDER_H