aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/config
diff options
context:
space:
mode:
authorsyeyoung <cyong06@naver.com>2021-07-18 23:35:41 +0900
committersyeyoung <cyong06@naver.com>2021-07-18 23:35:41 +0900
commit0af44a60844be83fb371c2f0eaeb2feccd1f0207 (patch)
tree1ac67087eeb7afb1afb7b7afa2d22d3f3c7b3748 /src/main/java/kr/syeyoung/dungeonsguide/config
parente4ac7cf162d4383424a0798f160073b8d5bc1f1b (diff)
downloadSkyblock-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')
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiConfig.java69
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiGuiLocationConfig.java78
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/GuiParameterValueEdit.java102
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/PanelDelegate.java182
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/GUIRectangle.java29
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));
}
}