X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FAllmate2.js;h=9ba91ef05ab91b00bcf4ec198a85c99e4afbfa67;hb=fd7295e824c0199ad5a1ea40ec4b1f0630a5d806;hp=828e459fceaec55f85120c116b5022148a082b8b;hpb=b83a675a3066c67cc7843ae27ad8aeffd15b0976;p=vchess.git diff --git a/client/src/variants/Allmate2.js b/client/src/variants/Allmate2.js index 828e459f..9ba91ef0 100644 --- a/client/src/variants/Allmate2.js +++ b/client/src/variants/Allmate2.js @@ -1,6 +1,6 @@ import { ChessRules, PiPo, Move } from "@/base_rules"; -export const VariantRules = class Allmate2Rules extends ChessRules { +export class Allmate2Rules extends ChessRules { static get HasEnpassant() { return false; } @@ -11,7 +11,7 @@ export const VariantRules = class Allmate2Rules extends ChessRules { } static GenRandInitFen(randomness) { - return ChessRules.GenRandInitFen(randomness).replace(/ -$/, ""); + return ChessRules.GenRandInitFen(randomness).slice(0, -2); } getPotentialMovesFrom([x, y]) { @@ -32,13 +32,13 @@ export const VariantRules = class Allmate2Rules extends ChessRules { let attacked = {}; for (let i=0; i without (normal-)capturing: difference with Allmate variant + // --> without (normal-)capturing: difference with Allmate1 variant // Avoid "oppMoves = this.getAllValidMoves();" => infinite recursion outerLoop: for (let i=0; i= 2 && move.appear.length == 1) { - move.vanish.forEach(v => { - if (v.c == color) - return; + for (let i = 1; i this.INIT_COL_KING[v.c] - this.castleFlags[v.c][1] = false; + this.castleFlags[v.c][1] = 8; } - }); + } } } - unupdateVariables(move) { - super.unupdateVariables(move); - const color = this.turn; + preUndo(move) { + super.preUndo(move); + const oppCol = this.turn; if (move.vanish.length >= 2 && move.appear.length == 1) { // Did opponent king disappeared? - const psq = move.vanish.find(v => v.p == V.KING && v.c != color) + const psq = move.vanish.find(v => v.p == V.KING && v.c == oppCol) if (psq) this.kingPos[psq.c] = [psq.x, psq.y]; } @@ -281,8 +212,7 @@ export const VariantRules = class Allmate2Rules extends ChessRules { if (kp[0] < 0) // King disappeared return color == "w" ? "0-1" : "1-0"; - if (this.atLeastOneMove()) - return "*"; + if (this.atLeastOneMove()) return "*"; // Kings still there, no moves: return "1/2"; }