diff --git a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java index 7c737f5..8023763 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java +++ b/src/main/java/me/kawaiizenbo/moonlight/mixin/InGameHudMixin.java @@ -9,6 +9,7 @@ import me.kawaiizenbo.moonlight.module.ModuleManager; import me.kawaiizenbo.moonlight.module.modules.HUDEnabler; import me.kawaiizenbo.moonlight.ui.LegacyHUD; import me.kawaiizenbo.moonlight.ui.ModulesListOverlay; +import me.kawaiizenbo.moonlight.ui.hud.HUDRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.render.RenderTickCounter; @@ -23,7 +24,7 @@ public class InGameHudMixin { if (hudModule.enabled) { if (hudModule.legacyHud.value) LegacyHUD.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); - // wip + else HUDRenderer.INSTANCE.render(drawContext); } if (ModuleManager.INSTANCE.getModuleByName("ModulesList").enabled) ModulesListOverlay.INSTANCE.render(drawContext, drawContext.getScaledWindowWidth(), drawContext.getScaledWindowHeight()); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java index a926a3b..ac5f916 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/clickgui/SettingsScreen.java @@ -3,7 +3,7 @@ package me.kawaiizenbo.moonlight.ui.clickgui; import me.kawaiizenbo.moonlight.module.Module; import me.kawaiizenbo.moonlight.module.settings.Setting; import me.kawaiizenbo.moonlight.ui.SetScreenButton; -import me.kawaiizenbo.moonlight.ui.hud.HUDEditorScreen; +import me.kawaiizenbo.moonlight.ui.hud.editor.HUDEditorScreen; import me.kawaiizenbo.moonlight.util.ColorUtils; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -73,6 +73,7 @@ public class SettingsScreen extends Screen dragging = true; } backButton.mouseClicked((int)mouseX, (int)mouseY); + editButton.mouseClicked((int)mouseX, (int)mouseY); for (Setting setting : module.settings) { setting.mouseClicked(mouseX, mouseY, button); diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java new file mode 100644 index 0000000..e44c719 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModule.java @@ -0,0 +1,54 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class HUDModule +{ + public int x, y, height, width; + public String name; + int startX, startY; + boolean dragging = false; + + public HUDModule(String name, int x, int y) + { + this.name = name; + this.x = x; + this.y = y; + } + + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + { + if (editMode) + { + if (dragging) + { + x = mouseX - startX; + y = mouseY - startY; + } + drawContext.fill(x-1, y-1, x+width+1, y+height+1, 0xFF55FFFF); + drawContext.fill(x, y, x+width, y+height, 0xFF222222); + } + } + + public boolean hovered(int mouseX, int mouseY) + { + return mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height; + } + + public void mouseClicked(int mouseX, int mouseY, int button) + { + 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/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java new file mode 100644 index 0000000..bd48064 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDModuleManager.java @@ -0,0 +1,37 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import java.util.ArrayList; + +import me.kawaiizenbo.moonlight.ui.hud.modules.TestModuleHUD; + +public class HUDModuleManager +{ + public static HUDModuleManager INSTANCE = new HUDModuleManager(); + public ArrayList modules = new ArrayList<>(); + + public HUDModuleManager() + { + registerModules( + new TestModuleHUD(0, 0) + ); + } + + private void registerModules(HUDModule... modules) + { + for (HUDModule module : modules) { + this.modules.add(module); + } + } + + public HUDModule getModuleByName(String moduleName) + { + for(HUDModule module : modules) + { + if ((module.name.trim().equalsIgnoreCase(moduleName))) + { + return module; + } + } + return null; + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java new file mode 100644 index 0000000..5fd47bc --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDRenderer.java @@ -0,0 +1,22 @@ +package me.kawaiizenbo.moonlight.ui.hud; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; + +public class HUDRenderer +{ + public static HUDRenderer INSTANCE = new HUDRenderer(); + private MinecraftClient mc = MinecraftClient.getInstance(); + + public void render(DrawContext drawContext) + { + // do not draw if F3 enabled + if (mc.getDebugHud().shouldShowDebugHud()) return; + + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + // mouse coords are not needed when not in edit mode + h.render(drawContext, 0, 0, mc.textRenderer, false); + } + } +} diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java similarity index 61% rename from src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java rename to src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java index 27c047f..b4acc21 100644 --- a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/HUDEditorScreen.java +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/editor/HUDEditorScreen.java @@ -1,5 +1,7 @@ -package me.kawaiizenbo.moonlight.ui.hud; +package me.kawaiizenbo.moonlight.ui.hud.editor; +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import me.kawaiizenbo.moonlight.ui.hud.HUDModuleManager; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; @@ -17,17 +19,29 @@ public class HUDEditorScreen extends Screen public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) { this.renderBackground(drawContext, mouseX, mouseY, delta); + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.render(drawContext, mouseX, mouseY, textRenderer, true); + } } @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.mouseClicked((int)mouseX, (int)mouseY, button); + } return super.mouseClicked(mouseX, mouseY, button); } @Override public boolean mouseReleased(double mouseX, double mouseY, int button) { + for (HUDModule h : HUDModuleManager.INSTANCE.modules) + { + h.mouseReleased((int)mouseX, (int)mouseY, button); + } return super.mouseReleased(mouseX, mouseY, button); } diff --git a/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java new file mode 100644 index 0000000..0e45d61 --- /dev/null +++ b/src/main/java/me/kawaiizenbo/moonlight/ui/hud/modules/TestModuleHUD.java @@ -0,0 +1,22 @@ +package me.kawaiizenbo.moonlight.ui.hud.modules; + +import me.kawaiizenbo.moonlight.ui.hud.HUDModule; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; + +public class TestModuleHUD extends HUDModule +{ + public TestModuleHUD(int x, int y) + { + super("Test HUD Module", x, y); + this.width = 96; + this.height = 12; + } + + @Override + public void render(DrawContext drawContext, int mouseX, int mouseY, TextRenderer textRenderer, boolean editMode) + { + super.render(drawContext, mouseX, mouseY, textRenderer, editMode); + drawContext.drawText(textRenderer, "heloooooo", x, y, 0x55FFFF, false); + } +}