From 435ff3f5de4bf5178fc6df0848f50bd800ddf87c Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Fri, 14 Mar 2025 06:24:04 +0200 Subject: [PATCH] Fixes and tweaks --- .../noppes/npcs/client/gui/util/GuiUtil.java | 17 +++++++++++------ .../util/animation/AnimationGraphEditor.java | 2 +- .../animation/OverlayKeyPresetViewer.java | 4 ++-- .../util/animation/panel/PanelFrameType.java | 13 ++++++++----- .../constants/animation/EnumFrameType.java | 2 +- .../customnpcs/textures/gui/animation.png | Bin 5568 -> 10166 bytes 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiUtil.java b/src/main/java/noppes/npcs/client/gui/util/GuiUtil.java index fda94e343..10c86a40f 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiUtil.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiUtil.java @@ -43,7 +43,7 @@ public class GuiUtil { drawRectD(x, startY + 1, x + 1, endY, color); } - public static void drawRectD(double left, double top, double right, double bottom, int color) { + public static void drawRectD(double left, double top, double right, double bottom) { double j1; if (left < right) { @@ -58,15 +58,10 @@ public class GuiUtil { bottom = j1; } - float f3 = (float) (color >> 24 & 255) / 255.0F; - float f = (float) (color >> 16 & 255) / 255.0F; - float f1 = (float) (color >> 8 & 255) / 255.0F; - float f2 = (float) (color & 255) / 255.0F; Tessellator tessellator = Tessellator.instance; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(f, f1, f2, 1); tessellator.startDrawingQuads(); tessellator.addVertex(left, bottom, 0.0D); tessellator.addVertex(right, bottom, 0.0D); @@ -77,6 +72,16 @@ public class GuiUtil { GL11.glDisable(GL11.GL_BLEND); } + + public static void drawRectD(double left, double top, double right, double bottom, int color) { + float f3 = (float) (color >> 24 & 255) / 255.0F; + float f = (float) (color >> 16 & 255) / 255.0F; + float f1 = (float) (color >> 8 & 255) / 255.0F; + float f2 = (float) (color & 255) / 255.0F; + GL11.glColor4f(f, f1, f2, f3); + drawRectD(left, top, right, bottom); + } + public static void drawGradientRect(int left, int top, int right, int bottom, int startColor, int endColor) { double zLevel = 0; diff --git a/src/main/java/noppes/npcs/client/gui/util/animation/AnimationGraphEditor.java b/src/main/java/noppes/npcs/client/gui/util/animation/AnimationGraphEditor.java index 808fab0d4..e820f989d 100644 --- a/src/main/java/noppes/npcs/client/gui/util/animation/AnimationGraphEditor.java +++ b/src/main/java/noppes/npcs/client/gui/util/animation/AnimationGraphEditor.java @@ -13,7 +13,7 @@ public class AnimationGraphEditor extends ViewportGraphEditor { public void initGui(int startX, int startY, int endX, int endY) { super.initGui(startX, startY, endX, endY); - frameTypePanel.initGui(startX - 60, startY, startX, endY); + frameTypePanel.initGui(startX - 70, startY, startX, endY); } public void drawScreen(int mouseX, int mouseY, float partialTicks, int wheel) { diff --git a/src/main/java/noppes/npcs/client/gui/util/animation/OverlayKeyPresetViewer.java b/src/main/java/noppes/npcs/client/gui/util/animation/OverlayKeyPresetViewer.java index 8376042da..ec33ff699 100644 --- a/src/main/java/noppes/npcs/client/gui/util/animation/OverlayKeyPresetViewer.java +++ b/src/main/java/noppes/npcs/client/gui/util/animation/OverlayKeyPresetViewer.java @@ -154,11 +154,11 @@ public class OverlayKeyPresetViewer { totalHeight += element.getHeight(); totalHeight -= yStartSpacing; + scroll.maxScroll = Math.max(0, totalHeight - height); + heightFactor = height / totalHeight; scrollbarHeight = Math.max((int) (height * heightFactor), 20); scrollFactor = (height - yStartSpacing - scrollbarHeight) / maxScroll; - - scroll.maxScroll = Math.max(0, totalHeight - height); } public void update(int wheel) { diff --git a/src/main/java/noppes/npcs/client/gui/util/animation/panel/PanelFrameType.java b/src/main/java/noppes/npcs/client/gui/util/animation/panel/PanelFrameType.java index 4f06fe377..a2ce00db4 100644 --- a/src/main/java/noppes/npcs/client/gui/util/animation/panel/PanelFrameType.java +++ b/src/main/java/noppes/npcs/client/gui/util/animation/panel/PanelFrameType.java @@ -12,7 +12,7 @@ public class PanelFrameType { public int startX, startY, endX, endY, width, height; public float scale = 0.6f; - public int elementHeight = 12, elementSpacing = 3; + public int elementHeight = 10, elementSpacing = 2; public LinkedList list = new LinkedList<>(); @@ -33,9 +33,10 @@ public class PanelFrameType { } public void draw() { - // GuiUtil.drawRectD(startX,startY,endX,endY, 0xffffffff); + GL11.glPushMatrix(); GL11.glTranslatef(startX, startY, 0); + GuiUtil.drawRectD(0, 0, width, 6 * (elementHeight + elementSpacing)-2, 0x77000000); for (int i = 0; i < list.size(); i++) { Element element = list.get(i); @@ -76,14 +77,16 @@ public class PanelFrameType { float offsetY = index * (elementHeight + elementSpacing) / 1; GL11.glPushMatrix(); GL11.glTranslatef(0, offsetY, 0); - GuiUtil.drawRectD(0, 0, width / 1, (elementHeight) / 1, 0x0); - GuiUtil.drawRectD(0, 0, 3 / 1, (elementHeight) / 1, type.color); + GuiUtil.drawRectD(0, 0, width - 1, elementHeight, 0xaa000000); //type black bg + + type.getColor().glColor(); + GuiUtil.drawRectD(0, 0, 3, elementHeight); //type color GL11.glScalef(scale, scale, 1); GL11.glTranslatef(0, elementHeight / 2, 0); String name = String.format("%s", type.toString()); - graph.getFontRenderer().drawString(name, 6, 0, 0xffffff); + graph.getFontRenderer().drawString(name, 7, 0, 0xffffff); GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/constants/animation/EnumFrameType.java b/src/main/java/noppes/npcs/constants/animation/EnumFrameType.java index 43873aa6f..fd36e824f 100644 --- a/src/main/java/noppes/npcs/constants/animation/EnumFrameType.java +++ b/src/main/java/noppes/npcs/constants/animation/EnumFrameType.java @@ -3,7 +3,7 @@ package noppes.npcs.constants.animation; import noppes.npcs.client.utils.Color; public enum EnumFrameType { - ROTATION_X(0xff3352), ROTATION_Y(0x8bdc00), ROTATION_Z(0x2890ff), PIVOT_X(0xff3352), PIVOT_Y(0x8bdc00), PIVOT_Z(0x2890ff); + ROTATION_X(0xffff3352), ROTATION_Y(0xff8bdc00), ROTATION_Z(0xff2890ff), PIVOT_X(0xffff3352), PIVOT_Y(0xff8bdc00), PIVOT_Z(0xff2890ff); public int color; diff --git a/src/main/resources/assets/customnpcs/textures/gui/animation.png b/src/main/resources/assets/customnpcs/textures/gui/animation.png index 2fe01853a8f80fdfcd2dd940dc9dd63ed00c0f9e..871ceb7d25eacce3cd8dbd10f376ed0a4776e7af 100644 GIT binary patch literal 10166 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 literal 5568 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