From 86195e8791cf6ccd3c40db8880ece8b73f1b0c39 Mon Sep 17 00:00:00 2001 From: kirillsaint Date: Fri, 7 Jul 2023 17:00:26 +0600 Subject: [PATCH] Better scaling --- .../cosmetics/AbstractShieldRenderer.java | 78 +++++++++++------- .../client/gui/hud/HUDConfigScreen.java | 35 ++++++-- .../client/mods/ModDraggable.java | 72 +++++++++++++++- .../client/utils/MouseCursorHandler.java | 4 + .../silentclient/default_bandana/0.png | Bin 2249 -> 0 bytes .../minecraft/silentclient/default_cape/0.png | Bin 6294 -> 0 bytes .../silentclient/default_cape/shoulders.png | Bin 6294 -> 0 bytes .../minecraft/silentclient/default_wings.png | Bin 7919 -> 0 bytes 8 files changed, 147 insertions(+), 42 deletions(-) delete mode 100644 src/main/resources/assets/minecraft/silentclient/default_bandana/0.png delete mode 100644 src/main/resources/assets/minecraft/silentclient/default_cape/0.png delete mode 100644 src/main/resources/assets/minecraft/silentclient/default_cape/shoulders.png delete mode 100644 src/main/resources/assets/minecraft/silentclient/default_wings.png diff --git a/src/main/java/net/silentclient/client/cosmetics/AbstractShieldRenderer.java b/src/main/java/net/silentclient/client/cosmetics/AbstractShieldRenderer.java index 23beeed..c3b63e1 100644 --- a/src/main/java/net/silentclient/client/cosmetics/AbstractShieldRenderer.java +++ b/src/main/java/net/silentclient/client/cosmetics/AbstractShieldRenderer.java @@ -5,6 +5,7 @@ import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.item.ItemStack; import net.silentclient.client.Client; import net.silentclient.client.blc.BlcGlStateManager; import net.silentclient.client.mixin.ducks.AbstractClientPlayerExt; @@ -12,7 +13,7 @@ import net.silentclient.client.mods.settings.CosmeticsMod; public class AbstractShieldRenderer extends ModelBase implements LayerRenderer { private final RenderPlayer playerRenderer; - + public AbstractShieldRenderer(RenderPlayer playerRendererIn) { this.playerRenderer = playerRendererIn; @@ -43,7 +44,8 @@ public class AbstractShieldRenderer extends ModelBase implements LayerRenderer= setting.getMin()) { + setting.setValDouble(scale); + } + } + + ((ModDraggable) m).renderEditing(mouseX, mouseY, scaledresolution, debug, this); } } @@ -193,11 +208,6 @@ public class HUDConfigScreen extends GuiScreen { } } - @Override - protected void mouseClickMove(int x, int y, int button, long time) { - super.mouseClickMove(x, y, button, time); - } - @Override public void onGuiClosed() { MenuBlurUtils.unloadBlur(); @@ -216,6 +226,7 @@ public class HUDConfigScreen extends GuiScreen { for(Mod m : Client.getInstance().getModInstances().getMods()) { if(m instanceof ModDraggable) { ((ModDraggable) m).setDragging(false); + ((ModDraggable) m).setCornerScalingType(CornerScalingType.NONE); } } } @@ -226,6 +237,10 @@ public class HUDConfigScreen extends GuiScreen { ScaledResolution scaledResolution = new ScaledResolution(mc); for(Mod m : Client.getInstance().getModInstances().getMods()) { if(m.isEnabled() && m instanceof ModDraggable) { + if(((ModDraggable) m).cornerDotHovered(mouseX, mouseY, CornerScalingType.BOTTOM_RIGHT)) { + ((ModDraggable) m).setCornerScalingType(CornerScalingType.BOTTOM_RIGHT); + break; + } boolean hovered = ((ModDraggable) m).isHovered(mouseX, mouseY, scaledResolution); if(hovered) { @@ -249,4 +264,12 @@ public class HUDConfigScreen extends GuiScreen { public boolean doesGuiPauseGame() { return true; } + + public enum CornerScalingType { + NONE, + TOP_LEFT, + TOP_RIGHT, + BOTTOM_LEFT, + BOTTOM_RIGHT + } } \ No newline at end of file diff --git a/src/main/java/net/silentclient/client/mods/ModDraggable.java b/src/main/java/net/silentclient/client/mods/ModDraggable.java index e46a896..58d71a3 100644 --- a/src/main/java/net/silentclient/client/mods/ModDraggable.java +++ b/src/main/java/net/silentclient/client/mods/ModDraggable.java @@ -2,6 +2,7 @@ package net.silentclient.client.mods; import java.awt.Color; +import net.silentclient.client.gui.util.RenderUtil; import net.silentclient.client.mixin.accessors.GuiAccessor; import org.lwjgl.opengl.GL11; @@ -30,9 +31,9 @@ public abstract class ModDraggable extends Mod implements IRenderer { private boolean isDragging, hide; private int draggingX, draggingY; - - public SimpleAnimation editOpacityAnimation = new SimpleAnimation(0.0F); - + + private HUDConfigScreen.CornerScalingType cornerScalingType; + public ModDraggable(String name, ModCategory category, String icon) { super(name, category, icon); this.pos = ScreenPosition.fromRelativePosition(0, 0); @@ -136,6 +137,7 @@ public abstract class ModDraggable extends Mod implements IRenderer { if((this.getScaledHeight() + y) > scaledresolution.getScaledHeight()) { y = (int) (y - ((this.getScaledHeight() + y) - scaledresolution.getScaledHeight())); } + pos = ScreenPosition.fromAbsolute(x, y); if(debug) { GlStateManager.pushMatrix(); int debugX = (int) (x + this.getScaledWidth()) + 1; @@ -158,6 +160,10 @@ public abstract class ModDraggable extends Mod implements IRenderer { Client.getInstance().getSilentFontRenderer().drawString(debugX, debugY + 24, "height: " + (int) this.getScaledHeight(), 6, SilentFontRenderer.FontType.TITLE); ColorUtils.setColor(-1); Client.getInstance().getSilentFontRenderer().drawString(debugX, debugY + 30, "dragging: " + this.isDragging(), 6, SilentFontRenderer.FontType.TITLE); + ColorUtils.setColor(-1); + Client.getInstance().getSilentFontRenderer().drawString(debugX, debugY + 36, "cursor: " + Client.getInstance().getMouseCursorHandler().getCurrentCursor(), 6, SilentFontRenderer.FontType.TITLE); + ColorUtils.setColor(-1); + Client.getInstance().getSilentFontRenderer().drawString(debugX, debugY + 42, "corner: " + (pos.getAbsoluteX() + (getCornerX(HUDConfigScreen.CornerScalingType.BOTTOM_RIGHT) * getScale())) + ", " + (pos.getAbsoluteY() + (getCornerY(HUDConfigScreen.CornerScalingType.BOTTOM_RIGHT) * getScale())), 6, SilentFontRenderer.FontType.TITLE); GlStateManager.popMatrix(); } ColorUtils.setColor(-1); @@ -166,10 +172,60 @@ public abstract class ModDraggable extends Mod implements IRenderer { GlStateManager.scale(this.getScale(), this.getScale(), this.getScale()); this.renderDummy(pos); boolean hovered = this.isHovered(mouseX, mouseY, scaledresolution); - this.drawHollowRect(0, 0, this.getWidth(), this.getHeight(), hovered || this.isDragging() ? new Color(245, 188, 0).getRGB() : -1, instance); + int hoverColor = new Color(245, 188, 0).getRGB(); + this.drawHollowRect(0, 0, this.getWidth(), this.getHeight(), hovered || this.isDragging() ? hoverColor : -1, instance); + this.drawCornerDot(mouseX, mouseY, HUDConfigScreen.CornerScalingType.BOTTOM_RIGHT); GlStateManager.popMatrix(); } + private void drawCornerDot(int mouseX, int mouseY, HUDConfigScreen.CornerScalingType cornerType) { + int color = -1; + + if(this.cornerDotHovered(mouseX, mouseY, cornerType)) { + color = new Color(245, 188, 0).getRGB(); + } + + RenderUtil.drawRoundedRect(getCornerX(cornerType), getCornerY(cornerType), getCornerX(cornerType) + 3, getCornerY(cornerType) + 3, 3, color); + } + + public int getCornerX(HUDConfigScreen.CornerScalingType cornerType) { + int x = 0; + + switch (cornerType) { + case TOP_LEFT: + case BOTTOM_LEFT: + x = -1; + break; + case TOP_RIGHT: + case BOTTOM_RIGHT: + x = this.getWidth() - 1; + break; + } + + return x; + } + + public int getCornerY(HUDConfigScreen.CornerScalingType cornerType) { + int y = 0; + + switch (cornerType) { + case TOP_LEFT: + case TOP_RIGHT: + y = -1; + break; + case BOTTOM_LEFT: + case BOTTOM_RIGHT: + y = this.getHeight() - 1; + break; + } + + return y; + } + + public boolean cornerDotHovered(int mouseX, int mouseY, HUDConfigScreen.CornerScalingType cornerType) { + return MouseUtils.isInside(mouseX, mouseY, pos.getAbsoluteX() + (getCornerX(cornerType) * getScale()), pos.getAbsoluteY() + (getCornerY(cornerType) * getScale()), 3 * getScale(), 3 * getScale()); + } + private void drawHollowRect(int x, int y, int w, int h, int color, Gui instance) { ((GuiAccessor) instance).silent$drawHorizontalLine(x, x + w, y, color); ((GuiAccessor) instance).silent$drawHorizontalLine(x, x + w, y + h, color); @@ -257,4 +313,12 @@ public abstract class ModDraggable extends Mod implements IRenderer { public void setHide(boolean hide) { this.hide = hide; } + + public HUDConfigScreen.CornerScalingType getCornerScalingType() { + return cornerScalingType; + } + + public void setCornerScalingType(HUDConfigScreen.CornerScalingType cornerScalingType) { + this.cornerScalingType = cornerScalingType; + } } diff --git a/src/main/java/net/silentclient/client/utils/MouseCursorHandler.java b/src/main/java/net/silentclient/client/utils/MouseCursorHandler.java index 260757e..33e3f1a 100644 --- a/src/main/java/net/silentclient/client/utils/MouseCursorHandler.java +++ b/src/main/java/net/silentclient/client/utils/MouseCursorHandler.java @@ -108,6 +108,10 @@ public class MouseCursorHandler { } } + public CursorType getCurrentCursor() { + return currentCursor; + } + public enum CursorType { NORMAL, diff --git a/src/main/resources/assets/minecraft/silentclient/default_bandana/0.png b/src/main/resources/assets/minecraft/silentclient/default_bandana/0.png deleted file mode 100644 index d109fbf0ff23196cbc1f582c46fe85946ee409e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2249 zcmeHI>rawl6hH5a`l3csO{u(5t=5O!YOTmI#{=e8(SBxSZPzkOO2Waxn|)QU|C@`r6eyD`1II+(d@(do#*VFv-6zo`Td?Nd-CL* zxRr4Lz)|GL@&Q=*NQl`n*v0Qi?#C|ncur9@j+V_E0XI#{=S!;d z06Z|nhYv&puuBv&Nr8qK_jq!zDu8+4qb6Jz3YrU>Ynl@q66cLcte}oWODPNMJ~`ff zI`84SJ58e>hRVHuMZ-s7Z${AJ6i}tM6#(Midj!BCHXg%Xf`Pjl17C(g+<<}M;w-Ep zF-W5@)Gf@y@D|8%skgdYcbl_y`WlU9+l04EIN|ANi=;7AvA|r`g(eSoo{wlvW^B$z0W%N`3br!P)_eQ^xpvdnTz3`i@ zKj?Sbhlhtjl|_O|BA3erO(8UBH>BJ9>Juoa{E@_Go);Gvhiks0(#2til?8X@02@9} zPM-ABK_=jLn%hd1O691dQ7A-#MX~U94M38$Y8rVu&iH8LAJO{`_(WME=tj5RG318N zU*1?odoEF;EHewG)8Q)L)2`r5I}cR3_zs%{neD;=<$A6IsC*dB=2sjG)czbB^y=oS z*AmQ>hO=Hgkn&S>c3K@My6|LQMcUFBRaPN>E+t*sM~xxm8PR(Q=)QRuKsF#joqV;~ zXf&SCYQMt9?%otKrs0Mabqo|CL6x^X#N&%`oqFr7(riTcJD=|Cf&KLvVpu{^lXtOOu$~Bkp5Ueh|Y&yM{OX%xz#0| znoSO;6HTep<{Il6VvLJf#^dqa$&CKfxVx>81nDsjTsu=+`y^;xLBT0DFic-xpXk>j zX39lIaW^JJ(o$28qR8OT&{bs}S+}16_6=*8rfJcuX(t_nAY*>oyitP;AeWwMbPL{{TA7xzzvw diff --git a/src/main/resources/assets/minecraft/silentclient/default_cape/0.png b/src/main/resources/assets/minecraft/silentclient/default_cape/0.png deleted file mode 100644 index 8b139e494225a1bea3620f074a19764393a4e5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6294 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 diff --git a/src/main/resources/assets/minecraft/silentclient/default_cape/shoulders.png b/src/main/resources/assets/minecraft/silentclient/default_cape/shoulders.png deleted file mode 100644 index 8b139e494225a1bea3620f074a19764393a4e5e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6294 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 diff --git a/src/main/resources/assets/minecraft/silentclient/default_wings.png b/src/main/resources/assets/minecraft/silentclient/default_wings.png deleted file mode 100644 index b8a680c8cee386cf8da5a006eb5c2ee75d8860ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7919 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 bKD8th;#1z#Ga~%=w@^bxN4ZkbD)_$u&s89|