Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Circular.js
index 73f87aa..333ad32 100644 (file)
@@ -3,6 +3,7 @@ import { ArrayFun } from "@/utils/array";
 import { shuffle } from "@/utils/alea";
 
 export class CircularRules extends ChessRules {
+
   static get HasCastle() {
     return false;
   }
@@ -34,14 +35,16 @@ export class CircularRules extends ChessRules {
     this.pawnFlags = flags;
   }
 
-  static GenRandInitFen(randomness) {
-    if (randomness == 0)
-      return "8/8/pppppppp/rnbqkbnr/8/8/PPPPPPPP/RNBQKBNR w 0 1111111111111111";
+  static GenRandInitFen(options) {
+    if (options.randomness == 0) {
+      return "8/8/pppppppp/rnbqkbnr/8/8/PPPPPPPP/RNBQKBNR " +
+        "w 0 1111111111111111";
+    }
 
     let pieces = { w: new Array(8), b: new Array(8) };
     // Shuffle pieces on first and last rank
     for (let c of ["w", "b"]) {
-      if (c == 'b' && randomness == 1) {
+      if (c == 'b' && options.randomness == 1) {
         pieces['b'] = pieces['w'];
         break;
       }
@@ -53,8 +56,10 @@ export class CircularRules 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];
@@ -87,7 +92,7 @@ export class CircularRules extends ChessRules {
       let j = y + step[1];
       while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) {
         moves.push(this.getBasicMove([x, y], [i, j]));
-        if (oneStep !== undefined) continue outerLoop;
+        if (oneStep) continue outerLoop;
         i = V.ComputeX(i + step[0]);
         j += step[1];
       }
@@ -219,4 +224,5 @@ export class CircularRules extends ChessRules {
   static get SEARCH_DEPTH() {
     return 2;
   }
+
 };