X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FRifle.js;h=94a6d058a386e8ee1d0b05be51e77cf8b5b34015;hb=c3ff3a0c807d97c0311a06491318fe02440266db;hp=61c2c35230afcc1604a7cc473931ebd4d5817f2f;hpb=c322a84434326dff1291a57e82dbd995817a5423;p=vchess.git diff --git a/client/src/variants/Rifle.js b/client/src/variants/Rifle.js index 61c2c352..94a6d058 100644 --- a/client/src/variants/Rifle.js +++ b/client/src/variants/Rifle.js @@ -1,11 +1,6 @@ import { ChessRules, PiPo, Move } from "@/base_rules"; -export const VariantRules = class RifleRules extends ChessRules { - static get HasEnpassant() { - // Due to the capturing mode, en passant is disabled - return false; - } - +export class RifleRules extends ChessRules { getBasicMove([sx, sy], [ex, ey], tr) { let mv = new Move({ appear: [], @@ -46,4 +41,34 @@ export const VariantRules = class RifleRules extends ChessRules { return mv; } + + getEnpassantCaptures([x, y], shiftX) { + let moves = []; + const Lep = this.epSquares.length; + const epSquare = this.epSquares[Lep - 1]; //always at least one element + if ( + !!epSquare && + epSquare.x == x + shiftX && + Math.abs(epSquare.y - y) == 1 + ) { + let enpassantMove = new Move({ + appear: [], + vanish: [], + start: {x:x, y:y}, + end: {x:x+shiftX, y:epSquare.y} + }); + enpassantMove.vanish.push({ + x: x, + y: epSquare.y, + p: "p", + c: this.getColor(x, epSquare.y) + }); + moves.push(enpassantMove); + } + return moves; + } + + static get SEARCH_DEPTH() { + return 2; + } };