X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=base_rules.js;h=d9adc0d93f3c131e7d8015f60fac63d8bbe51a8c;hb=901d9d44ae85571ea671f3f2dbe26f81f0d90d66;hp=beac0bb020a361c7742d4f4d17a270380d7c57cd;hpb=f31de5e46015a93dca20765da61670035ce8f491;p=xogo.git diff --git a/base_rules.js b/base_rules.js index beac0bb..d9adc0d 100644 --- a/base_rules.js +++ b/base_rules.js @@ -1629,7 +1629,7 @@ export default class ChessRules { m.appear.shift(); return; } - let finalPieces = ["p"]; + let finalPieces; if ( this.options["cannibal"] && this.board[x2][y2] != "" && @@ -1643,12 +1643,9 @@ export default class ChessRules { if (initPiece == "!") //cannibal king-pawn m.appear[0].p = C.CannibalKingCode[finalPieces[0]]; for (let i=1; i targetObj.increment()); } } + targetObj.target += + this.tryAnimateCastle(move, () => targetObj.increment()); targetObj.target += this.customAnimate(move, segments, () => targetObj.increment()); if (targetObj.target == 0) callback(); } + tryAnimateCastle(move, cb) { + if ( + this.hasCastle && + move.vanish.length == 2 && + move.appear.length == 2 && + this.isKing(0, 0, move.vanish[0].p) && + this.isKing(0, 0, move.appear[0].p) + ) { + const start = {x: move.vanish[1].x, y: move.vanish[1].y}, + end = {x: move.appear[1].x, y: move.appear[1].y}; + const segments = [ [[start.x, start.y], [end.x, end.y]] ]; + this.animateMoving(start, end, null, segments, cb); + return 1; + } + return 0; + } + // Potential other animations (e.g. for Suction variant) customAnimate(move, segments, cb) { return 0; //nb of targets