X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FExtinction.js;h=3fa5327608e50fe2e36c5305e699ada37526924b;hb=3a2a7b5fd3c6bfd0752838094c27e1fb6172d109;hp=75db0e1120b763975f9f0b7a5f131e6324d0a31d;hpb=6808d7a16ec1e761c6a2dffec2281c96953e4d89;p=vchess.git diff --git a/client/src/variants/Extinction.js b/client/src/variants/Extinction.js index 75db0e11..3fa53276 100644 --- a/client/src/variants/Extinction.js +++ b/client/src/variants/Extinction.js @@ -1,6 +1,23 @@ import { ChessRules } from "@/base_rules"; export const VariantRules = class ExtinctionRules extends ChessRules { + static IsGoodPosition(position) { + if (!ChessRules.IsGoodPosition(position)) + return false; + // Also check that each piece type is present + const rows = position.split("/"); + let pieces = {}; + for (let row of rows) { + for (let i = 0; i < row.length; i++) { + if (isNaN(parseInt(row[i])) && !pieces[row[i]]) + pieces[row[i]] = true; + } + } + if (Object.keys(pieces).length != 12) + return false; + return true; + } + setOtherVariables(fen) { super.setOtherVariables(fen); const pos = V.ParseFen(fen).position; @@ -68,16 +85,16 @@ export const VariantRules = class ExtinctionRules extends ChessRules { return true; //always at least one possible move } - underCheck() { - return false; //there is no check + filterValid(moves) { + return moves; //there is no check } getCheckSquares() { return []; } - updateVariables(move) { - super.updateVariables(move); + postPlay(move) { + super.postPlay(move); // Treat the promotion case: (not the capture part) if (move.appear[0].p != move.vanish[0].p) { this.material[move.appear[0].c][move.appear[0].p]++; @@ -88,8 +105,8 @@ export const VariantRules = class ExtinctionRules extends ChessRules { this.material[move.vanish[1].c][move.vanish[1].p]--; } - unupdateVariables(move) { - super.unupdateVariables(move); + postUndo(move) { + super.postUndo(move); if (move.appear[0].p != move.vanish[0].p) { this.material[move.appear[0].c][move.appear[0].p]--; this.material[move.appear[0].c][V.PAWN]++; @@ -100,7 +117,7 @@ export const VariantRules = class ExtinctionRules extends ChessRules { getCurrentScore() { if (this.atLeastOneMove()) { - // game not over? + // Game not over? const color = this.turn; if ( Object.keys(this.material[color]).some(p => {