Show score message in versus mode too. Fix Ambiguous chess for pawns promotions
authorBenjamin Auder <benjamin.auder@somewhere>
Mon, 6 Apr 2020 23:03:52 +0000 (01:03 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Mon, 6 Apr 2020 23:03:52 +0000 (01:03 +0200)
client/src/components/BaseGame.vue
client/src/variants/Ambiguous.js

index 8cb1f68..ae6c128 100644 (file)
@@ -501,9 +501,9 @@ export default {
             else this.lastMove.notation += "#";
           }
         }
-        if (score != "*" && this.mode == "analyze") {
+        if (score != "*" && ["analyze", "versus"].includes(this.mode)) {
           const message = getScoreMessage(score);
-          // Just show score on screen (allow undo)
+          // Show score on screen
           this.showEndgameMsg(score + " . " + this.st.tr[message]);
         }
         return score;
index 29ab2ca..88566e7 100644 (file)
@@ -19,8 +19,21 @@ export class AmbiguousRules extends ChessRules {
     const oppCol = V.GetOppCol(color);
     if (this.subTurn == 2) {
       // Just play a normal move (which in fact only indicate a square)
+      let movesHash = {};
       return (
         super.getPotentialMovesFrom([x, y])
+        .filter(m => {
+          // Filter promotions: keep only one, since no choice now.
+          if (m.appear[0].p != m.vanish[0].p) {
+            const hash = V.CoordsToSquare(m.start) + V.CoordsToSquare(m.end);
+            if (!movesHash[hash]) {
+              movesHash[hash] = true;
+              return true;
+            }
+            return false;
+          }
+          return true;
+        })
         .map(m => {
           if (m.vanish.length == 1) m.appear[0].p = V.GOAL;
           else m.appear[0].p = V.TARGET_CODE[m.vanish[1].p];