X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FBerolina.js;h=15a567ce7cf8d791a37b81da3b4b6ae2e72fa4c1;hb=f52671e5b5b50b1421474f27dc9c18f701b559f3;hp=0765d4b9ecd670bf25fbc78e42762a0e8f85a2af;hpb=7301aa5ff93c6b0cf6b2c41a24d552597b689693;p=vchess.git diff --git a/client/src/variants/Berolina.js b/client/src/variants/Berolina.js index 0765d4b9..15a567ce 100644 --- a/client/src/variants/Berolina.js +++ b/client/src/variants/Berolina.js @@ -54,6 +54,26 @@ export class BerolinaRules extends ChessRules { ); } + getEnpassantCaptures([x, y], shift) { + const Lep = this.epSquares.length; + const epSquare = this.epSquares[Lep - 1]; //always at least one element + if ( + !!epSquare && + epSquare[0].x == x + shift && + epSquare[0].y == y + ) { + let enpassantMove = this.getBasicMove([x, y], [x + shift, y]); + enpassantMove.vanish.push({ + x: x, + y: epSquare[1], + p: "p", + c: this.getColor(x, epSquare[1]) + }); + return [enpassantMove]; + } + return []; + } + // Special pawns movements getPotentialPawnMoves([x, y]) { const color = this.turn; @@ -105,24 +125,13 @@ export class BerolinaRules extends ChessRules { } // Next condition so that other variants could inherit from this class - if (V.PawnSpecs.enPassant) { - // En passant - const Lep = this.epSquares.length; - const epSquare = this.epSquares[Lep - 1]; //always at least one element - if ( - !!epSquare && - epSquare[0].x == x + shiftX && - epSquare[0].y == y - ) { - let enpassantMove = this.getBasicMove([x, y], [x + shiftX, y]); - enpassantMove.vanish.push({ - x: x, - y: epSquare[1], - p: "p", - c: this.getColor(x, epSquare[1]) - }); - moves.push(enpassantMove); - } + if (V.HasEnpassant) { + // NOTE: backward en-passant captures are not considered + // because no rules define them (for now). + Array.prototype.push.apply( + moves, + this.getEnpassantCaptures([x, y], shiftX) + ); } return moves;