const fs = require('fs'); const homedir = require('@electron/remote').getCurrentWindow().homedir; const defaultStats = { times: { single: 0, local: 0, online: 0 }, results: { wins: 0, loses: 0 }, ingame: { walls: 0, laps: 0, turns: 0 } } if (!fs.existsSync(homedir + "/.kartik/stats.json")) { fs.writeFileSync(homedir + "/.kartik/stats.json", JSON.stringify(defaultStats)); } else { try { JSON.parse(fs.readFileSync(homedir + "/.kartik/stats.json").toString()); } catch (e) { fs.writeFileSync(homedir + "/.kartik/stats.json", JSON.stringify(defaultStats)); } } session = null; timer = null; current = null; webview.addEventListener('dom-ready', () => { if (webview.getURL() !== current) { if (session !== null) { require('electron').ipcRenderer.send('addstats', { catalog: "times", key: session, add: Math.floor((new Date() - timer)/1000) }); session = null; timer = null; current = null; } } if (webview.getURL().endsWith("game.html")) { // Local session = "local"; timer = new Date(); current = webview.getURL(); } if (webview.getURL().endsWith("game.html?sp")) { // Singleplayer session = "single"; timer = new Date(); current = webview.getURL(); } if (webview.getURL().endsWith("game.html?online")) { // Online session = "online"; timer = new Date(); current = webview.getURL(); } }) window.addEventListener("beforeunload", function(e){ if (session !== null) { require('electron').ipcRenderer.send('addstatsandclose', { catalog: "times", key: session, add: Math.floor((new Date() - timer)/1000) }); session = null; timer = null; current = null; e.preventDefault(); return false; } }, false);