UNPKG

@real_one_chess_king/game-logic

Version:
27 lines (26 loc) 1.39 kB
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[]; }