X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=22aa53e053981169373c0b9a0658de10a3976392;hp=dd4621b37707298910a6c663e67ea6dc9e59d6c0;hb=967a2686ea801d4b33129d78087651451ef1904b;hpb=d4036efea5b57656478affd7d71f53dcea0f8017 diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index dd4621b3..22aa53e0 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -81,7 +81,8 @@ import { ajax } from "@/utils/ajax"; import { getRandString, shuffle } from "@/utils/alea"; import GameList from "@/components/GameList.vue"; import ChallengeList from "@/components/ChallengeList.vue"; -import { GameStorage } from "@/utils/storage"; +import { GameStorage } from "@/utils/gameStorage"; +import { extractTime } from "@/utils/timeControl"; export default { name: "my-hall", components: { @@ -292,20 +293,21 @@ export default { } case "askgame": { - // Send my current live game (if any) - if (!!localStorage["gid"]) - { - const myGame = - { - // Minimal game informations: (fen+clock not required) - id: localStorage["gid"], - players: JSON.parse(localStorage["players"]), //array sid+id+name - vname: localStorage["vname"], - timeControl: localStorage["timeControl"], - }; - this.st.conn.send(JSON.stringify({code:"game", - game:myGame, target:data.from})); - } + // Send my current live games (if any) + // TODO: from indexedDB, through GameStorage. +// if (!!localStorage["gid"]) +// { +// const myGame = +// { +// // Minimal game informations: (fen+clock not required) +// id: localStorage["gid"], +// players: JSON.parse(localStorage["players"]), //array sid+id+name +// vname: localStorage["vname"], +// timeControl: localStorage["timeControl"], +// }; +// this.st.conn.send(JSON.stringify({code:"game", +// game:myGame, target:data.from})); +// } break; } case "identity": @@ -331,6 +333,7 @@ export default { { // Receive game from some player (+sid) // NOTE: it may be correspondance (if newgame while we are connected) + // TODO: ambiguous naming "newGame" ==> rename function ? let newGame = data.game; newGame.type = this.classifyObject(data.game); newGame.vname = newGame.vname; @@ -586,14 +589,27 @@ export default { }, // NOTE: for live games only (corr games are launched on server) newGame: function(gameInfo) { - GameStorage.init({ + // Extract times (in [milli]seconds), set clocks + const tc = extractTime(gameInfo.timeControl); + const IPlayFirst = (gameInfo.players[0].sid == this.st.user.sid); + const game = + { + // Game infos: constant gameId: gameInfo.gameId, vname: this.getVname(gameInfo.vid), fenStart: gameInfo.fen, players: gameInfo.players, timeControl: gameInfo.timeControl, - initime: (gameInfo.players[0].sid == this.st.user.sid), - }); + increment: tc.increment, + mode: "live", //function for live games only + // Game state: will be updated + fen: gameInfo.fen, + moves: [], + clocks: [...Array(gameInfo.players.length)].fill(tc.mainTime), + initime: (IPlayFirst ? Date.now() : undefined), + score: "*", + }; + GameStorage.add(game); if (this.st.settings.sound >= 1) new Audio("/sounds/newgame.mp3").play().catch(err => {}); // TODO: redirect to game @@ -605,3 +621,9 @@ export default { + +