aboutsummaryrefslogtreecommitdiff
path: root/src/features/betterGuis/dungeonReadyGui.js
diff options
context:
space:
mode:
authorSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2022-09-17 19:39:05 +0800
committerSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2022-09-17 19:39:05 +0800
commit431e4fc9d1657a50ebc34b8ac24f9bfaea06417f (patch)
tree5987bb14f38d2999c682970429f34b41eb3e5826 /src/features/betterGuis/dungeonReadyGui.js
parente73f2efdf0f50aa775c540317394d46428e9704f (diff)
downloadSoopyV2-431e4fc9d1657a50ebc34b8ac24f9bfaea06417f.tar.gz
SoopyV2-431e4fc9d1657a50ebc34b8ac24f9bfaea06417f.tar.bz2
SoopyV2-431e4fc9d1657a50ebc34b8ac24f9bfaea06417f.zip
Initial move to babel + change fetch to use async/await
Diffstat (limited to 'src/features/betterGuis/dungeonReadyGui.js')
-rw-r--r--src/features/betterGuis/dungeonReadyGui.js284
1 files changed, 284 insertions, 0 deletions
diff --git a/src/features/betterGuis/dungeonReadyGui.js b/src/features/betterGuis/dungeonReadyGui.js
new file mode 100644
index 0000000..ad9a5dd
--- /dev/null
+++ b/src/features/betterGuis/dungeonReadyGui.js
@@ -0,0 +1,284 @@
+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"
+import SoopyTextElement from "../../../guimanager/GuiElement/SoopyTextElement"
+
+
+const ContainerChest = Java.type("net.minecraft.inventory.ContainerChest");
+
+class DungeonReadyGui {
+ 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.startButton.desc = new SoopyTextElement()
+ .setMaxTextScale(2)
+ .setLocation(0.05, 0.6, 0.7, 0.4)
+ .setText("");
+ this.startButton.addChild(this.startButton.desc);
+
+ this.closeMenu = 0;
+ this.nameToId = {};
+ this.nextId = 0;
+ this.currPlayers = 1;
+ this.readyBoxes = [];
+ this.confirmationCooldown = 0;
+ 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);
+ }
+
+ joinedDungeon(players) {
+ this.currPlayers = players;
+ }
+
+ startDungeon() {
+ if (Player.getContainer().getName() !== "Start Dungeon?") return;
+
+ if (!this.confirmationCooldown && World.getAllPlayers().filter(p => p.getPing() === 1).length !== this.currPlayers && !(World.getAllPlayers().filter(p => p.getPing() === 1).length === 1 && this.currPlayers === 2)) {
+ this.startButton.setText("§0Confirm starting Dungeon? (3s)");
+ this.startButton.desc.setText("§0(" + World.getAllPlayers().filter(p => p.getPing() === 1).length + "/" + this.currPlayers + " in dungeon)");
+ this.confirmationCooldown = Date.now() + 3000;
+ return;
+ }
+ if (Date.now() < this.confirmationCooldown) return;
+
+ this.startButton.visable = false;
+ Player.getContainer().click(13, false, "MIDDLE");
+ }
+
+ 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.startButton.setText("§0Start Dungeon");
+ this.startButton.desc.setText("");
+ this.confirmationCooldown = 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) {
+ this.readyBoxes[boxId].setColor(255, 150, 150);
+ if (ChatLib.removeFormatting(Player.getContainer().getStackInSlot(12 + i).getName()) === "Ready")
+ this.readyBoxes[boxId].setColor(150, 255, 150);
+
+ this.readyBoxes[boxId].setLore(Player.getContainer().getStackInSlot(3 + i).getLore());
+ this.readyBoxes[boxId].setDesc("§0" + ChatLib.removeFormatting(Player.getContainer().getStackInSlot(3 + i).getLore()[2]));
+ }
+ }
+ }
+
+
+ //select class buttons
+ if (Player.getContainer().getStackInSlot(2 + 4 * 9 + i)) {
+ this.classBoxes[i].setColor(253, 255, 227);
+ if (Player.getContainer().getStackInSlot(2 + 4 * 9 + i).getDamage() === 10)
+ this.classBoxes[i].setColor(250, 255, 150);
+
+ 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());
+
+ let isPlayerClass = false;
+ Player.getContainer().getStackInSlot(2 + 4 * 9 + i).getLore().forEach(line => {
+ if (!ChatLib.removeFormatting(line).startsWith(" - ")) return;
+ if (ChatLib.removeFormatting(line.split(" ").pop()) === Player.getName())
+ isPlayerClass = true;
+ })
+
+ if (isPlayerClass) {
+ this.currentPlayerClass = i;
+ this.classBoxes[i].setColor(150, 255, 150);
+ }
+ } 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);
+ }
+ };
+
+ if (this.confirmationCooldown) {
+ this.startButton.setText("§0Confirm starting Dungeon? (" + Math.ceil(Math.max(0, this.confirmationCooldown - Date.now()) / 1000) + "s)");
+ };
+
+ 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)
+ 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) return;
+ Player.getPlayer().field_71070_bA = event.gui.field_147002_h
+
+ if (!Player.getContainer().getName().startsWith("Catacombs - Floor ")) return;
+
+ event.gui = this.soopyGui.ctGui
+ this.soopyGui.ctGui.open();
+ 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;
+
+ this.soopyGui.open();
+ event.gui = this.soopyGui.ctGui;
+ }
+ }
+
+ keyPress(key, keyId) {
+ if (keyId === 1) //escape key
+ // this.dontOpen = 1
+ Client.currentGui.close();
+
+ if (keyId === 18) //'e' key
+ Client.currentGui.close();
+
+ }
+}
+
+export default DungeonReadyGui; \ No newline at end of file