aboutsummaryrefslogtreecommitdiff
path: root/render/downtimeGui.js
blob: d40fa8381318d41f4eacacb12fe1a904e325b76b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import settings from "../settings"
import { createGui } from "./textGuiCreator"
import constants from "../util/constants"

const downtimeGui = new Gui()
let oldFuel = 0,
 timeAtLastFuel = 0,
 overallDowntime = 0,
 trackingDowntime = false,
 downtime = 0,
 downtimeCount = 0,
 uptime // for average


export function openDowntimeGui()
{
    downtimeGui.open()
}
 

register("dragged", (dx, dy, x, y) => {
    if (!downtimeGui.isOpen()) return
    constants.downtimedata.x = x
    constants.downtimedata.y = y
    constants.downtimedata.save()
})

register('actionbar', (xp) => {
    if(!settings.downtimeTracker) return
    if(Player.getHeldItem() == null) return
    let heldItem = Player.getHeldItem().getNBT().toObject()["tag"]["ExtraAttributes"],
     newFuel = parseInt(heldItem["drill_fuel"]) // credit to DocilElm because I'm lazy.

    if(!newFuel) return
    else if(oldFuel == 0) oldFuel = newFuel
    else if(oldFuel !== newFuel) 
    {
        if(timeAtLastFuel == 0) 
        { 
            timeAtLastFuel = Date.now()
            return 
        }
        downtime = Date.now() - timeAtLastFuel
        overallDowntime += downtime
        downtimeCount += 1
        timeAtLastFuel = Date.now()
        trackingDowntime = true
        oldFuel = newFuel
    }
}).setCriteria('${*}+${xp} Mining ${*}')


register("renderOverlay", () => {
    if (downtimeGui.isOpen()) 
    {
        let txt = "Drag to move."
        Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2)
        createGui(
            {leftValues: ["Downtime", "Overall Downtime", "Average Downtime", "Uptime"], rightValues: [0, 0, 0, 0]}, 
            constants.downtimedata.x, 
            constants.downtimedata.y
        )
        return
    }
    if (downtimeCount == 0 || !trackingDowntime) return
    let avgDowntime = Math.ceil((overallDowntime/downtimeCount)*100) / 100
    createGui(
        {leftValues: ["Downtime", "Overall Downtime", "Average Downtime", "Uptime"], rightValues: [downtime, overallDowntime, avgDowntime, uptime]}, 
        constants.downtimedata.x, 
        constants.downtimedata.y
    )
})


register("step", () => {
    if((Date.now()-timeAtLastFuel)/1000 >= 60)
    {
        uptime = 0
        oldFuel = 0
        overallDowntime = 0
        timeAtLastFuel = 0
        trackingDowntime = false
    } // over 60 seconds then stop making gui
    else
        uptime += 1
}).setFps(1)