X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FParachute.js;h=86b1ce84f5fedb2b6195b73cc0ea374ae4f9ef07;hb=94b9fcef82470199f97b216fd53e6e57a13295c4;hp=07186352aba90ca8ed490196b6401f08113e6445;hpb=48252022d603e79280a763cd3d3a9bb4a6625b88;p=vchess.git diff --git a/client/src/variants/Parachute.js b/client/src/variants/Parachute.js index 07186352..86b1ce84 100644 --- a/client/src/variants/Parachute.js +++ b/client/src/variants/Parachute.js @@ -14,6 +14,25 @@ export class ParachuteRules extends ChessRules { return true; } + static IsGoodPosition(position) { + if (position.length == 0) return false; + const rows = position.split("/"); + if (rows.length != V.size.x) return false; + for (let row of rows) { + let sumElts = 0; + for (let i = 0; i < row.length; i++) { + if (V.PIECES.includes(row[i].toLowerCase())) sumElts++; + else { + const num = parseInt(row[i]); + if (isNaN(num)) return false; + sumElts += num; + } + } + if (sumElts != V.size.y) return false; + } + return true; + } + static ParseFen(fen) { const fenParts = fen.split(" "); return Object.assign( @@ -166,6 +185,13 @@ export class ParachuteRules extends ChessRules { return true; } + underCheck(color) { + if (this.kingPos[color][0] < 0) + // A king outside the board isn't under check + return false; + return this.isAttacked(this.kingPos[color], V.GetOppCol(color)); + } + prePlay(move) { super.prePlay(move); if (move.vanish.length == 0) this.reserve[this.turn][move.appear[0].p]--;