phaser3-rex-plugins
Version:
233 lines (212 loc) • 5.48 kB
TypeScript
import ComponentBase from '../../utils/componentbase/ComponentBase';
import { TileXYType } from '../types/Position';
import Board from '../board/Board';
export default PathFinder;
declare namespace PathFinder {
/**
* Path mode identifiers.
*/
type PathModeTypes = 'random' | 'diagonal' | 'straight' | 'line' |
'A*' | 'A*-random' | 'A*-line' |
0 | 1 | 2 | 3 |
10 | 11 | 12;
/**
* Node for pathfinding.
*/
type NodeType = {
/**
* Tile x.
*/
x: number,
/**
* Tile y.
*/
y: number,
/**
* Path cost accumulated.
*/
pathCost: number,
/**
* Previous nodes.
*/
preNodes: NodeType[]
}
/**
* Sentinel value for blocked tiles.
*/
type BLOCKER = null;
/**
* Sentinel value for infinite cost.
*/
type INFINITY = undefined;
/**
* Callback to compute path cost.
*/
type CostCallbackType = (
/**
* Current tile node.
*/
curTile: NodeType,
/**
* Previous tile node.
*/
preTile: NodeType,
/**
* PathFinder instance.
*/
pathFinder: PathFinder
)
=> number | BLOCKER | INFINITY;
/**
* PathFinder configuration.
*/
interface IConfig {
/**
* True to test for occupied tiles.
*/
occupiedTest?: boolean,
/**
* True to test for blockers.
*/
blockerTest?: boolean,
/**
* Fixed cost per step.
*/
cost?: number,
/**
* Cost callback function.
*/
costCallback?: CostCallbackType,
/**
* Callback scope for cost function.
*/
costCallbackScope?: object,
/**
* True to cache path costs.
*/
cacheCost?: boolean,
/**
* Path mode.
*/
pathMode?: PathModeTypes,
/**
* Weight value for cost.
*/
weight?: number,
/**
* True to shuffle neighbor order.
*/
shuffleNeighbors?: boolean,
}
}
/**
* PathFinder component for board tiles.
*/
declare class PathFinder extends ComponentBase {
/**
* Create a PathFinder component.
* @param gameObject - Chess game object.
* @param config - PathFinder configuration.
*/
constructor(
gameObject: Phaser.GameObjects.GameObject,
config?: PathFinder.IConfig
);
/**
* Create a PathFinder component with config only.
* @param config - PathFinder configuration.
*/
constructor(
config?: PathFinder.IConfig
);
/**
* Set the chess game object.
* @param gameObject - Chess game object.
* @returns This instance.
*/
setChess(gameObject: Phaser.GameObjects.GameObject): this;
/**
* Chess game object.
*/
readonly gameObject: Phaser.GameObjects.GameObject;
/**
* Board instance.
*/
readonly board: Board;
/**
* Set a fixed cost value.
* @param cost - Cost value.
* @returns This instance.
*/
setCostFunction(cost: number): this;
/**
* Set a cost callback function.
* @param callback - Cost callback.
* @param scope - Callback scope.
* @returns This instance.
*/
setCostFunction(
callback: PathFinder.CostCallbackType,
scope?: object
): this;
/**
* Set path mode.
* @param pathMode - Path mode identifier.
* @returns This instance.
*/
setPathMode(
pathMode: PathFinder.PathModeTypes
): this;
/**
* Find reachable tiles within moving points.
* @param movingPoints - Moving points limit.
* @param out - Optional output array.
* @returns Array of reachable nodes.
*/
findArea(
movingPoints?: number | PathFinder.INFINITY,
out?: PathFinder.NodeType[]
): PathFinder.NodeType[];
/**
* Get path to a destination tile.
* @param endTileXY - Destination tile.
* @returns Path nodes.
*/
getPath(
endTileXY: TileXYType
): PathFinder.NodeType[];
/**
* Find path to a destination tile.
* @param endTileXY - Destination tile.
* @param movingPoints - Moving points limit.
* @param isClosest - True to return closest reachable.
* @param out - Optional output array.
* @returns Path nodes.
*/
findPath(
endTileXY: TileXYType,
movingPoints?: number | PathFinder.INFINITY,
isClosest?: boolean,
out?: PathFinder.NodeType[]
): PathFinder.NodeType[];
/**
* Get path cost for a tile.
* @param tileX - Tile x.
* @param tileY - Tile y.
* @param pathCost - True to return path cost.
* @returns Cost value.
*/
tileXYToCost(
tileX: number,
tileY: number,
pathCost?: boolean
): number;
/**
* Blocker sentinel value.
*/
readonly BLOCKER: PathFinder.BLOCKER;
/**
* Infinity sentinel value.
*/
readonly INFINITY: PathFinder.INFINITY;
}