diff options
Diffstat (limited to 'render')
-rw-r--r-- | render/coordsGui.js | 94 | ||||
-rw-r--r-- | render/downtimeGui.js | 86 | ||||
-rw-r--r-- | render/textGuiCreator.js | 20 |
3 files changed, 200 insertions, 0 deletions
diff --git a/render/coordsGui.js b/render/coordsGui.js new file mode 100644 index 0000000..f36ccf2 --- /dev/null +++ b/render/coordsGui.js @@ -0,0 +1,94 @@ +import { + AdditiveConstraint, + animate, + Animations, + CenterConstraint, + ChildBasedMaxSizeConstraint, + ChildBasedSizeConstraint, + ConstantColorConstraint, + FillConstraint, + MaxConstraint, + ScissorEffect, + SiblingConstraint, + SubtractiveConstraint, + UIBlock, + UIImage, + UIWrappedText, + UIMultilineTextInput, + UIText, + WindowScreen, + } from "../../Elementa" + +// stylla made 2 lines of code (gamer) +const Color = Java.type("java.awt.Color") +const URL = Java.type("java.net.URL") +let ScreenW = Renderer.screen.getWidth(), + ScreenH = Renderer.screen.getHeight() + +function coordsWindow(row, column, title, command, desc, image=false, alternateText="") +{ + const coordWindow = new UIBlock(new Color(0, 0, 0, 0.5)) // 320 960 + .setX(((ScreenW/3*(column))-ScreenW/3.5).pixels()) + .setY((ScreenH/2*(row-1)+ScreenH/10.8).pixels()) + .setWidth((ScreenW/4.5).pixels()) + .setHeight((ScreenH/3.7).pixels()) + .onMouseClick(() => { + ChatLib.command(command, true) + }) + new UIText(title, false) + .setX(new CenterConstraint()) + .setY((2).pixels()) + .setTextScale((2).pixels()) + .setColor(new ConstantColorConstraint(Color.GREEN.darker())) + .setChildOf(coordWindow) + if(image == true) + { + new UIWrappedText(alternateText) + .setX((12).pixels()) + .setY((25).pixels()) + .setWidth((ScreenW/5).pixels()) + .setTextScale((1).pixels()) + .setColor(new ConstantColorConstraint(Color.WHITE)) + .setChildOf(coordWindow) + new UIImage.ofURL(new URL(desc)) + .setX(new CenterConstraint()) + .setY(new AdditiveConstraint(new CenterConstraint(), (4).pixels())) + .setWidth((ScreenW/5).pixels()) + .setHeight((ScreenH/5).pixels()) + .setChildOf(coordWindow) + } + else + { + new UIWrappedText(desc) + .setX((2).pixels()) + .setY((25).pixels()) + .setWidth((ScreenW/4.5).pixels()) + .setTextScale((1).pixels()) + .setColor(new ConstantColorConstraint(Color.WHITE)) + .setChildOf(coordWindow) + } + + return coordWindow +} + +export function openCoordsGui() +{ + ScreenW = Renderer.screen.getWidth() + ScreenH = Renderer.screen.getHeight() + const CoordsGui = new JavaAdapter(WindowScreen, { + init() { + coordsWindow(1, 1, "Spiral", "cw spiral toggle", "https://i.imgur.com/dyL30GD.png", true, "Do /cw spiral to see image. (image isn't loading.)").setChildOf(this.getWindow()) + coordsWindow(1, 2, "Throne", "cw throne toggle", "https://i.imgur.com/7BWzO1c.jpg", true, "Go back of throne. (image isn't loading)").setChildOf(this.getWindow()) + coordsWindow(1, 3, "Yog", "cw yog toggle", "https://i.imgur.com/DojoypL.jpg", true, "Go to the leftmost corner of the topaz crystal facing bal close to bal. (image isn't loading)").setChildOf(this.getWindow()) + coordsWindow(2, 1, "Divans", "cw divans toggle", "https://i.imgur.com/bkC6yp3.jpg", true, "Go to the middle of jade crystal. (image isn't loading)").setChildOf(this.getWindow()) + new UIText("Click box to enable/disable.") + .setX(new CenterConstraint()) + .setY((ScreenH-ScreenH/12).pixels()) + .setTextScale((2).pixels()) + .setColor(Color.WHITE) + .setChildOf(this.getWindow()) + }, + }) + CoordsGui.init() + GuiHandler.openGui(CoordsGui) +}
\ No newline at end of file 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 diff --git a/render/textGuiCreator.js b/render/textGuiCreator.js new file mode 100644 index 0000000..e85b7e4 --- /dev/null +++ b/render/textGuiCreator.js @@ -0,0 +1,20 @@ +export function createGui(guiObject, x, y) +// format: { leftValues: [], rightValues: [] } (must have same amount of each or error). +{ + let string = "" + guiObject.leftValues.forEach((leftValue, index) => { + if(leftValue == "Uptime") + { + let uptime = guiObject.rightValues[index], + uptimeHr = Math.floor(uptime/60/60) + + if(uptimeHr >= 1) + string += `&aUptime: &b${uptimeHr}h ${Math.floor(uptime/60) - uptimeHr*60}m\n` + else + string += `&aUptime: &b${Math.floor(uptime/60)}m ${Math.floor(uptime%60)}s\n` + } + else + string += `&a${leftValue}: &b${guiObject.rightValues[index]}\n` + }) + Renderer.drawStringWithShadow(string, x, y) +}
\ No newline at end of file |