UNPKG

@2d-game-grid/square

Version:
23 lines (22 loc) 904 B
import { ALL_DIRECTIONS, UniqueCellQueue } from '@2d-game-grid/core'; /** * @param cell The start cell * @param maxDistance The maximum distance (including) to a cell that should be returned * @param algorithm The algorithm that should be used for the distance calculation * @returns All cells that are in the distance (excluding the start cell) */ export function listCellsInDistance(cell, maxDistance, algorithm) { const queue = new UniqueCellQueue(); const neighbors = cell.neighbors.list(ALL_DIRECTIONS); queue.ignore(cell); queue.addAll(neighbors); const cellsInDistance = []; while (queue.hasNext()) { const nextCell = queue.getNext(); if (nextCell.getDistance(cell, algorithm) <= maxDistance) { cellsInDistance.push(nextCell); queue.addAll(nextCell.neighbors.list(ALL_DIRECTIONS)); } } return cellsInDistance; }