Experimental: improve animation, reduce lags in stack moves sending. Add Allmate
[xogo.git] / variants / Suction / class.js
index db10e58..dbaefa0 100644 (file)
@@ -42,8 +42,8 @@ export default class SuctionRules extends ChessRules {
   }
 
   genRandInitFen(seed) {
-    const gr = new GiveawayRules(
-      {mode: "suicide", options: this.options, genFenOnly: true});
+    const options = Object.assign({mode: "suicide"}, this.options);
+    const gr = new GiveawayRules({options: options, genFenOnly: true});
     // Add empty cmove:
     return (
       gr.genRandInitFen(seed).slice(0, -17) + '{"enpassant":"-","cmove":"-"}');
@@ -53,7 +53,7 @@ export default class SuctionRules extends ChessRules {
     const cmoveFen = !this.cmove
       ? "-"
       : C.CoordsToSquare(this.cmove.start) + C.CoordsToSquare(this.cmove.end);
-    return super.getFen().slice(0, -1) + ',"' + cmoveFen + '"}';
+    return super.getFen().slice(0, -1) + ',"cmove":"' + cmoveFen + '"}';
   }
 
   getBasicMove([sx, sy], [ex, ey]) {
@@ -110,4 +110,13 @@ export default class SuctionRules extends ChessRules {
     return "*";
   }
 
+  // Better animation for swaps
+  customAnimate(move, segments, cb) {
+    if (move.vanish.length < 2)
+      return 0;
+    super.animateMoving(move.end, move.start, null,
+                        segments.reverse().map(s => s.reverse()), cb);
+    return 1;
+  }
+
 };