New variant idea
[xogo.git] / variants / Benedict / class.js
index dfabddb..25e1ef8 100644 (file)
@@ -1,7 +1,6 @@
-import ChessRules from "/base_rules.js";
-import PiPo from "/utils/PiPo.js";
+import AbstractFlipRules from "/variants/_Flip/class.js";
 
-export default class BenedictRules extends ChessRules {
+export default class BenedictRules extends AbstractFlipRules {
 
   static get Options() {
     return {
@@ -25,14 +24,6 @@ export default class BenedictRules extends ChessRules {
     };
   }
 
-  get hasEnpassant() {
-    return false;
-  }
-
-  canTake() {
-    return false;
-  }
-
   pieces(color, x, y) {
     if (!this.options["cleopatra"])
       return super.pieces(color, x, y);
@@ -44,7 +35,7 @@ export default class BenedictRules extends ChessRules {
   }
 
   postProcessPotentialMoves(moves) {
-    const oppCol = C.GetOppCol(this.turn);
+    const oppCol = C.GetOppTurn(this.turn);
     let bMoves = super.postProcessPotentialMoves(moves);
     bMoves.forEach(m => {
       m.flips = [];
@@ -58,7 +49,7 @@ export default class BenedictRules extends ChessRules {
           },
           ([i1, j1], [i2, j2]) => {
             return (
-              super.canTake([i1, j1], [i2, j2]) &&
+              this.getColor(i2, j2) == oppCol &&
               (!this.options["zen"] || this.getPiece(i2, j2) == 'k')
             );
           }
@@ -70,8 +61,7 @@ export default class BenedictRules extends ChessRules {
               byCol: [oppCol],
               segments: this.options["cylinder"]
             },
-            ([i1, j1], [i2, j2]) =>
-              this.getPiece(i1, j1) != 'k' && super.canTake([i2, j2], [i1, j1])
+            ([i1, j1], [i2, j2]) => this.getPiece(i1, j1) != 'k'
           );
           Array.prototype.push.apply(attacks, zenAttacks);
         }
@@ -82,38 +72,4 @@ export default class BenedictRules extends ChessRules {
     return bMoves;
   }
 
-  playOnBoard(move) {
-    super.playOnBoard(move);
-    this.flipColorOf(move.flips);
-  }
-  undoOnBoard(move) {
-    super.undoOnBoard(move);
-    this.flipColorOf(move.flips);
-  }
-
-  flipColorOf(flips) {
-    for (let xy of flips) {
-      const newColor = C.GetOppCol(this.getColor(xy.x, xy.y));
-      this.board[xy.x][xy.y] = newColor + this.board[xy.x][xy.y][1];
-    }
-  }
-
-  // Moves cannot flip our king's color, so all are valid
-  filterValid(moves) {
-    return moves;
-  }
-
-  // A king under (regular) check flips color, and the game is over.
-  underCheck() {
-    return false;
-  }
-
-  playVisual(move, r) {
-    super.playVisual(move, r);
-    move.flips.forEach(f => {
-      this.g_pieces[f.x][f.y].classList.toggle("white");
-      this.g_pieces[f.x][f.y].classList.toggle("black");
-    });
-  }
-
 };