import { TwoDimensionalArray } from './TwoDimensionalArray'; /** * (To be filled) */ export interface Cell { getNeighborCell(relativeX: number, relativeY: number): Cell; setNeighborCell(relativeX: number, relativeY: number, cell: Cell): void; } /** * (To be filled) */ export declare class NullCell implements Cell { getNeighborCell(relativeX: number, relativeY: number): Cell; setNeighborCell(relativeX: number, relativeY: number, cell: Cell): void; } /** * (To be filled) */ export declare class NaiveCell implements Cell { /** * Neighbor cells. */ protected readonly neighborCells: TwoDimensionalArray; /** * * @param neighborRange */ constructor(neighborRange?: number); /** * Returns the specified neighbor cell. * @param {number} relativeX * @param {number} relativeY */ getNeighborCell(relativeX: number, relativeY: number): Cell; /** * Sets the provided cell as a neighbor of this cell. * @param relativeX * @param relativeY * @param cell */ setNeighborCell(relativeX: number, relativeY: number, cell: Cell): void; } export interface Index2D { x: number; y: number; } /** * (To be filled) */ export declare class Grid { readonly nullCell: T; /** * Cells. */ cell2DArray: TwoDimensionalArray; private cellIndexMap; /** * * @param {number} xCount * @param {number} yCount * @param {number} neighborRange * @param {boolean} loopAtEndOfScreen */ constructor(xCount: number, yCount: number, neighborRange: number, loopAtEndOfScreen: boolean, cellFactory: (neighborRange: number) => T, nullCell: T); /** * Returns the specified cell. * @param {number} x - X index. * @param {number} y - Y index. */ getCell(x: number, y: number): T; /** * Returns the x and y index of the given cell. * @param cell */ getCellIndex(cell: T): Index2D; /** * (To be filled) * @param referenceCell * @param {number} relX * @param {number} relY * @param {boolean} loopAtEndOfScreen */ getRelativePositionCell(referenceCell: T, relX: number, relY: number, loopAtEndOfScreen: boolean): T; private setNeighborCells; }