#ifndef PIXELDEFENSE_PATHFINDING_H #define PIXELDEFENSE_PATHFINDING_H #include #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 toParentX : 3; i8 toParentY : 3; i32 nodeIdx; } 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