From 90347f7476a04a2152afb01dd6b776ee3ba61ea8 Mon Sep 17 00:00:00 2001 From: kawaiizenbo <48113593+kawaiizenbo@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:21:22 -0700 Subject: [PATCH] now able to toggle hud modules --- .../moonlight/ui/hud/HUDModule.java | 4 + .../ui/hud/editor/HUDEditorScreen.java | 5 ++ .../ui/hud/editor/HUDModuleButton.java | 49 +++++++++++ .../ui/hud/editor/HUDModuleList.java | 79 ++++++++++++++++++ .../moonlight/textures/gui/sprites/hud.png | Bin 0 -> 354 bytes 5 files changed, 137 insertions(+) create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java create mode 100644 src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java create mode 100644 src/main/resources/assets/moonlight/textures/gui/sprites/hud.png diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java index 2bdcf18..8f14b9b 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -55,4 +55,8 @@ public class HUDModule dragging = false; } + public void toggle() + { + enabled = !enabled; + } } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java index 76b54fb..6df96cc 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java @@ -9,10 +9,12 @@ import net.minecraft.text.Text; public class HUDEditorScreen extends Screen { public static HUDEditorScreen INSTANCE = new HUDEditorScreen(); + HUDModuleList moduleList; public HUDEditorScreen() { super(Text.literal("HUD Editor")); + moduleList = new HUDModuleList(256, 2, false); } @Override @@ -23,6 +25,7 @@ public class HUDEditorScreen extends Screen { h.render(drawContext, mouseX, mouseY, textRenderer, true, h.enabled); } + moduleList.render(drawContext, mouseX, mouseY, delta, textRenderer); } @Override @@ -32,6 +35,7 @@ public class HUDEditorScreen extends Screen { h.mouseClicked((int)mouseX, (int)mouseY, button); } + moduleList.mouseClicked((int)mouseX, (int)mouseY, button); return super.mouseClicked(mouseX, mouseY, button); } @@ -42,6 +46,7 @@ public class HUDEditorScreen extends Screen { h.mouseReleased((int)mouseX, (int)mouseY, button); } + moduleList.mouseReleased((int)mouseX, (int)mouseY, button); return super.mouseReleased(mouseX, mouseY, button); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java new file mode 100644 index 0000000..99d1bdd --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleButton.java @@ -0,0 +1,49 @@ +package me.kawaiizenbo.moonlight.ui.hud.editor; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class HUDModuleButton +{ + public HUDModule module; + public int x, y, width, height = 0; + + public HUDModuleButton(HUDModule module) + { + this.module = module; + this.width = 124; + this.height = 12; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, int x, int y, TextRenderer textRenderer) + { + this.x = x; + this.y = y; + drawContext.fill(x, y, x + width, y + height, hovered(mouseX, mouseY) ? 0xFF333333 : 0xFF222222); + drawContext.drawText(textRenderer, module.name, x+2, y+2, module.enabled ? 0x55FFFF : 0xFFFFFF, false); + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; + } + + public boolean mouseClicked(int mouseX, int mouseY, int button) + { + if (hovered(mouseX, mouseY)) + { + if (button == 0) + { + module.toggle(); + } + else if (button == 1) + { + // HUDModule Settings coming Soon TM + //MinecraftClient.getInstance().setScreen(new SettingsScreen(module)); + } + return true; + } + return false; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java new file mode 100644 index 0000000..69120b3 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDModuleList.java @@ -0,0 +1,79 @@ +package me.kawaiizenbo.moonlight.ui.hud.editor; + +import java.util.ArrayList; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.util.Identifier; + +public class HUDModuleList +{ + public int x, y, height, width = 128; + int startX, startY; + boolean dragging = false; + public boolean collapsed = false; + ArrayList buttons; + + public HUDModuleList(int initialX, int initialY, boolean collapsed) + { + this.x = initialX; + this.y = initialY; + this.collapsed = collapsed; + buttons = new ArrayList(); + for (HUDModule m : HUDModuleManager.INSTANCE.modules) + { + buttons.add(new HUDModuleButton(m)); + } + if (buttons.size() == 0) collapsed = true; + height = (buttons.size()*12) + 18; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, float delta, TextRenderer textRenderer) + { + if (dragging) + { + x = mouseX - startX; + y = mouseY - startY; + } + drawContext.fill(x, y, x+width, collapsed ? y+16 : y+height, 0xFF55FFFF); + drawContext.fill(x+2, y+2, x+(width-2), y+14, hovered(mouseX, mouseY) ? 0xFF333333 : 0xFF222222); + drawContext.drawGuiTexture(Identifier.of("moonlight", "hud"), x+2, y+2, 12, 12); + drawContext.drawText(textRenderer, "HUD Modules", x+16, y+4, 0xFFFFFFFF, false); + if (!collapsed) + { + int buttonYOffset = y+16; + for (HUDModuleButton m : buttons) + { + m.render(drawContext, mouseX, mouseY, x+2, buttonYOffset, textRenderer); + buttonYOffset += 12; + } + } + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x+2 && mouseX <= x+(width-2) && mouseY >= y+2 && mouseY <= y+14; + } + + public void mouseClicked(int mouseX, int mouseY, int button) + { + for (HUDModuleButton moduleButton : buttons) + { + if (moduleButton.mouseClicked(mouseX, mouseY, button)) return; + } + if (hovered(mouseX, mouseY) && button == 1) collapsed = !collapsed; + else if (hovered(mouseX, mouseY) && button == 0) + { + startX = (int)mouseX-x; + startY = (int)mouseY-y; + dragging = true; + } + } + + public void mouseReleased(int mouseX, int mouseY, int button) + { + dragging = false; + } +} diff --git a/src/main/resources/assets/moonlight/textures/gui/sprites/hud.png b/src/main/resources/assets/moonlight/textures/gui/sprites/hud.png new file mode 100644 index 0000000000000000000000000000000000000000..854c430d2547a9c1554f2968c467309f07683948 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=Dh+K$tP>S|=w^a7${0XPT#{76S*6!^$AV$jZP7WO)IxG?Wdp zNrRCYEY1XE8!|F6@B!&4AkJ)O0gGn<*&wjLjFI65GlDKi%*-p%%S$a$Fx4|;07^_? zXJ7%UGcYnXU|aw(6J#Ij0*E=2fNT(80-DMMRvBbz0c1gS85$UXWYf1~P4u%id11EssfP(|G51(7`eKv`Pm5EN%6