@real_one_chess_king/game-logic
Version:
R.O.C.K. chess game logic
33 lines (32 loc) • 1.52 kB
TypeScript
import { Turn } from "../../turn";
import { Color } from "../../color";
import { Coordinate } from "../../coordinate";
import { MovementRule, MovementRuleMeta } from "./movement-rule";
import { Action } from "../../affect/affect.types";
import { StraightMovementRuleConfig } from "./straight-movement.rule";
import { GetPiece } from "../../get-piece";
import { Entity } from "../../entity";
export type CastlingRuleSpecificConfig = {
mainPieceCoordinate: Coordinate;
foreginPieceCoordinate: Coordinate;
};
export type CastlingMovementRuleConfig = {
color: Color;
} & StraightMovementRuleConfig & CastlingRuleSpecificConfig & Entity;
export type CastlingMovementRuleMeta = MovementRuleMeta & {
color: Color;
} & CastlingRuleSpecificConfig & Entity;
export declare class CastlingMovementRule extends MovementRule {
private color;
constructor({ id, name, moveToEmpty, moveToKill, collision, distance, directions, speed, color: color, mainPieceCoordinate, foreginPieceCoordinate, }: CastlingMovementRuleConfig);
mainPieceCoordinate: CastlingRuleSpecificConfig["mainPieceCoordinate"];
foreginPieceCoordinate: CastlingRuleSpecificConfig["foreginPieceCoordinate"];
private isPieceMoved;
private getSign;
private isSpaceBeetweenLocked;
protected calculateNewCoord: () => Action;
private isPieceNotExist;
private isColorDifferent;
availableMoves(_fromX: number, _fromY: number, getPiece: GetPiece, turns: Turn[]): Action[];
getMeta(): CastlingMovementRuleMeta;
}