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);