import { ECellType } from "../Simulation/index.js";
import { Hex } from "./index.js";
export class PathFinding {
    static bfs(level, startIndex, endIndex) {
        const listToExplore = [startIndex];
        let cameFrom = new Array(level.simCells.length);
        cameFrom.fill(-1);
        while (listToExplore.length > 0) {
            const nodeIndex = listToExplore.shift();
            const cell = level.simCells[nodeIndex];
            for (let i = 0; i < 6; ++i) {
                const neighbourHex = Hex.neighbour(cell.hex, i);
                const neighbourIndex = level.getCellIndex(neighbourHex);
                if (neighbourIndex === -1) {
                    continue;
                }
                const neighbourCell = level.simCells[neighbourIndex];
                if (neighbourCell.type === ECellType.Blocked || neighbourCell.type === ECellType.Reserved || neighbourCell.simTower !== null) {
                    continue;
                }
                if (cameFrom[neighbourIndex] === -1) {
                    cameFrom[neighbourIndex] = nodeIndex;
                    if (neighbourIndex !== endIndex) {
                        listToExplore.push(neighbourIndex);
                    }
                    else {
                        let idx = neighbourIndex;
                        const path = [idx];
                        while (idx !== startIndex) {
                            const prev = cameFrom[idx];
                            idx = prev;
                            path.unshift(idx);
                        }
                        return path;
                    }
                }
            }
        }
        return null;
    }
}
//# sourceMappingURL=PathFinding.js.map