Files
PixelDefense/game/pathfinding.h

38 lines
797 B
C

#ifndef PIXELDEFENSE_PATHFINDING_H
#define PIXELDEFENSE_PATHFINDING_H
#include <breeze.h>
#include "components.h"
typedef struct PathNode {
i32 weight; // fCost = g + h
i32 gCost; // from start cost
i32 hCost; // to target cost
TilePosition pos;
} PathNode;
typedef struct PathNodeRecord {
bool visited : 1;
bool open : 1;
i8 x : 3;
i8 y : 3;
} PathNodeRecord;
typedef struct PathfindingDesc {
Position start;
Position target;
BzObjectPool *pool;
BzTileMap *map;
PathNode *openSet; // heap (size: width * height)
PathNodeRecord *closedSet; // size: width * height
Path *outPath;
} PathfindingDesc;
bool pathfindAStar(const PathfindingDesc *desc);
// TODO: Flowfield
void calculateFlowField();
#endif //PIXELDEFENSE_PATHFINDING_H