import { extractTime } from "@/utils/timeControl";
-import { shuffle } from "@/utils/alea";
// TODO: show game structure
//const newItem = [
// localStorage:
init: function(o)
{
- // NOTE: when >= 3 players, better use an array + shuffle for mycolor
- const mycolor = (Math.random() < 0.5 ? "w" : "b");
- // Shuffle players order (white then black then other colors).
- const players = shuffle(o.players);
// Extract times (in [milli]seconds), set clocks, store in localStorage
const tc = extractTime(o.timeControl);
{
gameId: o.gameId,
vname: o.vname,
- mycolor: mycolor,
fenStart: o.fenStart,
- players: players,
+ players: o.players,
timeControl: o.timeControl,
increment: tc.increment,
mode: "live", //function for live games only
localStorage.setItem("gameState", JSON.stringify(gameState));
},
+ getInitime: function()
+ {
+ const gameState = JSON.parse(localStorage.getItem("gameState"));
+ return gameState.initime;
+ },
+
// localStorage:
- // TODO: also option to takeback a move ? Is fen included in move ?
+ // TODO: also option to takeback a move ?
// NOTE: for live games only (all on server for corr)
- update: function(fen, moves, clocks, started, score)
+ update: function(o) //colorIdx, move, fen, elapsed, increment, initime, score
{
let gameState = JSON.parse(localStorage.getItem("gameState"));
- if (!!fen)
+ if (!!o.move)
{
- gameState.moves = moves;
- gameState.fen = fen;
- gameState.clocks = clocks;
+ gameState.moves.push(o.move);
+ gameState.fen = o.fen;
+ gameState.clocks[o.colorIdx] += (o.increment - o.elapsed);
}
- if (!!started)
- gameState.started = started;
- if (!!score)
- gameState.score = score;
+ if (!!o.initime) //just a flag (true)
+ gameState.initime = Date.now();
+ if (!!o.score)
+ gameState.score = o.score;
localStorage.setItem("gameState", JSON.stringify(gameState));
- if (!!score && score != "*")
+ if (!!o.score && o.score != "*")
transferToDb(); //game is over
},
let objectStore = db.transaction('games').objectStore('games');
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
- // if there is still another cursor to go, keep runing this code
+ // if there is still another cursor to go, keep running this code
if (cursor)
{
games.push(cursor.value);