X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FRecycle.js;h=d91e8248847fff6547e382a6bb09216d978636bc;hb=3a2a7b5fd3c6bfd0752838094c27e1fb6172d109;hp=d99228cd0d6b7aab2c16045dfb25617dc429118a;hpb=78d64531113d4b5045ff588dd43f301a332ebae8;p=vchess.git diff --git a/client/src/variants/Recycle.js b/client/src/variants/Recycle.js index d99228cd..d91e8248 100644 --- a/client/src/variants/Recycle.js +++ b/client/src/variants/Recycle.js @@ -14,18 +14,27 @@ export const VariantRules = class RecycleRules extends ChessRules { static ParseFen(fen) { const fenParts = fen.split(" "); return Object.assign(ChessRules.ParseFen(fen), { - reserve: fenParts[5], + reserve: fenParts[5] }); } - static GenRandInitFen() { - return ChessRules.GenRandInitFen() + " 0000000000"; + getEpSquare(moveOrSquare) { + if (typeof moveOrSquare !== "object" || moveOrSquare.vanish.length > 0) + return super.getEpSquare(moveOrSquare); + // Landing move: no en-passant + return undefined; + } + + static GenRandInitFen(randomness) { + return ChessRules.GenRandInitFen(randomness) + " 0000000000"; } getFen() { - return ( - super.getFen() + " " + this.getReserveFen() - ); + return super.getFen() + " " + this.getReserveFen(); + } + + getFenForRepeat() { + return super.getFenForRepeat() + "_" + this.getReserveFen(); } getReserveFen() { @@ -74,7 +83,7 @@ export const VariantRules = class RecycleRules extends ChessRules { } // Used by the interface: - getReservePpath(color, index) { + getReservePpath(index, color) { return color + V.RESERVE_PIECES[index]; } @@ -214,31 +223,23 @@ export const VariantRules = class RecycleRules extends ChessRules { return this.getPiece(x2, y2) != V.KING; } - updateVariables(move) { - super.updateVariables(move); + postPlay(move) { + super.postPlay(move); if (move.vanish.length == 2 && move.appear.length == 2) return; //skip castle - const color = V.GetOppCol(this.turn); - if (move.vanish.length == 0) { - this.reserve[color][move.appear[0].p]--; - return; - } - else if (move.vanish.length == 2 && move.vanish[1].c == color) { + const color = move.appear[0].c; + if (move.vanish.length == 0) this.reserve[color][move.appear[0].p]--; + else if (move.vanish.length == 2 && move.vanish[1].c == color) // Self-capture this.reserve[color][move.vanish[1].p]++; - } } - unupdateVariables(move) { - super.unupdateVariables(move); + postUndo(move) { + super.postUndo(move); if (move.vanish.length == 2 && move.appear.length == 2) return; const color = this.turn; - if (move.vanish.length == 0) { - this.reserve[color][move.appear[0].p]++; - return; - } - else if (move.vanish.length == 2 && move.vanish[1].c == color) { + if (move.vanish.length == 0) this.reserve[color][move.appear[0].p]++; + else if (move.vanish.length == 2 && move.vanish[1].c == color) this.reserve[color][move.vanish[1].p]--; - } } static get SEARCH_DEPTH() {