Experimental board size auto-adjust
[vchess.git] / client / src / components / BaseGame.vue
index ee8b1fc..ee3bea1 100644 (file)
@@ -22,6 +22,7 @@ div#baseGame
         :incheck="incheck"
         @play-move="play"
         @click-square="clickSquare"
+        @rendered="adjustSize"
       )
       #turnIndicator(v-if="showTurn") {{ turn }}
       #controls.button-group
@@ -43,6 +44,7 @@ div#baseGame
       p#fenAnalyze(v-show="showFen") {{ (!!vr ? vr.getFen() : "") }}
     #movesList
       MoveList(
+        ref="moveslist"
         :show="showMoves"
         :canAnalyze="canAnalyze"
         :canDownload="allowDownloadPGN"
@@ -167,7 +169,8 @@ export default {
       baseGameDiv.tabIndex = 0;
       baseGameDiv.addEventListener("click", this.focusBg);
       baseGameDiv.addEventListener("keydown", this.handleKeys);
-      baseGameDiv.addEventListener("wheel", this.handleScroll);
+      if (this.st.settings.scrollmove)
+        baseGameDiv.addEventListener("wheel", this.handleScroll);
     }
     document.getElementById("eogDiv")
       .addEventListener("click", processModalClick);
@@ -205,6 +208,9 @@ export default {
       if (e.deltaY < 0) this.undo();
       else if (e.deltaY > 0) this.play();
     },
+    adjustSize: function() {
+      this.$refs["moveslist"].adjustBoard("vertical");
+    },
     redrawBoard: function() {
       this.$refs["board"].re_setDrawings();
     },
@@ -340,6 +346,7 @@ export default {
         pgn += '[Url "' + params.serverUrl + '/game/' + this.game.id + '"]\n';
       if (!!this.game.cadence)
         pgn += '[Cadence "' + this.game.cadence + '"]\n';
+      pgn += '[Options "' + JSON.stringify(this.game.options) + '"]\n';
       pgn += '\n';
       for (let i = 0; i < this.moves.length; i += 2) {
         if (i > 0) pgn += " ";
@@ -520,7 +527,8 @@ export default {
           }
           this.inMultimove = true; //potentially
           this.cursor++;
-        } else if (!navigate) {
+        }
+        else if (!navigate) {
           // Already in the middle of a multi-move
           const L = this.moves.length;
           if (!Array.isArray(this.moves[L-1]))
@@ -548,7 +556,8 @@ export default {
               if (moveIdx < move.length) setTimeout(executeMove, 500);
               else afterMove(smove, initurn);
             });
-          } else {
+          }
+          else {
             playSubmove(smove);
             if (moveIdx < move.length) executeMove();
             else afterMove(smove, initurn);
@@ -567,7 +576,7 @@ export default {
           }
         }
         if (score != "*" && ["analyze", "versus"].includes(this.mode)) {
-          const message = getScoreMessage(score);
+          const message = getScoreMessage(score, V.ReverseColors);
           // Show score on screen
           this.showEndgameMsg(score + " . " + this.st.tr[message]);
         }
@@ -600,7 +609,8 @@ export default {
               const L = this.moves.length;
               // NOTE: always emit the score, even in unfinished
               this.$emit("newmove", this.moves[L-1], { score: this.score });
-            } else {
+            }
+            else {
               this.inPlay = false;
               if (this.stackToPlay.length > 0)
                 // Move(s) arrived in-between
@@ -659,7 +669,8 @@ export default {
         this.incheck = this.vr.getCheckSquares();
         if (this.cursor >= 0) this.lastMove = this.moves[this.cursor];
         else this.lastMove = null;
-      } else {
+      }
+      else {
         if (!move) {
           const minCursor =
             this.moves.length > 0 && this.moves[0].notation == "..."