@logic-pad/core
Version:
48 lines (47 loc) • 1.77 kB
TypeScript
import { Color, Position } from '../../primitives.js';
export declare enum BTTile {
Empty = 0,
Dark = 1,
Light = 2,
NonExist = 3
}
export type BTColor = BTTile.Dark | BTTile.Light;
export declare class BTGridData {
readonly tiles: BTTile[][];
readonly connections: Position[][][];
readonly modules: BTModule[];
readonly width: number;
readonly height: number;
constructor(tiles: BTTile[][], connections: Position[][][], modules: BTModule[], width: number, height: number);
getTile(x: number, y: number): BTTile;
setTileWithConnection(x: number, y: number, tile: BTTile): void;
isInBound(x: number, y: number): boolean;
getEdges(pos: Position): Position[];
clone(): BTGridData;
}
export declare class IntArray2D {
private readonly array;
readonly width: number;
readonly height: number;
private constructor();
static create(width: number, height: number): IntArray2D;
set(x: number, y: number, value: number): void;
get(x: number, y: number): number;
clone(): IntArray2D;
}
export interface CheckResult {
tilesNeedCheck: IntArray2D | null;
ratings: Rating[] | null;
}
export interface Rating {
pos: Position;
score: number;
}
export default abstract class BTModule {
abstract checkGlobal(grid: BTGridData): CheckResult | false;
checkLocal(grid: BTGridData, _: Position[]): CheckResult | boolean;
}
export declare function getOppositeColor(color: BTColor): BTColor;
export declare function colorToBTTile(color: Color): BTTile;
export declare function createOneTileResult(grid: BTGridData, pos: Position, score?: number | undefined): CheckResult;
export declare function checkSubtilePlacement(grid: BTGridData, pos: Position): CheckResult | false | undefined;