UNPKG

koishi-plugin-chess

Version:
60 lines (59 loc) 1.7 kB
import type * as puppeteer from 'koishi-plugin-puppeteer'; import { Context, Session } from 'koishi'; export declare enum MoveResult { p1Win = 1, p2Win = -1, draw = -2, skip = 2, illegal = 3 } export declare class State { readonly rule: string; readonly size: number; readonly placement: 'cross' | 'grid'; readonly ctx: Context; p1: string; p2: string; next: string; bBoard: bigint; wBoard: bigint; imageMode: boolean; history: bigint[]; readonly area: bigint; readonly full: bigint; update: (this: State, x: number, y: number, value: 1 | -1) => MoveResult | string; constructor(rule: string, size: number, placement: 'cross' | 'grid', ctx: Context); get pBoard(): bigint; set pBoard(value: bigint); get nBoard(): bigint; set nBoard(value: bigint); get isFull(): boolean; bit(x: number, y: number): bigint; inRange(x: number, y: number): boolean; get(x: number, y: number): 0 | 1 | -1; drawSvg(x?: number, y?: number): puppeteer.SVG; drawText(x?: number, y?: number): string; draw(session: Session, message?: string, x?: number, y?: number): Promise<void>; set(x: number, y: number, value: 0 | 1 | -1): bigint; save(): void; refresh(): void; serial(): { rule: string; size: number; placement: "cross" | "grid"; p1: string; p2: string; next: string; history: string; }; static from(data: StateData, ctx: Context): State; } export interface StateData { p1: string; p2: string; next: string; history: string; rule: string; size: number; placement: 'cross' | 'grid'; }