diff options
Diffstat (limited to 'features/betterGuis/dungeonReadyGui.js')
-rw-r--r-- | features/betterGuis/dungeonReadyGui.js | 206 |
1 files changed, 192 insertions, 14 deletions
diff --git a/features/betterGuis/dungeonReadyGui.js b/features/betterGuis/dungeonReadyGui.js index 956d4a6..a0c928c 100644 --- a/features/betterGuis/dungeonReadyGui.js +++ b/features/betterGuis/dungeonReadyGui.js @@ -1,32 +1,206 @@ -import { SoopyGui } from "../../../guimanager" +import { SoopyGui, SoopyRenderEvent } from "../../../guimanager" +import SoopyKeyPressEvent from "../../../guimanager/EventListener/SoopyKeyPressEvent" +import SoopyMouseClickEvent from "../../../guimanager/EventListener/SoopyMouseClickEvent" +import BoxWithTextAndDescription from "../../../guimanager/GuiElement/BoxWithTextAndDescription" +import ButtonWithArrow from "../../../guimanager/GuiElement/ButtonWithArrow" +import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement" const ContainerChest = Java.type("net.minecraft.inventory.ContainerChest") class DungeonReadyGui { - constructor(){ + constructor() { this.checkMenu = false this.soopyGui = new SoopyGui() this.soopyGui.optimisedLocations = true + + this.mainPage = new SoopyGuiElement().setLocation(0, 0, 1, 1) + this.soopyGui.element.addChild(this.mainPage) + this.soopyGui.element.addEvent(new SoopyKeyPressEvent().setHandler((...args) => { + this.keyPress(...args) + })) + + + this.startButton = new ButtonWithArrow().setText("§0Start Dungeon").setLocation(0.25, 0.25, 0.5, 0.5).addEvent(new SoopyMouseClickEvent().setHandler(() => { + this.startDungeon() + })) + this.soopyGui.element.addChild(this.startButton) + + this.closeMenu = 0 + this.nameToId = {} + this.nextId = 0 + this.readyBoxes = [] + for (let i = 0; i < 4; i++) { + let readyBox = new BoxWithTextAndDescription().setText("§0").setDesc("§0").setLocation(0.1 + 0.2 * i, 0.75, 0.15, 0.15).setColor(255, 150, 150) + this.readyBoxes.push(readyBox) + + + readyBox.text.setLocation(0, 0, 1, 0.6) + readyBox.description.setLocation(0.05, 0.6, 0.9, 0.4) + readyBox.visable = false + + + this.mainPage.addChild(readyBox) + } + + this.classBoxes = [] + this.currentPlayerClass = -1 + this.classes = { "Healer": new Item("minecraft:potion"), "Mage": new Item("minecraft:blaze_rod"), "Berserker": new Item("minecraft:iron_sword"), "Archer": new Item("minecraft:bow"), "Tank": new Item("minecraft:leather_chestplate") } + Object.keys(this.classes).forEach((clas, i) => { + let classBox = new BoxWithTextAndDescription().setText("§0" + clas + "&7 - 0").setDesc("§0").setLocation(0.1 + 0.1625 * i, 0.1, 0.15, 0.1) + this.classBoxes.push(classBox) + + let classIndex = i + + classBox.text.setLocation(0, 0, 1, 0.6) + classBox.description.setLocation(0.05, 0.6, 0.9, 0.4) + classBox.addEvent(new SoopyRenderEvent().setHandler(() => { + let scale = 16 / Math.min(classBox.location.getWidthExact(), classBox.location.getHeightExact() / 2) * 3 + this.classes[clas].draw(classBox.location.getXExact() + classBox.location.getWidthExact() / 2 - 16 * scale / 2, classBox.location.getYExact() + classBox.location.getHeightExact() - 16 * scale - 4, scale) + })).addEvent(new SoopyMouseClickEvent().setHandler(() => { + this.clickedClass(classIndex) + })) + + this.mainPage.addChild(classBox) + }) + + this.playerReadyButton = new ButtonWithArrow().setText("§0Ready").setLocation(0.33, 0.33, 0.33, 0.33).setColor(255, 150, 150).addEvent(new SoopyMouseClickEvent().setHandler(() => { + this.ready() + })) + this.mainPage.addChild(this.playerReadyButton) } - tickMenu(){ + startDungeon() { + if (Player.getContainer().getName() !== "Start Dungeon?") return + this.startButton.visable = false + Player.getContainer().click(13, false, "MIDDLE") } - guiOpened(event){ + ready() { + if (!Player.getContainer().getName().startsWith("Catacombs - Floor ")) return + this.playerReadyButton.setColor(150, 150, 150) + for (let i = 0; i < 5; i++) { + if (ChatLib.removeFormatting(Player.getContainer().getStackInSlot(3 + i).getName().split(" ").pop()) === Player.getName()) { + Player.getContainer().drop(12 + i, false) + } + } + } + + clickedClass(classIndex) { + if (!Player.getContainer().getName().startsWith("Catacombs - Floor ")) return + + Player.getContainer().drop(2 + 4 * 9 + classIndex, false) + + this.classBoxes[classIndex].setColor(150, 150, 150) + + if (this.currentPlayerClass !== -1) this.classBoxes[this.currentPlayerClass].setColor(253, 255, 227) + } + + reset() { + this.startButton.visable = true + this.playerReadyButton.setColor(255, 150, 150) + + this.nameToId = {} + this.nextId = 0 + this.closeMenu = 0 + + this.readyBoxes.forEach(b => { + b.visable = false + }) + } + + readyInOneSecond() { + this.closeMenu = Date.now() + 1000 + } + + tick() { + if (!this.soopyGui.ctGui.isOpen()) return + + if (this.closeMenu > 0 && Date.now() > this.closeMenu) { + this.soopyGui.close() + Client.currentGui.close() + this.closeMenu = 0 + return + } + + if (Player.getContainer().getName().startsWith("Catacombs - Floor ")) { + this.startButton.visable = false + + let clickingClassButton = -1 + + for (let i = 0; i < 5; i++) { + //ready up buttons + if (Player.getContainer().getStackInSlot(3 + i)) { + if (ChatLib.removeFormatting(Player.getContainer().getStackInSlot(3 + i).getName().split(" ").pop()) === Player.getName()) { + if (Player.getContainer().getStackInSlot(12 + i)) { + if (ChatLib.removeFormatting(Player.getContainer().getStackInSlot(12 + i).getName()) === "Ready") { + this.playerReadyButton.setColor(150, 255, 150) + } else { + this.playerReadyButton.setColor(255, 150, 150) + } + } else { + this.playerReadyButton.setColor(150, 150, 150) + } + } else { + let boxId = this.nameToId[ChatLib.removeFormatting(Player.getContainer().getStackInSlot(3 + i).getName().split(" ").pop())] + + if (boxId) { + if (ChatLib.removeFormatting(Player.getContainer().getStackInSlot(12 + i).getName()) === "Ready") { + this.readyBoxes[boxId].setColor(150, 255, 150) + } else { + this.readyBoxes[boxId].setColor(255, 150, 150) + } + this.readyBoxes[boxId].setDesc("§0" + Player.getContainer().getStackInSlot(3 + i).getLore()[1]) + } + } + } + + + //select class buttons + if (Player.getContainer().getStackInSlot(2 + 4 * 9 + i)) { + if (Player.getContainer().getStackInSlot(2 + 4 * 9 + i).getDamage() === 10) { + this.currentPlayerClass = i + this.classBoxes[i].setColor(250, 255, 150) + } else { + this.classBoxes[i].setColor(253, 255, 227) + } + this.classBoxes[i].setText("§0" + Object.keys(this.classes)[i] + "§7 - " + ChatLib.removeFormatting(Player.getContainer().getStackInSlot(2 + 4 * 9 + i).getName().split(" ")[0])).setLore(Player.getContainer().getStackInSlot(2 + 4 * 9 + i).getLore()) + } else { + clickingClassButton = i + } + } + + if (clickingClassButton !== -1) { + this.classBoxes[clickingClassButton].setColor(150, 150, 150) + if (this.currentPlayerClass !== -1) this.classBoxes[this.currentPlayerClass].setColor(253, 255, 227) + } + } + + World.getAllPlayers().filter(p => p.getPing() === 1).forEach(p => { + if (p.getUUID().toString() === Player.getUUID().toString()) return + + if (p.getName() in this.nameToId) return + + this.nameToId[p.getName()] = this.nextId++ + + this.readyBoxes[this.nameToId[p.getName()]].setText("§0" + p.getName()).visable = true + }) + } + + guiOpened(event) { let name = "" - if(event.gui && event.gui.field_147002_h instanceof ContainerChest){ + if (event.gui && event.gui.field_147002_h instanceof ContainerChest) { name = event.gui.field_147002_h.func_85151_d().func_145748_c_().func_150260_c() } - if(this.soopyGui.ctGui.isOpen()){ - if(event.gui && event.gui.field_147002_h){ + if (this.soopyGui.ctGui.isOpen()) { + if (event.gui && event.gui.field_147002_h) { Player.getPlayer().field_71070_bA = event.gui.field_147002_h - if(!Player.getContainer().getName().startsWith("Catacombs - Floor ")){ - return + if (!Player.getContainer().getName().startsWith("Catacombs - Floor ")) { + return } event.gui = this.soopyGui.ctGui @@ -34,17 +208,21 @@ class DungeonReadyGui { } return } - if(name === "Start Dungeon?" || name.startsWith("Catacombs - Floor ")){ - if(event.gui && event.gui.field_147002_h) Player.getPlayer().field_71070_bA = event.gui.field_147002_h + if (name === "Start Dungeon?" || name.startsWith("Catacombs - Floor ")) { + if (event.gui && event.gui.field_147002_h) Player.getPlayer().field_71070_bA = event.gui.field_147002_h this.soopyGui.open() event.gui = this.soopyGui.ctGui } } - tick(){ - if(this.soopyGui.ctGui.isOpen()){ - this.tickMenu() + keyPress(key, keyId) { + if (keyId === 1) { //escape key + // this.dontOpen = 1 + Client.currentGui.close() + } + if (keyId === 18) { //'e' key + Client.currentGui.close() } } } |