Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Ambiguous.js
index 88566e7..5e2b32a 100644 (file)
@@ -1,7 +1,9 @@
 import { ChessRules } from "@/base_rules";
-import { randInt } from "@/utils/alea";
+import { randInt, shuffle } from "@/utils/alea";
+import { ArrayFun } from "@/utils/array";
 
 export class AmbiguousRules extends ChessRules {
+
   static get HasFlags() {
     return false;
   }
@@ -230,13 +232,13 @@ export class AmbiguousRules extends ChessRules {
       this.kingPos[this.turn] = [move.vanish[1].x, move.vanish[1].y];
   }
 
-  static GenRandInitFen(randomness) {
-    if (randomness == 0)
+  static GenRandInitFen(options) {
+    if (options.randomness == 0)
       return "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w 0 -";
 
     let pieces = { w: new Array(8), b: new Array(8) };
     for (let c of ["w", "b"]) {
-      if (c == 'b' && randomness == 1) {
+      if (c == 'b' && options.randomness == 1) {
         pieces['b'] = pieces['w'];
         break;
       }
@@ -248,8 +250,10 @@ export class AmbiguousRules extends ChessRules {
       if (rem2 == positions[1] % 2) {
         // Fix bishops (on different colors)
         for (let i=2; i<8; i++) {
-          if (positions[i] % 2 != rem2)
+          if (positions[i] % 2 != rem2) {
             [positions[1], positions[i]] = [positions[i], positions[1]];
+            break;
+          }
         }
       }
       for (let i = 0; i < 8; i++) pieces[c][positions[i]] = composition[i];
@@ -291,4 +295,5 @@ export class AmbiguousRules extends ChessRules {
     else move.vanish[1].p = V.TARGET_CODE[move.vanish[1].p];
     return notation;
   }
+
 };