Antimatter Dimensions Graphs

A nice graph of various numbers in Antimatter Dimensions.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Antimatter Dimensions Graphs
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  A nice graph of various numbers in Antimatter Dimensions.
// @author       Shamus03
// @match        https://ivark.github.io/AntimatterDimensions/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ivark.github.io
// @grant        none
// @run-at       context-menu
// @license      MIT
// ==/UserScript==

(function() {
  'use strict'

  openGraphWindow()

  async function openGraphWindow() {
    const graphWindow = window.open(window.location.href, '_blank', 'width=1000,height=800')
    graphWindow.document.write(getGraphPageHtml())
    while (!graphWindow.closed) {
      graphWindow.postMessage({
        type: 'updated-game-state',
        now: Date.now(),
        currencies: {
          infinityPoints: {
            current: player.infinityPoints.log10(),
            gained: gainedInfinityPoints().log10(),
            ratePerMinute: gainedInfinityPoints().div(Time.thisInfinity.totalMinutes).log10(),
          },
          eternityPoints: {
            current: player.eternityPoints.log10(),
            gained: gainedEternityPoints().log10(),
            ratePerMinute: gainedEternityPoints().div(Time.thisEternity.totalMinutes).log10(),
          },
        },
      }, window.location.origin)

      await new Promise(resolve => setTimeout(resolve, 250))
    }
    console.log('window closed')
  }

  function getGraphPageHtml() {
    return `<!DOCTYPE html>
<html>

<head>
    <title>Antimatter Dimensions Chart</title>
    <script src="https://code.highcharts.com/stock/highstock.js"></script>
    <style>
        #container {
            height: 95vh;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="container"></div>
    </div>
</body>

<script lang="text/javascript">

    const chart = Highcharts.stockChart('container', {
        title: {
            text: name,
        },
        yAxis: [
            {
                title: {
                    text: 'Infinity Points',
                },
            },
            {
                title: {
                    text: 'Eternity Points',
                },
                opposite: false,
            },
        ],
        legend: {
            enabled: true,
        },
        credits: false,
        series: [],
    })

    function initSeries(name, key, yAxis, color) {
        const seriesCurrent = chart.addSeries({ name, yAxis, color })
        const seriesGained = chart.addSeries({ name: name + ' Gained', yAxis, color })
        const seriesRate = chart.addSeries({ name: name + ' Per Minute', yAxis, color })

        window.addEventListener('message', ev => {
            if (ev.data.type !== 'updated-game-state') return
            const { now, currencies: { [key]: { current, gained, ratePerMinute } } } = ev.data

            seriesCurrent.addPoint([now, current])
            seriesGained.addPoint([now, current + gained])
            seriesRate.addPoint([now, ratePerMinute])
        })
    }

    initSeries('Infinity Points', 'infinityPoints', 0, '#b67f33')
    initSeries('Eternity Points', 'eternityPoints', 1, '#b341e0')

</script>

<script lang="text/javascript">


</script>

</html>`
  }
})()