UNPKG

chessfield

Version:

A TypeScript+ThreeJS library to render a 3D chessboard

60 lines (59 loc) 2.08 kB
import { Group, InstancedMesh, Material, Mesh } from 'three'; import * as cg from 'chessground/types'; export type Mode = 'light' | 'dark'; export type Theme = 'blue' | 'green' | 'brown' | 'bw' | 'light' | 'dark' | string; export type Camera = 'white' | 'right' | 'black' | 'left' | 'top'; export type Angle = 'left' | 'center' | 'right'; export interface Moves { moves: Move[]; } export interface Move { fen: cg.FEN; lastMove?: cg.Key[]; } export type ColorMaterial = { [key in cg.Color]: Material | null; }; export type PieceColorRole = 'white-knight' | `${cg.Color}-${cg.Role}`; export type PieceKey = keyof typeof PiecesEnum; export declare enum PiecesEnum { p = "pawn", k = "king", q = "queen", n = "knight", b = "bishop", r = "rook" } export declare const PiecesTypes: Record<PieceKey, PiecesEnum>; export type Themes = { [key in Theme]: ThemeColors; }; export interface ThemeColors { light: string | number; dark: string | number; highlight: string | number; selected: string | number; } export type CoordPieceNameMap = Map<cg.Key, cg.Role>; export type ColorPieceNameObjectMap = Map<PieceColorRole, Mesh | InstancedMesh | Group | undefined>; export interface BoardPiece extends cg.Piece { coord: cg.Key | null; objectKey: PieceColorRole | null; count: number; } declare module 'three' { interface Mesh { setSquareColors?: (light: string | number, dark: string | number) => void; highlightSquareStart?: (x: number, y: number) => void; highlightSquareEnd?: (x: number, y: number) => void; highlightSquareSelected?: (x: number, y: number) => void; setHighlightColor?: (hex: string | number) => void; } } export interface ExtendedMesh extends Mesh { setSquareColors: (light: string | number, dark: string | number) => void; highlightSquareStart: (x: number, y: number) => void; highlightSquareEnd: (x: number, y: number) => void; highlightSquareSelected: (x: number, y: number) => void; setHighlightColor: (hex: string | number) => void; }