var nothingness = (window.localStorage.getItem('nothings') || 1) * 1, nGain = 0.003;
var getBonus = 0;

var mx = 0, my = 0;

let clicking = false;

let counts = JSON.parse(window.localStorage.getItem('counts')) || {};

var cubePos = [];

window.addEventListener('mousemove', (e) => {
    mx = e.pageX;
    my = e.pageY;
});

document.querySelector('canvas').addEventListener('click', (e) => {
    let p1 = MDN.perspectiveMatrix(Math.PI * 100 / 180, ratio, 0.01, 1000)

    for (let cubieI in cubePos) {
        let bonus = 1 + counts.doNothing / (cubieI * .02 + 2);

        let cubie = cubePos[cubieI];
        let p2 = MDN.multiplyPoint(p1, [cubie[0], cubie[1], cubie[2], 0]);

        p2[0] /= p2[3];
        p2[1] /= p2[3];

        p2[0] -= (mx - width / 2) / width * 2;
        p2[1] += (my - height / 2) / height * 2;

        let b = 1 / (Math.sqrt(p2[0] ** 2 + p2[1] ** 2) + .03);
        b = (b * b) * 0.0001
        b *= bonus;

        getBonus += b;
    }
});

setInterval(function () {
    nothingness += nGain + getBonus;
    nGain = 0.003 + 0.003 * cubePos.length;
    getBonus *= 0.93;

    for (let ab in cubePos) {
        let a = cubePos[ab];
        let bonus = 1 + counts.doNothing / (ab* .02 + 2);
        bonus = (bonus) ** 0.05;

        let f = (nGain + getBonus * bonus * 10000 + 10) / (nothingness + 10);
        f /= (counts.intersectThings + 1);

        let dist = Math.sqrt(a[0] ** 2 + a[1] ** 2)
        dist = (f * 90 / dist) ** 0.1;

        a[3] = a[3] * 0.9 + a[0] * (dist - 1);
        a[4] = a[4] * 0.9 + a[1] * (dist - 1);

        a[0] += a[3] * 0.01;
        a[1] += a[4] * 0.01;

        a[3] += Math.sin(f * 0.1) * a[1];

        a[4] += -Math.sin(f * 0.1) * a[0];
    }
}, 1000 / 60)


document.querySelector('canvas').addEventListener('click', async (e) => {
    if (clicking) return;
    clicking = true;
    getBonus += 0.01;
    clicking = false;
})

setInterval(function () {
    window.localStorage.setItem('nothings', nothingness);
    window.localStorage.setItem('counts', JSON.stringify(counts));
}, 1000)