X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Fgame.js;h=b308aa89405797a81c3d9315c16f7d7fc975acba;hp=462ab9a4187e2b3d8b0fb6048fbd99063b57a36e;hb=375ecdd1387e729f85ed114e82253469e4849869;hpb=6b5517b4cdd12d7480b811c94c134982c16d3814 diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index 462ab9a4..b308aa89 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -52,7 +52,7 @@ Vue.component('my-game', { h('button', { on: { click: this.clickGameSeek }, - attrs: { "aria-label": translations['New online game'] }, + attrs: { "aria-label": translations['New live game'] }, 'class': { "tooltip": true, "play": true, @@ -63,7 +63,7 @@ Vue.component('my-game', { }, [h('i', { 'class': { "material-icons": true } }, "accessibility")]) ); - if (["idle","chat","computer"].includes(this.mode)) + if (variant!="Dark" && ["idle","chat","computer"].includes(this.mode)) { actionArray.push( h('button', @@ -80,7 +80,7 @@ Vue.component('my-game', { [h('i', { 'class': { "material-icons": true } }, "computer")]) ); } - if (["idle","chat","friend"].includes(this.mode)) + if (variant!="Dark" && ["idle","chat","friend"].includes(this.mode)) { actionArray.push( h('button', @@ -298,7 +298,8 @@ Vue.component('my-game', { _.range(sizeY).map(j => { let cj = (this.mycolor=='w' ? j : sizeY-j-1); let elems = []; - if (this.vr.board[ci][cj] != VariantRules.EMPTY) + if (this.vr.board[ci][cj] != VariantRules.EMPTY && (variant!="Dark" + || this.score!="*" || this.vr.isEnlightened(ci,cj,this.mycolor))) { elems.push( h( @@ -342,6 +343,8 @@ Vue.component('my-game', { 'light-square': (i+j)%2==0, 'dark-square': (i+j)%2==1, [this.color]: true, + 'in-shadow': variant=="Dark" && this.score=="*" + && !this.vr.isEnlightened(ci,cj,this.mycolor), 'highlight': showLight && !!lm && _.isMatch(lm.end, {x:ci,y:cj}), 'incheck': showLight && incheckSq[ci][cj], }, @@ -415,7 +418,7 @@ Vue.component('my-game', { h('button', { on: { click: () => { this.mycolor = this.vr.getOppCol(this.mycolor) } }, - attrs: { "aria-label": translations['Flip'] }, + attrs: { "aria-label": translations['Flip board'] }, "class": { "play": true, "spaceleft": true, @@ -568,7 +571,7 @@ Vue.component('my-game', { { attrs: { "id": "titleFenedit" }, "class": { "section": true }, - domProps: { innerHTML: translations["Position + flags (FEN):"] }, + domProps: { innerHTML: translations["Game state (FEN):"] }, } ), h('input', @@ -919,24 +922,27 @@ Vue.component('my-game', { ) ); } - // Show current FEN - elementArray.push( - h('div', - { - attrs: { id: "fen-div" }, - "class": { "section-content": true }, - }, - [ - h('p', - { - attrs: { id: "fen-string" }, - domProps: { innerHTML: this.vr.getBaseFen() }, - "class": { "text-center": true }, - } - ) - ] - ) - ); + if (variant != "Dark" || this.score!="*") + { + // Show current FEN + elementArray.push( + h('div', + { + attrs: { id: "fen-div" }, + "class": { "section-content": true }, + }, + [ + h('p', + { + attrs: { id: "fen-string" }, + domProps: { innerHTML: this.vr.getBaseFen() }, + "class": { "text-center": true }, + } + ) + ] + ) + ); + } } return h( 'div', @@ -1211,6 +1217,7 @@ Vue.component('my-game', { delete localStorage[prefix+"score"]; }, // HACK because mini-css tooltips are persistent after click... + // NOTE: seems to work only in chrome/chromium. TODO... getRidOfTooltip: function(elt) { elt.style.visibility = "hidden"; setTimeout(() => { elt.style.visibility="visible"; }, 100); @@ -1356,6 +1363,7 @@ Vue.component('my-game', { const fen = localStorage.getItem(prefix+"fen"); const score = localStorage.getItem(prefix+"score"); //set in "endGame()" this.fenStart = localStorage.getItem(prefix+"fenStart"); + this.vr = new VariantRules(fen, moves); if (mode == "human") { this.gameId = localStorage.getItem("gameId"); @@ -1364,8 +1372,11 @@ Vue.component('my-game', { code:"ping",oppid:this.oppid,gameId:this.gameId})); } else + { this.compWorker.postMessage(["init",fen]); - this.vr = new VariantRules(fen, moves); + if (this.mycolor != this.vr.turn) + this.playComputerMove(); + } if (moves.length > 0) { const lastMove = moves[moves.length-1];