diff options
author | syeyoung <cyong06@naver.com> | 2021-07-18 23:35:41 +0900 |
---|---|---|
committer | syeyoung <cyong06@naver.com> | 2021-07-18 23:35:41 +0900 |
commit | 0af44a60844be83fb371c2f0eaeb2feccd1f0207 (patch) | |
tree | 1ac67087eeb7afb1afb7b7afa2d22d3f3c7b3748 /src/main/java/kr/syeyoung/dungeonsguide/config | |
parent | e4ac7cf162d4383424a0798f160073b8d5bc1f1b (diff) | |
download | Skyblock-Dungeons-Guide-0af44a60844be83fb371c2f0eaeb2feccd1f0207.tar.gz Skyblock-Dungeons-Guide-0af44a60844be83fb371c2f0eaeb2feccd1f0207.tar.bz2 Skyblock-Dungeons-Guide-0af44a60844be83fb371c2f0eaeb2feccd1f0207.zip |
Modification to GUI Framework
- Mostly removes Scaled GUI
- Also has done some fixes to gui relocation
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/config')
5 files changed, 126 insertions, 334 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java index 18828abd..24b98e00 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java @@ -21,6 +21,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; import com.google.common.base.Supplier; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MNavigatingPane; import kr.syeyoung.dungeonsguide.gui.elements.MTabbedPane; @@ -42,9 +43,8 @@ import java.util.Map; import java.util.Stack; import java.util.stream.Collectors; -public class GuiConfig extends GuiScreen { +public class GuiConfig extends MGui { - private final MPanel mainPanel = new MPanel(); @Getter private final MNavigatingPane tabbedPane; @@ -53,7 +53,7 @@ public class GuiConfig extends GuiScreen { public GuiConfig() { MNavigatingPane tabbedPane = new MNavigatingPane(); - mainPanel.add(tabbedPane); + getMainPanel().add(tabbedPane); tabbedPane.setBackground2(new Color(38, 38, 38, 255)); tabbedPane.setPageGenerator(ConfigPanelCreator.INSTANCE); @@ -90,67 +90,6 @@ public class GuiConfig extends GuiScreen { @Override public void initGui() { super.initGui(); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(Math.min((scaledResolution.getScaledWidth() - 500) / 2, scaledResolution.getScaledWidth()), Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),500,300)); - } - FloatBuffer floatBuffer = BufferUtils.createFloatBuffer(16); - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - try { - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } + getMainPanel().setBounds(new Rectangle(Math.min((Minecraft.getMinecraft().displayWidth - 500) / 2, Minecraft.getMinecraft().displayWidth), Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),500,300)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java index 8e186e6b..11dd2db2 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java @@ -21,6 +21,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; import kr.syeyoung.dungeonsguide.features.GuiFeature; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MButton; import net.minecraft.client.Minecraft; @@ -33,20 +34,19 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiGuiLocationConfig extends GuiScreen { +public class GuiGuiLocationConfig extends MGui { - private final MPanel mainPanel = new MPanel(); private final GuiScreen before; public GuiGuiLocationConfig(final GuiScreen before, AbstractFeature featureWhitelist) { this.before = before; for (AbstractFeature feature : FeatureRegistry.getFeatureList()) { if (feature instanceof GuiFeature && feature.isEnabled()) { - mainPanel.add(new PanelDelegate((GuiFeature) feature, featureWhitelist == null || feature == featureWhitelist)); + getMainPanel().add(new PanelDelegate((GuiFeature) feature, featureWhitelist == null || feature == featureWhitelist)); } } - mainPanel.setBackgroundColor(new Color(0,0,0, 60)); + getMainPanel().setBackgroundColor(new Color(0,0,0, 60)); { MButton button = new MButton() { @Override @@ -61,80 +61,14 @@ public class GuiGuiLocationConfig extends GuiScreen { Minecraft.getMinecraft().displayGuiScreen(before); } }); - mainPanel.add(button); + getMainPanel().add(button); } } @Override public void initGui() { super.initGui(); - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight())); + getMainPanel().setBounds(new Rectangle(0,0,Minecraft.getMinecraft().displayWidth,Minecraft.getMinecraft().displayHeight)); } - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - super.mouseClicked(mouseX, mouseY, mouseButton); - try { - mainPanel.mouseClicked0(mouseX, mouseY, mouseX, mouseY, mouseButton); - } catch (IllegalArgumentException ignored) { - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - try { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - } catch (IllegalArgumentException ignored) { - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } - } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java index ce106433..0d7b819c 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java @@ -18,6 +18,7 @@ package kr.syeyoung.dungeonsguide.config.guiconfig; +import kr.syeyoung.dungeonsguide.gui.MGui; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.roomedit.Parameter; import kr.syeyoung.dungeonsguide.gui.elements.MButton; @@ -37,14 +38,7 @@ import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; -public class GuiParameterValueEdit extends GuiScreen { - - private final MPanel mainPanel = new MPanel() { - @Override - public void onBoundsUpdate() { - save.setBounds(new Rectangle(0 ,getBounds().height - 20, getBounds().width, 20)); - } - }; +public class GuiParameterValueEdit extends MGui { private MPanel currentValueEdit; @@ -65,7 +59,7 @@ public class GuiParameterValueEdit extends GuiScreen { public GuiParameterValueEdit(final Object object, final GuiConfig prev) { try { this.editingObj = object; - mainPanel.setBackgroundColor(new Color(17, 17, 17, 179)); + getMainPanel().setBackgroundColor(new Color(17, 17, 17, 179)); { currentValueEdit = new MPanel() { @Override @@ -73,7 +67,7 @@ public class GuiParameterValueEdit extends GuiScreen { setBounds(new Rectangle(5, 5, parentWidth-10, parentHeight - 25)); } }; - mainPanel.add(currentValueEdit); + getMainPanel().add(currentValueEdit); } { save = new MButton() { @@ -91,7 +85,7 @@ public class GuiParameterValueEdit extends GuiScreen { Minecraft.getMinecraft().displayGuiScreen(prev); } }); - mainPanel.add(save); + getMainPanel().add(save); } updateClassSelection(); } catch (Exception e){} @@ -123,89 +117,7 @@ public class GuiParameterValueEdit extends GuiScreen { public void initGui() { super.initGui(); // update bounds - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - mainPanel.setBounds(new Rectangle(10, Math.min((scaledResolution.getScaledHeight() - 300) / 2, scaledResolution.getScaledHeight()),200,300)); - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - try { - - ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - GlStateManager.disableLighting(); - GlStateManager.disableFog(); - GL11.glDisable(GL11.GL_FOG); - GlStateManager.color(1, 1, 1, 1); - GlStateManager.disableDepth(); - GlStateManager.depthMask(false); - mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); - GlStateManager.enableDepth(); - GlStateManager.depthMask(true); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - GlStateManager.enableBlend(); - GlStateManager.enableLighting(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void keyTyped(char typedChar, int keyCode) throws IOException { - - try { - super.keyTyped(typedChar, keyCode); - mainPanel.keyTyped0(typedChar, keyCode); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { - try { - super.mouseClicked(mouseX, mouseY, mouseButton); - mainPanel.mouseClicked0(mouseX, mouseY,mouseX,mouseY, mouseButton); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseReleased(int mouseX, int mouseY, int state) { - try { - mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - try { - mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); - - } catch (Throwable t) { - t.printStackTrace(); - } - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - int i = Mouse.getEventX() * this.width / this.mc.displayWidth; - int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - int wheel = Mouse.getDWheel(); - if (wheel != 0) { - try { - mainPanel.mouseScrolled0(i, j,i,j, wheel); - } catch (Throwable t) { - t.printStackTrace(); - } - } + getMainPanel().setBounds(new Rectangle(10, Math.min((Minecraft.getMinecraft().displayHeight - 300) / 2, Minecraft.getMinecraft().displayHeight),200,300)); + save.setBounds(new Rectangle(0 ,getMainPanel().getBounds().height - 20, getMainPanel().getBounds().width, 20)); } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java index 09614313..7abb54b9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java @@ -39,29 +39,30 @@ public class PanelDelegate extends MPanel { @Override public Rectangle getBounds() { - return guiFeature.getFeatureRect().getRectangle(); + Rectangle rectangle = guiFeature.getFeatureRect().getRectangle(); + return new Rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height); } @Override public void render(int absMousex, int absMousey, int relMouseX, int relMouseY, float partialTicks, Rectangle scissor) { + GlStateManager.pushMatrix(); guiFeature.drawDemo(partialTicks); GlStateManager.popMatrix(); - if (!draggable) return; - Gui.drawRect(0,0, 3, 3, 0xFFBBBBBB); - Gui.drawRect(0, getBounds().height - 3, 3, getBounds().height, 0xFFBBBBBB); - Gui.drawRect(getBounds().width - 3,0, getBounds().width, 3, 0xFFBBBBBB); - Gui.drawRect(getBounds().width - 3,getBounds().height - 3, getBounds().width, getBounds().height, 0xFFBBBBBB); + Gui.drawRect(0,0, 4, 4, 0xFFBBBBBB); + Gui.drawRect(0, getBounds().height - 4, 4, getBounds().height, 0xFFBBBBBB); + Gui.drawRect(getBounds().width - 4,0, getBounds().width, 4, 0xFFBBBBBB); + Gui.drawRect(getBounds().width - 4,getBounds().height - 4, getBounds().width, getBounds().height, 0xFFBBBBBB); if (lastAbsClip.contains(absMousex, absMousey)) { - if (relMouseX < 3 && relMouseY < 3) { - Gui.drawRect(0,0, 3, 3, 0x55FFFFFF); - } else if (relMouseX < 3 && relMouseY > getBounds().height - 3) { - Gui.drawRect(0, getBounds().height - 3, 3, getBounds().height, 0x55FFFFFF); - } else if (relMouseX > getBounds().width - 3 && relMouseY > getBounds().height - 3) { - Gui.drawRect(getBounds().width - 3,getBounds().height - 3, getBounds().width, getBounds().height, 0x55FFFFFF); - } else if (relMouseX > getBounds().width - 3 && relMouseY < 3) { - Gui.drawRect(getBounds().width - 3,0, getBounds().width, 3, 0x55FFFFFF); + if (relMouseX < 4 && relMouseY < 4) { + Gui.drawRect(0,0, 4, 4, 0x55FFFFFF); + } else if (relMouseX < 4 && relMouseY > getBounds().height - 4) { + Gui.drawRect(0, getBounds().height - 4, 4, getBounds().height, 0x55FFFFFF); + } else if (relMouseX > getBounds().width - 4 && relMouseY > getBounds().height - 4) { + Gui.drawRect(getBounds().width - 4,getBounds().height - 4, getBounds().width, getBounds().height, 0x55FFFFFF); + } else if (relMouseX > getBounds().width - 4 && relMouseY < 4) { + Gui.drawRect(getBounds().width - 4,0, getBounds().width, 4, 0x55FFFFFF); } else if (selectedPart == -2){ Gui.drawRect(0,0, getBounds().width, getBounds().height, 0x55FFFFFF); } @@ -74,24 +75,79 @@ public class PanelDelegate extends MPanel { private int lastX = 0; private int lastY = 0; + private Rectangle internallyThinking; + private Rectangle constraintApplied; + + public void applyConstraint() { + Rectangle rectangle = internallyThinking.getBounds(); + + int minWidth; + int minHeight; + if (guiFeature.isKeepRatio()) { + minHeight = (int) Math.max(8, 8 / guiFeature.getDefaultRatio()); + minWidth = (int) (guiFeature.getDefaultRatio() * minHeight); + } else { + minWidth = 8; + minHeight = 8; + } + + if (Math.abs(rectangle.width) < minWidth) rectangle.width = rectangle.width < 0 ? -minWidth : minWidth; + if (Math.abs(rectangle.height) < minHeight) rectangle.height = rectangle.height < 0 ? -minHeight : minHeight; + + if (guiFeature.isKeepRatio()) { + double ratio = guiFeature.getDefaultRatio(); + + if (ratio >= 1) { + int width1 = Math.abs(rectangle.width); + int height1 = (int) (width1 / ratio); + rectangle.width = rectangle.width < 0 ? -width1 : width1; + rectangle.height = rectangle.height < 0 ? -height1 : height1; + } else { + int width2 = (int) Math.abs(rectangle.height * ratio); + int height2 = Math.abs(rectangle.height); + rectangle.width = rectangle.width < 0 ? -width2 : width2; + rectangle.height = rectangle.height < 0 ? -height2 : height2; + } + } + + if (rectangle.height < 0) { + rectangle.height = -rectangle.height; + rectangle.y -= rectangle.height; + } + + if (rectangle.width < 0) { + rectangle.width = -rectangle.width; + rectangle.x -= rectangle.width; + } + + if (rectangle.x < 0) rectangle.x = 0; + if (rectangle.y < 0) rectangle.y = 0; + if (rectangle.x + rectangle.width + 1 >=Minecraft.getMinecraft().displayWidth) rectangle.x = Minecraft.getMinecraft().displayWidth - rectangle.width - 1; + if (rectangle.y + rectangle.height + 1>= Minecraft.getMinecraft().displayHeight) rectangle.y = Minecraft.getMinecraft().displayHeight - rectangle.height - 1; + + + constraintApplied = rectangle; + } @Override public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) { if (!draggable) return; if (!lastAbsClip.contains(absMouseX, absMouseY)) return; - if (relMouseX < 3 && relMouseY < 3) { + if (relMouseX < 4 && relMouseY < 4) { selectedPart = 0; - } else if (relMouseX < 3 && relMouseY > getBounds().height - 3) { + } else if (relMouseX < 4 && relMouseY > getBounds().height - 4) { selectedPart = 2; - } else if (relMouseX > getBounds().width - 3 && relMouseY > getBounds().height - 3) { + } else if (relMouseX > getBounds().width - 4 && relMouseY > getBounds().height - 4) { selectedPart = 3; - } else if (relMouseX > getBounds().width - 3 && relMouseY < 3) { + } else if (relMouseX > getBounds().width - 4 && relMouseY < 4) { selectedPart = 1; } else { selectedPart = -1; } lastX = absMouseX; lastY = absMouseY; + internallyThinking = guiFeature.getFeatureRect().getRectangleNoScale(); + applyConstraint(); throw new IllegalArgumentException("bruh, a hack to stop event progress"); } @@ -100,104 +156,50 @@ public class PanelDelegate extends MPanel { public void mouseReleased(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int state) { if (!draggable) return; if (selectedPart >= -1) { - int minWidth; - int minHeight; - if (guiFeature.isKeepRatio()) { - minHeight = (int) Math.max(8, 8 / guiFeature.getDefaultRatio()); - minWidth = (int) (guiFeature.getDefaultRatio() * minHeight); - } else { - minWidth = 8; - minHeight = 8; - } - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); - if (rectangle.width < minWidth || rectangle.height < minHeight) { - rectangle.width = minWidth; - rectangle.height= minHeight; - } - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); } selectedPart = -2; - - } @Override public void mouseClickMove(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int clickedMouseButton, long timeSinceLastClick) { if (!draggable) return; - int dx = absMouseX - lastX; - int dy = absMouseY - lastY; + int dx = (absMouseX - lastX); + int dy = (absMouseY - lastY); if (selectedPart >= 0) { + Rectangle rectangle = internallyThinking; + boolean revChangeX = (selectedPart & 0x1) == 0; boolean revChangeY = (selectedPart & 0x2) == 0; - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); int prevWidth = rectangle.width; int prevHeight= rectangle.height; rectangle.width = prevWidth + (revChangeX ? -1 : 1) * dx; - rectangle.height = prevHeight + (revChangeY ? - 1: 1 ) * dy; - - if (guiFeature.isKeepRatio()) { - double ratio = guiFeature.getDefaultRatio(); - int width1 = rectangle.width; - int height1 = (int) (width1 / ratio); - - int width2 = (int) (rectangle.height * ratio); - int height2 = rectangle.height; + rectangle.height = prevHeight + (revChangeY ? -1 : 1 ) * dy; - if (ratio >= 1) { - rectangle.width = width1; - rectangle.height = height1; - } else { - rectangle.width = width2; - rectangle.height = height2; - } + if (rectangle.height * prevHeight <= 0 && prevHeight != rectangle.height) { + System.out.println("Flip!"); + rectangle.height += prevHeight < 0 ? 4 : -4; + } + if (rectangle.width * prevWidth <= 0 && prevWidth != rectangle.width) { + System.out.println("Flip!"); + rectangle.width += prevWidth < 0 ? 4 : -4; } - if (revChangeX) rectangle.x -= (rectangle.width - prevWidth ); if (revChangeY) rectangle.y -= (rectangle.height - prevHeight); + applyConstraint(); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); lastX = absMouseX; lastY = absMouseY; - - if (rectangle.height < 0) { - rectangle.height = -rectangle.height; - rectangle.y -= rectangle.height; - selectedPart = selectedPart ^ 0x2; - lastY += revChangeY ? 3 : 3; - } - - if (rectangle.width < 0) { - rectangle.width = -rectangle.width; - rectangle.x -= rectangle.width; - selectedPart = selectedPart ^ 0x1; - lastX += revChangeX ? 3 : 3; - } - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); throw new IllegalArgumentException("bruh, a hack to stop event progress"); } else if (selectedPart == -1){ - Rectangle rectangle = guiFeature.getFeatureRect().getRectangle().getBounds(); + Rectangle rectangle = internallyThinking; rectangle.translate(dx, dy); - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < 0) rectangle.x = 0; - if (rectangle.y < 0) rectangle.y = 0; - if (rectangle.x + rectangle.width + 1 >= sr.getScaledWidth()) rectangle.x = sr.getScaledWidth() - rectangle.width - 1; - if (rectangle.y + rectangle.height + 1>= sr.getScaledHeight()) rectangle.y = sr.getScaledHeight() - rectangle.height - 1; - guiFeature.setFeatureRect(new GUIRectangle(rectangle)); + applyConstraint(); + guiFeature.setFeatureRect(new GUIRectangle(constraintApplied)); lastX = absMouseX; lastY = absMouseY; } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java index 8ce619e6..c4fa75d2 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java @@ -31,21 +31,19 @@ import java.awt.*; @NoArgsConstructor public class GUIRectangle { public GUIRectangle(Rectangle rectangle) { - - ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); - if (rectangle.x < sr.getScaledWidth() / 2) { + if (rectangle.x < Minecraft.getMinecraft().displayWidth / 2) { this.x = rectangle.x; this.width = rectangle.width; } else { - this.x = rectangle.x + rectangle.width - sr.getScaledWidth(); + this.x = rectangle.x + rectangle.width - Minecraft.getMinecraft().displayWidth; this.width = -rectangle.width; } - if (rectangle.y < sr.getScaledHeight() / 2) { + if (rectangle.y < Minecraft.getMinecraft().displayHeight / 2) { this.y = rectangle.y; this.height = rectangle.height; } else { - this.y = rectangle.y +rectangle.height - sr.getScaledHeight(); + this.y = rectangle.y +rectangle.height - Minecraft.getMinecraft().displayHeight; this.height = -rectangle.height; } } @@ -56,13 +54,20 @@ public class GUIRectangle { private int height; public Rectangle getRectangle() { - return getRectangle(new ScaledResolution(Minecraft.getMinecraft())); + return getRectangleNoScale(); } - public Rectangle getRectangle(ScaledResolution scaledResolution) { - int realX = x < 0 ? scaledResolution.getScaledWidth() + x : x; - int realY = y < 0 ? scaledResolution.getScaledHeight() + y : y; +// public Rectangle getRectangle(ScaledResolution scaledResolution) { +// double realX = (int) (x < 0 ? scaledResolution.getScaledWidth() + x : x); +// double realY = (int) (y < 0 ? scaledResolution.getScaledHeight() + y : y); +// +// return new Rectangle((int)Math.min(realX + width, realX), (int)Math.min(realY + height, realY), +// (int)Math.abs(width), (int)Math.abs(height)); +// } + public Rectangle getRectangleNoScale() { + double realX = (int) (x < 0 ? Minecraft.getMinecraft().displayWidth + x : x); + double realY = (int) (y < 0 ? Minecraft.getMinecraft().displayHeight + y : y); - return new Rectangle(Math.min(realX + width, realX), Math.min(realY + height, realY), - Math.abs(width), Math.abs(height)); + return new Rectangle((int)Math.min(realX + width, realX), (int)Math.min(realY + height, realY), + (int)Math.abs(width), (int)Math.abs(height)); } } |