Fix Dynamo FEN + computer play
authorBenjamin Auder <benjamin.auder@somewhere>
Fri, 3 Apr 2020 13:02:04 +0000 (15:02 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Fri, 3 Apr 2020 13:02:04 +0000 (15:02 +0200)
client/src/base_rules.js
client/src/variants/Dynamo.js

index 1a4a32d..167be91 100644 (file)
@@ -966,7 +966,7 @@ export const ChessRules = class ChessRules {
     let potentialMoves = [];
     for (let i = 0; i < V.size.x; i++) {
       for (let j = 0; j < V.size.y; j++) {
-        if (this.getColor(i, j) == color) {
+        if (this.board[i][j] != V.EMPTY && this.getColor(i, j) == color) {
           Array.prototype.push.apply(
             potentialMoves,
             this.getPotentialMovesFrom([i, j])
index f7d6024..91920e0 100644 (file)
@@ -88,7 +88,7 @@ export class DynamoRules extends ChessRules {
     return (
       ["appear","vanish"].map(
         mpart => {
-          if (mpart.length == 0) return "-";
+          if (this.amoves[L-1][mpart].length == 0) return "-";
           return (
             this.amoves[L-1][mpart].map(
               av => {
@@ -479,6 +479,22 @@ export class DynamoRules extends ChessRules {
     return false;
   }
 
+  // No consideration of color: all pieces could be played
+  getAllPotentialMoves() {
+    let potentialMoves = [];
+    for (let i = 0; i < V.size.x; i++) {
+      for (let j = 0; j < V.size.y; j++) {
+        if (this.board[i][j] != V.EMPTY) {
+          Array.prototype.push.apply(
+            potentialMoves,
+            this.getPotentialMovesFrom([i, j])
+          );
+        }
+      }
+    }
+    return potentialMoves;
+  }
+
   getCurrentScore() {
     if (this.subTurn == 2)
       // Move not over