X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FExtinction.js;h=45ace336df4db209d710658b9430b55cd4685cf0;hb=6b7b2cf720e6255e4da0dc34fee363c456346a58;hp=75db0e1120b763975f9f0b7a5f131e6324d0a31d;hpb=6808d7a16ec1e761c6a2dffec2281c96953e4d89;p=vchess.git diff --git a/client/src/variants/Extinction.js b/client/src/variants/Extinction.js index 75db0e11..45ace336 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,8 +85,8 @@ 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() { @@ -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 => {