ngx-chess-board
Version:
Chess game component
52 lines (47 loc) • 1.69 kB
text/typescript
import { Board } from '../../models/board';
import { Color } from '../../models/pieces/color';
import { Point } from '../../models/pieces/point';
import { MoveUtils } from '../../utils/move-utils';
import { AbstractPiece } from './abstract-piece';
import { PieceAbstractDecorator } from './piece-abstract-decorator';
export class AvailableMoveDecorator extends PieceAbstractDecorator {
private pointClicked: Point;
private color: Color;
private board: Board;
constructor(piece: AbstractPiece, pointClicked: Point, color: Color, board: Board) {
super(piece);
this.pointClicked = pointClicked;
this.color = color;
this.board = board;
}
getPossibleCaptures(): Point[] {
return this.piece
.getPossibleCaptures()
.filter(
(point) =>
!MoveUtils.willMoveCauseCheck(
this.color,
this.pointClicked.row,
this.pointClicked.col,
point.row,
point.col,
this.board
)
);
}
getPossibleMoves(): Point[] {
return this.piece
.getPossibleMoves()
.filter(
(point) =>
!MoveUtils.willMoveCauseCheck(
this.color,
this.pointClicked.row,
this.pointClicked.col,
point.row,
point.col,
this.board
)
);
}
}