Add unambiguous section in the PGN + some fixes + code formatting and fix typos
[vchess.git] / client / src / variants / Magnetic.js
index 4549e84..9fc4180 100644 (file)
@@ -1,6 +1,6 @@
 import { ChessRules, PiPo } from "@/base_rules";
 
-export const VariantRules = class MagneticRules extends ChessRules {
+export class MagneticRules extends ChessRules {
   static get HasEnpassant() {
     return false;
   }
@@ -116,7 +116,8 @@ export const VariantRules = class MagneticRules extends ChessRules {
           cmove.appear[i].p = piece;
           moves.push(cmove);
         }
-        // Swap appear[i] and appear[0] for moves presentation (TODO: this is awkward)
+        // Swap appear[i] and appear[0] for moves presentation
+        // (TODO: this is awkward)
         moves.forEach(m => {
           let tmp = m.appear[0];
           m.appear[0] = m.appear[i];
@@ -145,34 +146,38 @@ export const VariantRules = class MagneticRules extends ChessRules {
     return [];
   }
 
-  updateVariables(move) {
-    super.updateVariables(move);
+  postPlay(move) {
+    super.postPlay(move);
     const c = move.vanish[0].c;
     if (move.vanish.length >= 2 && move.vanish[1].p == V.KING) {
       // We took opponent king !
       const oppCol = V.GetOppCol(c);
       this.kingPos[oppCol] = [-1, -1];
-      this.castleFlags[oppCol] = [false, false];
+      this.castleFlags[oppCol] = [8, 8];
     }
     // Did we magnetically move our (init) rooks or opponents' ones ?
     const firstRank = c == "w" ? 7 : 0;
     const oppFirstRank = 7 - firstRank;
     const oppCol = V.GetOppCol(c);
     move.vanish.forEach(psq => {
-      if (psq.x == firstRank && this.INIT_COL_ROOK[c].includes(psq.y))
-        this.castleFlags[c][psq.y == this.INIT_COL_ROOK[c][0] ? 0 : 1] = false;
+      if (
+        psq.x == firstRank &&
+        this.castleFlags[c].includes(psq.y)
+      ) {
+        this.castleFlags[c][psq.y == this.castleFlags[c][0] ? 0 : 1] = 8;
+      }
       else if (
         psq.x == oppFirstRank &&
-        this.INIT_COL_ROOK[oppCol].includes(psq.y)
-      )
-        this.castleFlags[oppCol][
-          psq.y == this.INIT_COL_ROOK[oppCol][0] ? 0 : 1
-        ] = false;
+        this.castleFlags[oppCol].includes(psq.y)
+      ) {
+        const flagIdx = (psq.y == this.castleFlags[oppCol][0] ? 0 : 1);
+        this.castleFlags[oppCol][flagIdx] = 8;
+      }
     });
   }
 
-  unupdateVariables(move) {
-    super.unupdateVariables(move);
+  postUndo(move) {
+    super.postUndo(move);
     const c = move.vanish[0].c;
     const oppCol = V.GetOppCol(c);
     if (this.kingPos[oppCol][0] < 0) {
@@ -193,7 +198,7 @@ export const VariantRules = class MagneticRules extends ChessRules {
       // King disappeared
       return color == "w" ? "0-1" : "1-0";
     if (this.atLeastOneMove())
-      // game not over
+      // Game not over
       return "*";
     return "1/2"; //no moves but kings still there
   }