$treeview $search $mathjax
Stratagus
2.2.6
$projectbrief
|
$projectbrief
|
$searchbox |
_________ __ __ / _____// |_____________ _/ |______ ____ __ __ ______ \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/ / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \ /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ > \/ \/ \//_____/ \/ ______________________ ______________________ T H E W A R B E G I N S Stratagus - A free fantasy real time strategy game engine
#include "stratagus.h"
#include "map.h"
#include "unittype.h"
#include "unit.h"
#include "pathfinder.h"
pathfinder.cpp - The path finder routines. | |
static unsigned char | Matrix [(MaxMapWidth+2)*(MaxMapHeight+3)+2] |
void | InitAStar (int mapWidth, int mapHeight, int(STDCALL *costMoveTo)(unsigned int index, void *data)) |
Init the a* data structures. | |
void | FreeAStar () |
free the a* data structures | |
int | AStarFindPath (int sx, int sy, int gx, int gy, int gw, int gh, int tilesizex, int tilesizey, int minrange, int maxrange, char *path, int pathlen, void *data) |
Find and a* path for a unit. | |
void | InitPathfinder () |
Path matrix. | |
void | FreePathfinder () |
Free the pathfinder. | |
static void | InitMatrix (unsigned char *matrix) |
unsigned char * | CreateMatrix () |
Create a matrix for the old pathfinder. | |
unsigned char * | MakeMatrix () |
Allocate a new matrix and initialize. | |
int | PlaceReachable (const CUnit &src, int x, int y, int w, int h, int minrange, int range) |
Can the unit 'src' reach the place x,y. | |
int | UnitReachable (const CUnit &src, const CUnit &dst, int range) |
Return distance to unit. | |
int | NewPath (CUnit &unit) |
Get next element of the way to goal. | |
int | NextPathElement (CUnit &unit, short int *pxd, short int *pyd) |
Returns the next element of the path. |
int AStarFindPath | ( | int | sx, | |
int | sy, | |||
int | gx, | |||
int | gy, | |||
int | gw, | |||
int | gh, | |||
int | tilesizex, | |||
int | tilesizey, | |||
int | minrange, | |||
int | maxrange, | |||
char * | path, | |||
int | pathlen, | |||
void * | data | |||
) |
Find and a* path for a unit.
Find path.
unsigned char* CreateMatrix | ( | ) |
Create a matrix for the old pathfinder.
Create empty movement matrix.
void FreeAStar | ( | ) |
free the a* data structures
Free A* data structure
void FreePathfinder | ( | ) |
Free the pathfinder.
Free the pathfinder
void InitAStar | ( | int | mapWidth, | |
int | mapHeight, | |||
int(STDCALL *costMoveTo)(unsigned int index, void *data) | ||||
) |
Init the a* data structures.
Init A* data structures
static void InitMatrix | ( | unsigned char * | matrix | ) | [static] |
Initialize a matrix
void InitPathfinder | ( | ) |
Path matrix.
Init the pathfinder.
Init the pathfinder
unsigned char* MakeMatrix | ( | ) |
Allocate a new matrix and initialize.
Allocate a new matrix and initialize
int NewPath | ( | CUnit & | unit | ) |
Get next element of the way to goal.
Find new path.
The destination could be a unit or a field. Range gives how far we must reach the goal.
unit | Path for this unit. |
int NextPathElement | ( | CUnit & | unit, | |
short int * | pxd, | |||
short int * | pyd | |||
) |
Returns the next element of the path.
Returns the next element of a path.
unit | Unit that wants the path element. | |
pxd | Pointer for the x direction. | |
pyd | Pointer for the y direction. |
int PlaceReachable | ( | const CUnit & | src, | |
int | x, | |||
int | y, | |||
int | w, | |||
int | h, | |||
int | minrange, | |||
int | range | |||
) |
Can the unit 'src' reach the place x,y.
Can the unit 'src' reach the place x,y.
src | Unit for the path. | |
x | Map X tile position. | |
y | Map Y tile position. | |
w | Width of Goal | |
h | Height of Goal | |
minrange | min range to the tile | |
range | Range to the tile. |
Return distance to unit.
Can the unit 'src' reach the unit 'dst'.
src | Unit for the path. | |
dst | Unit to be reached. | |
range | Range to unit. |
unsigned char Matrix[(MaxMapWidth+2)*(MaxMapHeight+3)+2] [static] |
The matrix is used to generated the paths.
0: Nothing must check if usable. 1-8: Field on the path 1->2->3->4->5... 88: Marks the possible goal fields. 98: Marks map border, for faster limits checks.