X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FRules.vue;h=f196e355b5d8db2600ddbbe0d74a0120f45add1d;hb=92a523d1a74cbabcfd7d6ade45f25fa622815f0b;hp=322baba6540a4f28f44a4f0effbbca41066a1b0d;hpb=b7c32f1ae7f986fc8dc50dae55528f7259cfce59;p=vchess.git diff --git a/client/src/views/Rules.vue b/client/src/views/Rules.vue index 322baba6..f196e355 100644 --- a/client/src/views/Rules.vue +++ b/client/src/views/Rules.vue @@ -3,15 +3,14 @@ .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2 .button-group button(@click="display='rules'") Read the rules - button(v-show="!gameInProgress" @click="watchComputerGame") + button(v-show="!gameInProgress" @click="() => startGame('auto')") | Observe a sample game - button(v-show="!gameInProgress" @click="playAgainstComputer") + button(v-show="!gameInProgress" @click="() => startGame('versus')") | Beat the computer! button(v-show="gameInProgress" @click="stopGame") | Stop game .section-content(v-show="display=='rules'" v-html="content") - ComputerGame(v-show="display=='computer'" - :fen="fen" :mode="mode" :vname="variant.name" + ComputerGame(v-show="display=='computer'" :game-info="gameInfo" @computer-think="gameInProgress=false" @game-over="stopGame") @@ -19,6 +18,7 @@ import ComputerGame from "@/components/ComputerGame.vue"; import { store } from "@/store"; import { getDiagram } from "@/utils/printDiagram"; + export default { name: 'my-rules', components: { @@ -27,13 +27,16 @@ export default { data: function() { return { st: store.state, - variant: {id: 0, name: "_unknown"}, //...yet content: "", display: "rules", - mode: "versus", gameInProgress: false, - mycolor: "w", - fen: "", + // variables passed to ComputerGame: + gameInfo: { + vname: "_unknown", + mode: "versus", + fen: "", + userStop: false, + } }; }, watch: { @@ -58,13 +61,7 @@ export default { tryChangeVariant: async function(vname) { if (!vname || vname == "_unknown") return; - if (this.st.variants.length > 0) - { - const idxOfVar = this.st.variants.findIndex(e => e.name == vname); - this.variant = this.st.variants[idxOfVar]; - } - else - this.variant.name = vname; + this.gameInfo.vname = vname; const vModule = await import("@/variants/" + vname + ".js"); window.V = vModule.VariantRules; // Method to replace diagrams in loaded HTML @@ -75,26 +72,24 @@ export default { // (AJAX) Request to get rules content (plain text, HTML) this.content = require("raw-loader!@/rules/" + vname + "/" + this.st.lang + ".pug") + // Next two lines fix a weird issue after last update (2019-11) + .replace(/\\[n"]/g, " ") + .replace('module.exports = "', '').replace(/"$/, "") .replace(/(fen:)([^:]*):/g, replaceByDiag); }, - startGame: function() { + startGame: function(mode) { if (this.gameInProgress) return; this.gameInProgress = true; this.display = "computer"; - this.fen = V.GenRandInitFen(); + this.gameInfo.mode = mode; + this.gameInfo.userStop = false; + this.gameInfo.fen = V.GenRandInitFen(); }, stopGame: function() { this.gameInProgress = false; - this.mode = "analyze"; - }, - playAgainstComputer: function() { - this.mode = "versus"; - this.startGame(); - }, - watchComputerGame: function() { - this.mode = "auto"; - this.startGame(); + this.gameInfo.userStop = true; + this.gameInfo.mode = "analyze"; }, }, }; @@ -137,34 +132,34 @@ figure.diagram-container padding-top: 5px font-size: 0.8em - p.boxed - background-color: #FFCC66 - padding: 5px +p.boxed + background-color: #FFCC66 + padding: 5px - .stageDelimiter - color: purple +.stageDelimiter + color: purple - // To show (new) pieces, and/or there values... - figure.showPieces > img - width: 50px +// To show (new) pieces, and/or there values... +figure.showPieces > img + width: 50px - figure.showPieces > figcaption - color: #6C6C6C +figure.showPieces > figcaption + color: #6C6C6C - .section-title - padding: 0 +.section-title + padding: 0 - .section-title > h4 - padding: 5px +.section-title > h4 + padding: 5px - ol, ul:not(.browser-default) - padding-left: 20px +ol, ul:not(.browser-default) + padding-left: 20px - ul:not(.browser-default) - margin-top: 5px +ul:not(.browser-default) + margin-top: 5px - ul:not(.browser-default) > li - list-style-type: disc +ul:not(.browser-default) > li + list-style-type: disc .light-square-diag background-color: #e5e5ca