X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAlice.js;h=d457f5f5b2afe9933b1efff5e4e539937b7c294e;hb=0b5fa571c10c5d5befc81b3984ead9b4b1a3e14e;hp=4d105069e1cb55b1773723b9dcadd04c8cf04859;hpb=a4cf093aa57faa18751e4978c1512558cce3417a;p=vchess.git diff --git a/public/javascripts/variants/Alice.js b/public/javascripts/variants/Alice.js index 4d105069..d457f5f5 100644 --- a/public/javascripts/variants/Alice.js +++ b/public/javascripts/variants/Alice.js @@ -28,6 +28,38 @@ class AliceRules extends ChessRules return (Object.keys(this.ALICE_PIECES).includes(b[1]) ? "Alice/" : "") + b; } + initVariables(fen) + { + super.initVariables(fen); + const fenParts = fen.split(" "); + const position = fenParts[0].split("/"); + if (this.kingPos["w"][0] < 0 || this.kingPos["b"][0] < 0) + { + // INIT_COL_XXX won't be used, so no need to set them for Alice kings + for (let i=0; i Should be OK as is. getPotentialMovesFrom([x,y]) @@ -93,8 +126,12 @@ class AliceRules extends ChessRules psq.p = VariantRules.ALICE_CODES[psq.p]; //goto board2 }); } - else //move on board2: mark vanishing piece as Alice - m.vanish[0].p = VariantRules.ALICE_CODES[m.vanish[0].p] + else //move on board2: mark vanishing pieces as Alice + { + m.vanish.forEach(psq => { + psq.p = VariantRules.ALICE_CODES[psq.p]; + }); + } return true; }); } @@ -127,6 +164,28 @@ class AliceRules extends ChessRules return res; } + updateVariables(move) + { + super.updateVariables(move); //standard king + const piece = this.getPiece(move.start.x,move.start.y); + const c = this.getColor(move.start.x,move.start.y); + // "l" = Alice king + if (piece == "l") + { + this.kingPos[c][0] = move.appear[0].x; + this.kingPos[c][1] = move.appear[0].y; + this.castleFlags[c] = [false,false]; + } + } + + unupdateVariables(move) + { + super.unupdateVariables(move); + const c = this.getColor(move.start.x,move.start.y); + if (this.getPiece(move.start.x,move.start.y) == "l") + this.kingPos[c] = [move.start.x, move.start.y]; + } + getNotation(move) { if (move.appear.length == 2 && move.appear[0].p == VariantRules.KING)