From: Benjamin Auder Date: Sat, 2 Jul 2022 13:32:00 +0000 (+0200) Subject: Merge branch 'main' of auder.net:xogo X-Git-Url: https://git.auder.net/?p=xogo.git;a=commitdiff_plain;h=901d9d44ae85571ea671f3f2dbe26f81f0d90d66;hp=-c Merge branch 'main' of auder.net:xogo --- 901d9d44ae85571ea671f3f2dbe26f81f0d90d66 diff --combined base_rules.js index 4296ec5,ebf8f1e..d9adc0d --- a/base_rules.js +++ b/base_rules.js @@@ -1629,7 -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,9 -1643,12 +1643,9 @@@ 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