Finish code refactoring to generate initial positions (untested)
[xogo.git] / variants / Suction / class.js
index cf5ae16..6a66a06 100644 (file)
@@ -1,5 +1,5 @@
 import ChessRules from "/base_rules.js";
-import GiveawayRules from "/variants/Giveaway/class.js";
+import {FenUtil} from "/utils/setupPieces.js";
 import PiPo from "/utils/PiPo.js";
 import Move from "/utils/Move.js";
 
@@ -41,22 +41,23 @@ export default class SuctionRules extends ChessRules {
     }
   }
 
-  genRandInitFen(seed) {
-    const options = Object.assign({mode: "suicide"}, this.options);
-    const gr = new GiveawayRules({options: options, genFenOnly: true});
-    const baseFen = gr.genRandInitFen(seed);
-    // Add empty cmove:
-    const fenParts = baseFen.split(" ");
-    let others = JSON.parse(fenParts[3]);
-    others["cmove"] = "-";
-    return fenParts.slice(0, 3).join(" ") + " " + JSON.stringify(others);
+  genRandInitBaseFen() {
+    const s = FenUtil.setupPieces(
+      ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'], {diffCol: ['b']});
+    return {
+      fen: s.b.join("") + "/pppppppp/8/8/8/8/PPPPPPPP/" +
+           s.w.join("").toUpperCase(),
+      o: {}
+    };
   }
 
-  getFen() {
-    const cmoveFen = !this.cmove
+  getPartFen(o) {
+    let parts = super.getPartFen(o);
+    const cmoveFen = o.init || !this.cmove
       ? "-"
       : C.CoordsToSquare(this.cmove.start) + C.CoordsToSquare(this.cmove.end);
-    return super.getFen().slice(0, -1) + ',"cmove":"' + cmoveFen + '"}';
+    parts["cmove"] = cmoveFen;
+    return parts;
   }
 
   getBasicMove([sx, sy], [ex, ey]) {