X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FGrand.js;h=d4f620f7596d2c8bfe08e374501e21f047b443c6;hb=68e19a449db7a12e0a168e99cd750d985c983ba1;hp=c910dd8e72a7e6a521d0500ab4182285195f28a1;hpb=7ba4a5bc5b64e19a1e7f26aa232d5c50770d07ad;p=vchess.git diff --git a/client/src/variants/Grand.js b/client/src/variants/Grand.js index c910dd8e..d4f620f7 100644 --- a/client/src/variants/Grand.js +++ b/client/src/variants/Grand.js @@ -39,6 +39,10 @@ export const VariantRules = class GrandRules extends ChessRules { return super.getFen() + " " + this.getCapturedFen(); } + getFenForRepeat() { + return super.getFenForRepeat() + "_" + this.getCapturedFen(); + } + getCapturedFen() { let counts = [...Array(14).fill(0)]; let i = 0; @@ -251,20 +255,20 @@ export const VariantRules = class GrandRules extends ChessRules { ); } - isAttacked(sq, colors) { + isAttacked(sq, color) { return ( - super.isAttacked(sq, colors) || - this.isAttackedByMarshall(sq, colors) || - this.isAttackedByCardinal(sq, colors) + super.isAttacked(sq, color) || + this.isAttackedByMarshall(sq, color) || + this.isAttackedByCardinal(sq, color) ); } - isAttackedByMarshall(sq, colors) { + isAttackedByMarshall(sq, color) { return ( - this.isAttackedBySlideNJump(sq, colors, V.MARSHALL, V.steps[V.ROOK]) || + this.isAttackedBySlideNJump(sq, color, V.MARSHALL, V.steps[V.ROOK]) || this.isAttackedBySlideNJump( sq, - colors, + color, V.MARSHALL, V.steps[V.KNIGHT], "oneStep" @@ -272,12 +276,12 @@ export const VariantRules = class GrandRules extends ChessRules { ); } - isAttackedByCardinal(sq, colors) { + isAttackedByCardinal(sq, color) { return ( - this.isAttackedBySlideNJump(sq, colors, V.CARDINAL, V.steps[V.BISHOP]) || + this.isAttackedBySlideNJump(sq, color, V.CARDINAL, V.steps[V.BISHOP]) || this.isAttackedBySlideNJump( sq, - colors, + color, V.CARDINAL, V.steps[V.KNIGHT], "oneStep" @@ -285,8 +289,8 @@ export const VariantRules = class GrandRules extends ChessRules { ); } - updateVariables(move) { - super.updateVariables(move); + postPlay(move) { + super.postPlay(move); if (move.vanish.length == 2 && move.appear.length == 1) { // Capture: update this.captured this.captured[move.vanish[1].c][move.vanish[1].p]++; @@ -297,8 +301,8 @@ export const VariantRules = class GrandRules extends ChessRules { } } - unupdateVariables(move) { - super.unupdateVariables(move); + postUndo(move) { + super.postUndo(move); if (move.vanish.length == 2 && move.appear.length == 1) this.captured[move.vanish[1].c][move.vanish[1].p]--; if (move.vanish[0].p != move.appear[0].p) @@ -317,10 +321,10 @@ export const VariantRules = class GrandRules extends ChessRules { } static GenRandInitFen(randomness) { - if (!randomness) randomness = 2; if (randomness == 0) { - return "rnbqkmcbnr/pppppppppp/10/10/10/10/10/10/PPPPPPPPPP/RNBQKMCBNR " + - "w 0 1111 - 00000000000000"; + // No castling in the official initial setup + return "r8r/1nbqkmcbn1/pppppppppp/10/10/10/10/PPPPPPPPPP/1NBQKMCBN1/R8R " + + "w 0 zzzz - 00000000000000"; } let pieces = { w: new Array(10), b: new Array(10) };