Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Pocketknight.js
index 6b92a1f..ad17f93 100644 (file)
@@ -2,7 +2,8 @@ import { ChessRules, Move, PiPo } from "@/base_rules";
 import { randInt } from "@/utils/alea";
 
 export class PocketknightRules extends ChessRules {
-  hoverHighlight(x, y) {
+
+  hoverHighlight([x, y]) {
     // 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);
@@ -32,10 +33,9 @@ export class PocketknightRules extends ChessRules {
     this.subTurn = 1;
   }
 
-  static GenRandInitFen(randomness) {
+  static GenRandInitFen(options) {
     // Add 2 knight flags
-    return ChessRules.GenRandInitFen(randomness)
-      .slice(0, -2) + "11 -";
+    return ChessRules.GenRandInitFen(options).slice(0, -2) + "11 -";
   }
 
   getFlagsFen() {
@@ -44,6 +44,12 @@ export class PocketknightRules extends ChessRules {
     );
   }
 
+  canIplay(side, [x, y]) {
+    if (this.subTurn == 1) return super.canIplay(side, [x, y]);
+    // subturn == 2, drop the knight:
+    return side == this.turn && this.board[x][y] == V.EMPTY;
+  }
+
   getPotentialMovesFrom([x, y]) {
     if (this.subTurn == 1) {
       let moves = super.getPotentialMovesFrom([x, y]);
@@ -282,4 +288,5 @@ export class PocketknightRules extends ChessRules {
     // Knight landing:
     return "N@" + V.CoordsToSquare(move.end);
   }
+
 };