Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Dobutsu.js
index a5c0386..af8c4f6 100644 (file)
@@ -4,6 +4,10 @@ import { sample, shuffle } from "@/utils/alea";
 
 export class DobutsuRules extends ChessRules {
 
+  static get Options() {
+    return null;
+  }
+
   static get HasFlags() {
     return false;
   }
@@ -16,6 +20,10 @@ export class DobutsuRules extends ChessRules {
     return true;
   }
 
+  get showFirstTurn() {
+    return true;
+  }
+
   static IsGoodFen(fen) {
     if (!ChessRules.IsGoodFen(fen)) return false;
     const fenParsed = V.ParseFen(fen);
@@ -177,6 +185,7 @@ export class DobutsuRules extends ChessRules {
     }
     switch (this.getPiece(sq[0], sq[1])) {
       case V.PAWN: return this.getPotentialPawnMoves(sq);
+      case V.HEN: return this.getPotentialHenMoves(sq);
       case V.ELEPHANT: return this.getPotentialElephantMoves(sq);
       case V.GIRAFFE: return this.getPotentialGiraffeMoves(sq);
       case V.KING: return super.getPotentialKingMoves(sq);
@@ -198,12 +207,19 @@ export class DobutsuRules extends ChessRules {
     }
   }
 
+  getPotentialHenMoves(sq) {
+    const c = this.turn;
+    const forward = (c == 'w' ? -1 : 1);
+    const steps = V.steps[V.ROOK].concat([[forward, 1], [forward, -1]]);
+    return super.getSlideNJumpMoves(sq, steps, 1);
+  }
+
   getPotentialElephantMoves(sq) {
-    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], "oneStep");
+    return super.getSlideNJumpMoves(sq, V.steps[V.BISHOP], 1);
   }
 
   getPotentialGiraffeMoves(sq) {
-    return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], "oneStep");
+    return super.getSlideNJumpMoves(sq, V.steps[V.ROOK], 1);
   }
 
   getAllValidMoves() {