New variant idea
[xogo.git] / variants / Antiking1 / class.js
index 9b8af78..c625e89 100644 (file)
@@ -1,5 +1,6 @@
 import ChessRules from "/base_rules.js";
 import AbstractAntikingRules from "/variants/_Antiking/class.js";
+import BerolinaPawnSpec from "/variants/_Berolina/pawnSpec.js";
 
 export default class Antiking1Rules extends AbstractAntikingRules {
 
@@ -11,45 +12,36 @@ export default class Antiking1Rules extends AbstractAntikingRules {
   }
 
   pieces(color, x, y) {
-    const pawnShift = (color == "w" ? -1 : 1);
     let res = super.pieces(color, x, y);
-    res['p'].moves = [
-      {
-        steps: [[pawnShift, 1], [pawnShift, -1]],
-        range: 1
-      }
-    ];
-    res['p'].attack = [
-      {
-        steps: [[pawnShift, 0]],
-        range: 1
-      }
-    ];
+    res['p'] = BerolinaPawnSpec(color); //no 2-squares moves
     return res;
   }
 
-  genRandInitFen() {
+  genRandInitBaseFen() {
     // Always deterministic setup
-    return (
-      '2prbkqA/2p1nnbr/2pppppp/8/8/PPPPPP2/RBNN1P2/aQKBRP2 w 0 ' +
-      '{"flags":"KAka"}'
-    );
+    return {
+      fen: "2prbkqA/2p1nnbr/2pppppp/8/8/PPPPPP2/RBNN1P2/aQKBRP2",
+      o: {"flags": "KAka"}
+    };
   }
 
   // (Anti)King flags at 1 (true) if they can knight-jump
-  setFlags(fenFlags) {
+  setFlags(fenflags) {
     this.kingFlags = { w: {}, b: {} };
-    for (let i=0; i<fenFlags.length; i++) {
-      const white = fenFlags.charCodeAt(i) <= 90;
-      const curChar = fenFlags.charAt(i).toLowerCase();
+    for (let i=0; i<fenflags.length; i++) {
+      const white = fenflags.charCodeAt(i) <= 90;
+      const curChar = fenflags.charAt(i).toLowerCase();
       this.kingFlags[white ? 'w' : 'b'][curChar] = true;
     }
   }
 
   getFlagsFen() {
     return (
-      Array.prototype.concat.apply(
-        ['w', 'b'].map(c => Object.keys(this.kingFlags[c]))
+      Array.prototype.concat.apply([],
+        ['w', 'b'].map(c => {
+          const res = Object.keys(this.kingFlags[c]).join("");
+          return (c == 'w' ? res.toUpperCase() : res);
+        })
       ).join("")
     );
   }