Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Twokings.js
index 68910e7..b5f2b05 100644 (file)
@@ -2,6 +2,7 @@ import { ChessRules } from "@/base_rules";
 import { CoregalRules } from "@/variants/Coregal";
 
 export class TwokingsRules extends CoregalRules {
+
   static get PawnSpecs() {
     return Object.assign(
       {},
@@ -14,14 +15,14 @@ export class TwokingsRules extends CoregalRules {
     if (position.length == 0) return false;
     const rows = position.split("/");
     if (rows.length != V.size.x) return false;
-    let kings = { "w": 0, "b": 0 };
+    let kings = { 'K': 0, 'k': 0 };
     for (let row of rows) {
       let sumElts = 0;
       for (let i = 0; i < row.length; i++) {
         if (['K','k'].includes(row[i])) kings[row[i]]++;
         if (V.PIECES.includes(row[i].toLowerCase())) sumElts++;
         else {
-          const num = parseInt(row[i]);
+          const num = parseInt(row[i], 10);
           if (isNaN(num)) return false;
           sumElts += num;
         }
@@ -36,7 +37,8 @@ export class TwokingsRules extends CoregalRules {
   // Not scanning king positions. In this variant, scan the board everytime.
   scanKings() {}
 
-  getCheckSquares(color) {
+  getCheckSquares() {
+    const color = this.turn;
     let squares = [];
     const oppCol = V.GetOppCol(color);
     for (let i=0; i<V.size.x; i++) {
@@ -53,8 +55,8 @@ export class TwokingsRules extends CoregalRules {
     return squares;
   }
 
-  static GenRandInitFen(randomness) {
-    if (randomness == 0)
+  static GenRandInitFen(options) {
+    if (options.randomness == 0)
       return "rnqkkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNQKKBNR w 0 adehadeh -";
 
     const replaceBishop = (fen, first, ch1, ch2) => {
@@ -82,7 +84,7 @@ export class TwokingsRules extends CoregalRules {
     };
 
     const fen =
-      CoregalRules.GenRandInitFen(randomness)
+      CoregalRules.GenRandInitFen(options)
       .replace("q", "k").replace("Q", "K");
     // Now replace a bishop by the queen,
     // so that bishops are of different colors:
@@ -100,6 +102,11 @@ export class TwokingsRules extends CoregalRules {
     );
   }
 
+  getPotentialQueenMoves(sq) {
+    return this.getSlideNJumpMoves(sq,
+      V.steps[V.ROOK].concat(V.steps[V.BISHOP]));
+  }
+
   underCheck(color) {
     const oppCol = V.GetOppCol(color);
     for (let i=0; i<V.size.x; i++) {
@@ -122,4 +129,5 @@ export class TwokingsRules extends CoregalRules {
   }
 
   postUndo() {}
+
 };