chlss
Version:
Open-Source Chess Engine in TypeScript.
56 lines (55 loc) • 2.1 kB
JavaScript
;
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);
}
};