30 #ifndef __PATH_FINDER_H__
31 #define __PATH_FINDER_H__
35 #if defined(DEBUG_ASTAR)
36 #define AstarDebugPrint(x) DebugPrint(x)
38 #define AstarDebugPrint(x)
88 void Load(lua_State *l);
97 bool isRecalculatePathNeeded;
107 void Load(lua_State *l);
139 void SetSize(
unsigned int width,
unsigned int height);
146 template <
typename T>
147 bool Run(T &context);
154 dataType
Get(
const Vec2i &pos)
const;
157 void Set(
const Vec2i &pos, dataType value);
160 PosNode(
const Vec2i &pos,
const Vec2i &from) : pos(pos), from(from) {}
166 std::vector<dataType> m_values;
167 std::queue<PosNode> m_queue;
168 unsigned int m_extented_width;
169 unsigned int m_height;
172 template <
typename T>
175 for (; m_queue.empty() ==
false; m_queue.pop()) {
176 const PosNode &posNode = m_queue.front();
178 switch (context.Visit(*
this, posNode.pos, posNode.from)) {
225 int minrange,
int maxrange);
244 #endif // !__PATH_FINDER_H__
void InitPathfinder()
Init the pathfinder.
Definition: pathfinder.cpp:157
int AStarMovingUnitCrossingCost
cost associated to move on a tile occupied by a moving unit
Definition: astar.cpp:101
void PushNeighboor(const Vec2i &pos)
Definition: pathfinder.cpp:94
PathFinderOutput output
Definition: pathfinder.h:119
int GetAStarUnknownTerrainCost()
Definition: astar.cpp:1162
Definition: pathfinder.h:103
const int Heading2X[9]
Definition: astar.cpp:82
bool IsInvalid(const Vec2i &pos) const
Definition: pathfinder.cpp:135
PathFinderInput input
Definition: pathfinder.h:118
dataType Get(const Vec2i &pos) const
Definition: pathfinder.cpp:140
unsigned short int Cycles
Definition: pathfinder.h:109
const int XY2Heading[3][3]
Definition: astar.cpp:85
The big unit structure.
Definition: unit.h:119
PathFinderOutput()
max length of precalculated path
Definition: pathfinder.cpp:312
bool IsVisited(const Vec2i &pos) const
Definition: pathfinder.cpp:125
_move_return_
Definition: pathfinder.h:59
void PushUnitPosAndNeighboor(const CUnit &unit)
Definition: pathfinder.cpp:110
void Save(CFile &file) const
Definition: unit_save.cpp:98
short int dataType
Definition: pathfinder.h:137
void SetAStarUnknownTerrainCost(int cost)
Definition: astar.cpp:1154
Definition: pathfinder.h:129
Definition: pathfinder.h:100
Reached goal stop.
Definition: pathfinder.h:63
void PathfinderCclRegister()
Definition: script_pathfinder.cpp:107
#define Assert(cond)
Definition: stratagus.h:119
Definition: pathfinder.h:115
void SetAStarFixedUnitCrossingCost(int cost)
Definition: astar.cpp:1130
void PushPos(const Vec2i &pos)
Definition: pathfinder.cpp:86
Definition: pathfinder.h:128
Definition: pathfinder.h:134
bool AStarKnowUnseenTerrain
Whether to have knowledge of terrain that we haven't visited yet.
Definition: astar.cpp:102
void SetAStarMovingUnitCrossingCost(int cost)
Definition: astar.cpp:1142
Unreachable stop.
Definition: pathfinder.h:62
void Load(lua_State *l)
Definition: script_unit.cpp:209
int AStarFixedUnitCrossingCost
cost associated to move on a tile occupied by a fixed unit
Definition: astar.cpp:100
void SetSize(unsigned int width, unsigned int height)
Definition: pathfinder.cpp:64
char Length
Flag fast move (one step)
Definition: pathfinder.h:111
const int Heading2Y[9]
Definition: astar.cpp:83
int AStarUnknownTerrainCost
Cost of using a square we haven't seen before.
Definition: astar.cpp:103
bool IsReached(const Vec2i &pos) const
Definition: pathfinder.cpp:130
int UnitReachable(const CUnit &unit, const CUnit &dst, int range)
Return distance to unit.
Definition: pathfinder.cpp:223
void FreePathfinder()
Free the pathfinder.
Definition: pathfinder.cpp:165
This Pathfinder failed, try another.
Definition: pathfinder.h:61
int NextPathElement(CUnit &unit, short int *xdp, short int *ydp)
Returns the next element of the path.
Definition: pathfinder.cpp:366
int GetAStarFixedUnitCrossingCost()
Definition: astar.cpp:1136
int GetAStarMovingUnitCrossingCost()
Definition: astar.cpp:1148
Definition: pathfinder.h:131
void Init()
Definition: pathfinder.cpp:71
Definition: pathfinder.h:130
Definition: pathfinder.h:60
bool Run(T &context)
Definition: pathfinder.h:173
char Path[MAX_PATH_LENGTH]
stored path length
Definition: pathfinder.h:112
VisitResult
Definition: pathfinder.h:127
int PlaceReachable(const CUnit &src, const Vec2i &pos, int w, int h, int minrange, int maxrange)
Can the unit 'src' reach the place x,y.
Definition: pathfinder.cpp:186
char Fast
how much Cycles we move.
Definition: pathfinder.h:110
Wait, no time or blocked.
Definition: pathfinder.h:64