@real_one_chess_king/game-logic
Version:
R.O.C.K. chess game logic
27 lines (26 loc) • 1.39 kB
TypeScript
import { Turn } from "../../turn";
import { Coordinate } from "../../coordinate";
import { Direction, MovementRule } from "./movement-rule";
import { Action } from "../../affect/affect.types";
import { GetPiece } from "../../get-piece";
import { MovementRules } from "./movement-rules.const";
import { Entity } from "../../entity";
import { UUID } from "crypto";
export type StraightMovementRuleConfig = {
name: MovementRules;
moveToEmpty: boolean;
moveToKill: boolean;
collision: boolean;
distance: number;
directions: Set<Direction>;
speed: number;
} & Entity;
export declare function directionToVector(direction: Direction, x: number, y: number, diff: number): Coordinate;
export declare abstract class StraightMovementRule extends MovementRule {
constructor(id: UUID, name: MovementRules, moveToEmpty: boolean, moveToKill: boolean, collision: boolean, // true - will move until first enemy, false - will jump like horse
distance: number, directions: Set<Direction>, speed: number);
protected abstract possibleDirrections: Direction[];
protected abstract calculateNewCoord: (x: number, y: number, diff: number, dirrection: Direction, turns: Turn[]) => Action;
protected isCoordInvalid(x: number, y: number, size: number): boolean;
availableMoves(fromX: number, fromY: number, getPiece: GetPiece, turns: Turn[], size: number): Action[];
}