X-Git-Url: https://git.auder.net/?p=xogo.git;a=blobdiff_plain;f=base_rules.js;h=ebf8f1e388555c9ec28efaf0805797ab5aac29cd;hp=beac0bb020a361c7742d4f4d17a270380d7c57cd;hb=462947f0a6c5f33033bbee5d42d38149be6d51cb;hpb=f31de5e46015a93dca20765da61670035ce8f491 diff --git a/base_rules.js b/base_rules.js index beac0bb..ebf8f1e 100644 --- a/base_rules.js +++ b/base_rules.js @@ -2583,12 +2583,31 @@ export default class ChessRules { this.animateFading(arr, () => 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