UNPKG

chlss

Version:

Open-Source Chess Engine in TypeScript.

56 lines (55 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LineMoveGenerator = void 0; const piece_1 = require("./piece"); const boardPosition_1 = require("./boardPosition"); const coords_1 = require("./coords"); const RookOffsets = [ { x: 1, y: 0 }, { x: -1, y: 0 }, { x: 0, y: 1 }, { x: 0, y: -1 }, ]; const BishopOffsets = [ { x: 1, y: 1 }, { x: -1, y: -1 }, { x: 1, y: -1 }, { x: -1, y: 1 }, ]; exports.LineMoveGenerator = { generateMoves(boardPosition, piece, index, posX, posY, offsetX, offsetY, colour, moveList) { while (true) { posX = posX + offsetX; posY = posY + offsetY; if (!boardPosition_1.BoardPosition.isInBoard(posX, posY)) { break; } let targetPiece = boardPosition_1.BoardPosition.getPieceByCoords(boardPosition, posX, posY); if (!(piece_1.Piece.isEnemyOrEmpty(targetPiece, colour))) { break; } moveList.push({ from: index, to: coords_1.Coords.toSquareIndex(posX, posY), piece: piece, targetPiece: targetPiece, setEnPassant: null, promotion: undefined, isPromo: false }); if (!piece_1.Piece.isEmpty(targetPiece)) break; } }, generateUsingOffsets(boardPosition, piece, colour, index, posX, posY, offsets, moveList) { offsets.map(function (offset) { exports.LineMoveGenerator.generateMoves(boardPosition, piece, index, posX, posY, offset.x, offset.y, colour, moveList); }); }, generateBishopLikeMoves(boardPosition, piece, colour, index, posX, posY, moveList) { this.generateUsingOffsets(boardPosition, piece, colour, index, posX, posY, BishopOffsets, moveList); }, generateRookLikeMoves(boardPosition, piece, colour, index, posX, posY, moveList) { this.generateUsingOffsets(boardPosition, piece, colour, index, posX, posY, RookOffsets, moveList); } };