From d717b00de0267f7120cdcab12decb493d587877d Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Fri, 19 Dec 2025 16:04:07 +0200 Subject: [PATCH] Fully implemented OverlayKeyPresetViewer to GuiScriptTextArea --- .../client/gui/util/GuiScriptTextArea.java | 30 ++++++++++++++---- .../gui/util/key/OverlayKeyPresetViewer.java | 14 ++++---- .../textures/gui/keypreset_highres.png | Bin 0 -> 33151 bytes 3 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/assets/customnpcs/textures/gui/keypreset_highres.png diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java index d15c2d9a0..29bbed9bd 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiScriptTextArea.java @@ -6,6 +6,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.util.ChatAllowedCharacters; import noppes.npcs.NoppesStringUtils; import noppes.npcs.client.ClientProxy; +import noppes.npcs.client.gui.util.key.OverlayKeyPresetViewer; import noppes.npcs.client.gui.util.script.*; import noppes.npcs.client.gui.util.script.JavaTextContainer.LineData; import noppes.npcs.client.key.impl.ScriptEditorKeys; @@ -72,6 +73,8 @@ public class GuiScriptTextArea extends GuiNpcTextField { // ==================== KEYS ==================== public static final ScriptEditorKeys KEYS = new ScriptEditorKeys(); + public OverlayKeyPresetViewer KEYS_OVERLAY = new OverlayKeyPresetViewer(KEYS); + // ==================== CONSTRUCTOR ==================== @@ -86,6 +89,15 @@ public class GuiScriptTextArea extends GuiNpcTextField { this.setText(text); this.undoing = false; initializeKeyBindings(); + initGui(); + } + + public void initGui() { + int endX = x + width, endY = y + height; + KEYS_OVERLAY.initGui(endX - (width / 2) - 23, y + (height / 4), endX - 9, endY - 26); + + KEYS_OVERLAY.viewButton.scale = 0.4f; + KEYS_OVERLAY.viewButton.initGui(endX - 8, endY - 25); } // ==================== RENDERING ==================== @@ -119,9 +131,10 @@ public class GuiScriptTextArea extends GuiNpcTextField { int maxScroll = Math.max(0, this.container.linesCount - container.visibleLines); // Handle mouse wheel scroll + int wheelDelta = ((GuiNPCInterface) listener).mouseScroll = Mouse.getDWheel(); if (listener instanceof GuiNPCInterface) { - int wheelDelta = ((GuiNPCInterface) listener).mouseScroll = Mouse.getDWheel(); - if (wheelDelta != 0) + ((GuiNPCInterface) listener).mouseScroll = wheelDelta; + if (wheelDelta != 0 && !KEYS_OVERLAY.showOverlay) scroll.applyWheelScroll(wheelDelta, maxScroll); } @@ -351,6 +364,8 @@ public class GuiScriptTextArea extends GuiNpcTextField { drawRect(posX, posY, posX + 5, posY + sbSize + 2, 0xFFe0e0e0); } + + KEYS_OVERLAY.draw(xMouse, yMouse, wheelDelta); } private void scissorViewport() { @@ -436,9 +451,8 @@ public class GuiScriptTextArea extends GuiNpcTextField { private void initializeKeyBindings() { // Helper: execute action only if text area is active and enabled Consumer executeIfActive = (action) -> { - if (active && isEnabled()) { + if (active && isEnabled() && !KEYS_OVERLAY.showOverlay) action.run(); - } }; // CUT: Copy selection to clipboard and delete it @@ -582,7 +596,9 @@ public class GuiScriptTextArea extends GuiNpcTextField { */ @Override public boolean textboxKeyTyped(char c, int i) { - if (!active) return false; + KEYS_OVERLAY.keyTyped(c, i); + + if (!active || KEYS_OVERLAY.showOverlay) return false; if (this.isKeyComboCtrlA(i)) { selection.selectAll(text.length()); @@ -1358,7 +1374,7 @@ public class GuiScriptTextArea extends GuiNpcTextField { public void mouseClicked(int xMouse, int yMouse, int mouseButton) { // Determine whether click occurred inside the text area bounds this.active = xMouse >= this.x && xMouse < this.x + this.width && yMouse >= this.y && yMouse < this.y + this.height; - if (this.active) { + if (this.active && !KEYS_OVERLAY.showOverlay) { // Compute logical click position in text and reset selection/caret int clickPos = this.getSelectionPos(xMouse, yMouse); selection.reset(clickPos); @@ -1407,6 +1423,8 @@ public class GuiScriptTextArea extends GuiNpcTextField { this.lastClicked = time; activeTextfield = this; } + + KEYS_OVERLAY.mouseClicked(xMouse, yMouse, mouseButton); } // Called from GuiScreen.updateScreen() diff --git a/src/main/java/noppes/npcs/client/gui/util/key/OverlayKeyPresetViewer.java b/src/main/java/noppes/npcs/client/gui/util/key/OverlayKeyPresetViewer.java index 785f2425f..fc0cfe40a 100644 --- a/src/main/java/noppes/npcs/client/gui/util/key/OverlayKeyPresetViewer.java +++ b/src/main/java/noppes/npcs/client/gui/util/key/OverlayKeyPresetViewer.java @@ -29,6 +29,8 @@ public class OverlayKeyPresetViewer { public OverlayButton viewButton = new OverlayButton(); public LinkedList list = new LinkedList<>(); + // from 0-1, where 0.5 is half overlay width; + public float RELATIVE_MAX_DESC_WIDTH = 0.5f; private final FontRenderer font = Minecraft.getMinecraft().fontRenderer; public OverlayKeyPresetViewer(KeyPresetManager manager) { @@ -65,7 +67,6 @@ public class OverlayKeyPresetViewer { if (!aboveOverlay && !aboveButton) showOverlay = false; } - viewButton.drawButton(); } @@ -74,8 +75,6 @@ public class OverlayKeyPresetViewer { GL11.glEnable(GL11.GL_SCISSOR_TEST); GuiUtil.drawGradientRect(startX, startY, endX, endY, 0x88000000, 0x88303030); - if (scroll.maxScroll > 0) - scroll.drawBar(); GuiUtil.setScissorClip(startX, startY, scroll.maxScroll > 0 ? width - scroll.barWidth : width, height); GL11.glPushMatrix(); @@ -95,6 +94,9 @@ public class OverlayKeyPresetViewer { GL11.glPopMatrix(); GL11.glDisable(GL11.GL_SCISSOR_TEST); + + if (scroll.maxScroll > 0) + scroll.drawBar(); } public void keyTyped(char c, int i) { @@ -189,7 +191,7 @@ public class OverlayKeyPresetViewer { public void drawBar() { GL11.glPushMatrix(); - GL11.glTranslatef(endX - barWidth - 2, startY + yStartSpacing + scrollY * scrollFactor, 0); + GL11.glTranslatef(endX - barWidth - 2, startY + yStartSpacing + scrollY * scrollFactor, 1); GuiUtil.drawRectD(0, 0, barWidth, scrollbarHeight, (isMouseAboveBar(mouseX, mouseY) || isMouseDragging) ? 0xffbababa : 0xff767676); GL11.glPopMatrix(); } @@ -221,7 +223,7 @@ public class OverlayKeyPresetViewer { font.drawString("(Conflict-free)", font.getStringWidth(name) + 5, 0, 0xface40); String description = String.format("- %s", key.description); - font.drawSplitString(description, 9, font.FONT_HEIGHT, getMaxStringWidth() - 9, 0x888888); + font.drawSplitString(description, 9, font.FONT_HEIGHT+3, getMaxStringWidth() - 9, 0x888888); } public void drawBox(int offsetY) { @@ -376,7 +378,7 @@ public class OverlayKeyPresetViewer { } public int getMaxStringWidth() { - return (int) (getWidth() * 2.5f / 4); + return (int) (getWidth() * RELATIVE_MAX_DESC_WIDTH); } } diff --git a/src/main/resources/assets/customnpcs/textures/gui/keypreset_highres.png b/src/main/resources/assets/customnpcs/textures/gui/keypreset_highres.png new file mode 100644 index 0000000000000000000000000000000000000000..bd393937b2555810b9e900abdda7ca84c0d19d9c GIT binary patch literal 33151 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 ~pDP%G!K>vI?)zr@$IHH;? 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 XWwjMMZ%Gpc@X&m$^XT_O^RWK|8$S4! literal 0 HcmV?d00001