X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FZen.js;h=0424e07f089f22c5cd8a0c00a4df8e64e4dd7c0c;hb=ffeaef854d80445ef87f2cdf4fe71d60347a81bf;hp=bc51e6ad364f93011e412abaf858a107d33c78ad;hpb=e9b736ee3e72e2ddb9bf4da0c0f1e22a70f7448f;p=vchess.git diff --git a/client/src/variants/Zen.js b/client/src/variants/Zen.js index bc51e6ad..0424e07f 100644 --- a/client/src/variants/Zen.js +++ b/client/src/variants/Zen.js @@ -1,9 +1,29 @@ import { ChessRules } from "@/base_rules"; -export const VariantRules = class ZenRules extends ChessRules { - // NOTE: enPassant, if enabled, would need to redefine carefully getEpSquare - static get HasEnpassant() { - return false; +export class ZenRules extends ChessRules { + getEpSquare(moveOrSquare) { + if (!moveOrSquare) return undefined; + if (typeof moveOrSquare === "string") { + const square = moveOrSquare; + if (square == "-") return undefined; + return V.SquareToCoords(square); + } + const move = moveOrSquare; + const s = move.start, + e = move.end; + if ( + // Exclude captures (of rooks for example) + move.vanish.length == 1 && + s.y == e.y && + Math.abs(s.x - e.x) == 2 && + move.appear[0].p == V.PAWN + ) { + return { + x: (s.x + e.x) / 2, + y: s.y + }; + } + return undefined; } // TODO(?): some duplicated code in 2 next functions @@ -145,7 +165,7 @@ export const VariantRules = class ZenRules extends ChessRules { return "0-0"; } - // Translate initial square (because pieces may fly unusually in this variant!) + // Translate initial square (because pieces may fly unusually!) const initialSquare = V.CoordsToSquare(move.start); // Translate final square