Some fixes, work on Eightpieces draft, add a few capturing variants
[vchess.git] / client / src / variants / Extinction.js
index 75db0e1..45ace33 100644 (file)
@@ -1,6 +1,23 @@
 import { ChessRules } from "@/base_rules";
 
 export const VariantRules = class ExtinctionRules extends ChessRules {
+  static IsGoodPosition(position) {
+    if (!ChessRules.IsGoodPosition(position))
+      return false;
+    // Also check that each piece type is present
+    const rows = position.split("/");
+    let pieces = {};
+    for (let row of rows) {
+      for (let i = 0; i < row.length; i++) {
+        if (isNaN(parseInt(row[i])) && !pieces[row[i]])
+          pieces[row[i]] = true;
+      }
+    }
+    if (Object.keys(pieces).length != 12)
+      return false;
+    return true;
+  }
+
   setOtherVariables(fen) {
     super.setOtherVariables(fen);
     const pos = V.ParseFen(fen).position;
@@ -68,8 +85,8 @@ export const VariantRules = class ExtinctionRules extends ChessRules {
     return true; //always at least one possible move
   }
 
-  underCheck() {
-    return false; //there is no check
+  filterValid(moves) {
+    return moves; //there is no check
   }
 
   getCheckSquares() {
@@ -100,7 +117,7 @@ export const VariantRules = class ExtinctionRules extends ChessRules {
 
   getCurrentScore() {
     if (this.atLeastOneMove()) {
-      // game not over?
+      // Game not over?
       const color = this.turn;
       if (
         Object.keys(this.material[color]).some(p => {