aboutsummaryrefslogtreecommitdiff
path: root/render/downtimeGui.js
diff options
context:
space:
mode:
Diffstat (limited to 'render/downtimeGui.js')
-rw-r--r--render/downtimeGui.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/render/downtimeGui.js b/render/downtimeGui.js
new file mode 100644
index 0000000..d40fa83
--- /dev/null
+++ b/render/downtimeGui.js
@@ -0,0 +1,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) \ No newline at end of file