X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=public%2Fjavascripts%2Fcomponents%2Fgame.js;h=04185a7835e8cb10c84fa6190af25846f3f1b013;hb=b204a262a8a87f41aea79d3d13e6b907bedbcec4;hp=fcae2f11571facd13ad90f55965209f1eeb9d2a0;hpb=c94bc81252c82c9caf7570b4c8c7f139e124ff85;p=vchess.git diff --git a/public/javascripts/components/game.js b/public/javascripts/components/game.js index fcae2f11..04185a78 100644 --- a/public/javascripts/components/game.js +++ b/public/javascripts/components/game.js @@ -17,6 +17,7 @@ Vue.component('my-game', { incheck: [], pgnTxt: "", expert: document.cookie.length>0 ? document.cookie.substr(-1)=="1" : false, + gameId: "", //used to limit computer moves' time }; }, render(h) { @@ -129,7 +130,7 @@ Vue.component('my-game', { { 'class': { 'board': true, - ['board'+sizeX]: true, + ['board'+sizeY]: true, }, style: { 'width': (100/this.choices.length) + "%", @@ -207,7 +208,7 @@ Vue.component('my-game', { { 'class': { 'board': true, - ['board'+sizeX]: true, + ['board'+sizeY]: true, 'light-square': (i+j)%2==0 && (this.expert || !highlight), 'dark-square': (i+j)%2==1 && (this.expert || !highlight), 'highlight': !this.expert && highlight, @@ -239,23 +240,77 @@ Vue.component('my-game', { ); } elementArray.push(gameDiv); - // if (!!vr.reserve) - // { - // let reserve = h('div', - // {'class':{'game':true}}, [ - // h('div', - // { 'class': { 'row': true }}, - // [ - // h('div', - // {'class':{'board':true}}, - // [h('img',{'class':{"piece":true},attrs:{"src":"/images/pieces/wb.svg"}})] - // ) - // ] - // ) - // ], - // ); - // elementArray.push(reserve); - // } + if (!!this.vr.reserve) + { + const shiftIdx = (this.mycolor=="w" ? 0 : 1); + let myReservePiecesArray = []; + for (let i=0; i { + if (gameId != this.gameId) + return; //game stopped const L = this.vr.moves.length; if (nbMoves == L || !this.vr.moves[L-1].notation) //move search didn't finish this.vr.shouldReturn = true; @@ -677,6 +736,19 @@ Vue.component('my-game', { }, mousedown: function(e) { e = e || window.event; + let ingame = false; + let elem = e.target; + while (!ingame && elem !== null) + { + if (elem.classList.contains("game")) + { + ingame = true; + break; + } + elem = elem.parentElement; + } + if (!ingame) //let default behavior (click on button...) + return; e.preventDefault(); //disable native drag & drop if (!this.selectedPiece && e.target.classList.contains("piece")) { @@ -696,7 +768,8 @@ Vue.component('my-game', { this.possibleMoves = this.mode!="idle" && this.vr.canIplay(this.mycolor,startSquare) ? this.vr.getPossibleMovesFrom(startSquare) : []; - e.target.parentNode.appendChild(this.selectedPiece); + // Next line add moving piece just after current image (required for Crazyhouse reserve) + e.target.parentNode.insertBefore(this.selectedPiece, e.target.nextSibling); } }, mousemove: function(e) {