Some fixes. Screen variant computer play is still broken, seemingly
[vchess.git] / client / src / variants / Madhouse.js
index 72c41cd..1ed248d 100644 (file)
@@ -3,10 +3,13 @@ import { randInt } from "@/utils/alea";
 
 export class MadhouseRules extends ChessRules {
 
-  hoverHighlight([x, y]) {
+  hoverHighlight([x, y], side) {
     // Testing move validity results in an infinite update loop.
     // TODO: find a way to test validity anyway.
-    return (this.subTurn == 2 && this.board[x][y] == V.EMPTY);
+    return (
+      (this.subTurn == 2 && this.board[x][y] == V.EMPTY) &&
+      (!side || side == this.turn)
+    );
   }
 
   setOtherVariables(fen) {
@@ -15,6 +18,12 @@ export class MadhouseRules extends ChessRules {
     this.firstMove = [];
   }
 
+  canIplay(side, [x, y]) {
+    if (this.subTurn == 1) return super.canIplay(side, [x, y]);
+    // subturn == 2, drop a piece:
+    return side == this.turn && this.board[x][y] == V.EMPTY;
+  }
+
   getPotentialMovesFrom([x, y]) {
     if (this.subTurn == 1) return super.getPotentialMovesFrom([x, y]);
     // subTurn == 2: a move is a click, not handled here