aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java
diff options
context:
space:
mode:
authorsyeyoung <cyoung06@naver.com>2023-01-25 16:44:51 +0900
committersyeyoung <cyoung06@naver.com>2023-01-25 16:44:51 +0900
commitd5229dd379372abd83edd1b3db3d1076481248e8 (patch)
tree1f397bca4b8fbaeeef298bfec598105488433d9e /mod/src/main/java
parent16e09c87114564a192c3d0a3c7e77ec18a330a11 (diff)
downloadSkyblock-Dungeons-Guide-d5229dd379372abd83edd1b3db3d1076481248e8.tar.gz
Skyblock-Dungeons-Guide-d5229dd379372abd83edd1b3db3d1076481248e8.tar.bz2
Skyblock-Dungeons-Guide-d5229dd379372abd83edd1b3db3d1076481248e8.zip
- Follow user's scaled width and height
Signed-off-by: syeyoung <cyoung06@naver.com>
Diffstat (limited to 'mod/src/main/java')
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/AbstractHUDFeature.java5
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/RawRenderingGuiFeature.java3
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java3
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java3
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java15
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/WidgetSecret.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/AbsLocationPopup.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/LocationedPopup.java)48
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/MinecraftTooltip.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MinecraftTooltip.java)6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/MouseTooltip.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MouseTooltip.java)39
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/PopupMgr.java (renamed from mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/PopupMgr.java)6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/view/TestPopup.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/view/TestView.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/xml/DomElementRegistry.java1
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/AbsPosPositioner.java42
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/GUIRectanglePositioner.java63
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/OverlayManager.java16
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/OverlayManagerRootWidget.java18
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/OverlayWidget.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/Positioner.java27
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/WholeScreenPositioner.java37
26 files changed, 307 insertions, 93 deletions
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/AbstractHUDFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/AbstractHUDFeature.java
index 2896489f..8e841db7 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/AbstractHUDFeature.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/AbstractHUDFeature.java
@@ -65,11 +65,6 @@ public abstract class AbstractHUDFeature extends AbstractGuiFeature {
this.featureRect = new GUIRectangle(0, 0, width, height);
}
-
- public Rect getWidgetPosition() {
- Rectangle loc = featureRect.getRectangleNoScale();
- return new Rect(loc.x, loc.y, loc.width, loc.height);
- }
public abstract void drawDemo(float partialTicks);
@Override
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/RawRenderingGuiFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/RawRenderingGuiFeature.java
index 869f6391..04ed126f 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/RawRenderingGuiFeature.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/RawRenderingGuiFeature.java
@@ -25,6 +25,7 @@ import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.ConstraintBox;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Size;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.Renderer;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.RenderingContext;
+import kr.syeyoung.dungeonsguide.mod.overlay.GUIRectanglePositioner;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
import lombok.Getter;
@@ -64,7 +65,7 @@ public abstract class RawRenderingGuiFeature extends AbstractHUDFeature {
return new OverlayWidget(
new WidgetFeatureWrapper(),
OverlayType.UNDER_CHAT,
- this::getWidgetPosition
+ new GUIRectanglePositioner(this::getFeatureRect)
);
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
index ad656753..ae3f52e8 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/inviteViewer/PartyInviteViewer.java
@@ -30,6 +30,7 @@ import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
+import kr.syeyoung.dungeonsguide.mod.overlay.WholeScreenPositioner;
import net.minecraft.client.Minecraft;
import java.util.concurrent.ExecutorService;
@@ -49,7 +50,7 @@ public class PartyInviteViewer extends AbstractGuiFeature {
return new OverlayWidget(
partyInviteViewer = new WidgetPartyInviteViewer(),
OverlayType.OVER_ANY,
- () -> new Rect(0,0,Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight)
+ new WholeScreenPositioner()
);
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
index 00e1558f..85784814 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/discord/onlinealarm/PlayingDGAlarm.java
@@ -27,6 +27,7 @@ import kr.syeyoung.dungeonsguide.mod.features.AbstractGuiFeature;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
+import kr.syeyoung.dungeonsguide.mod.overlay.WholeScreenPositioner;
import net.minecraft.client.Minecraft;
public class PlayingDGAlarm extends AbstractGuiFeature {
@@ -42,7 +43,7 @@ public class PlayingDGAlarm extends AbstractGuiFeature {
return new OverlayWidget(
onlinePeopleViewer = new WidgetOnlinePeopleViewer(),
OverlayType.OVER_ANY,
- () -> new Rect(0,0,Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight)
+ new WholeScreenPositioner()
);
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
index c482337e..706b5c28 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/FeatureViewPlayerStatsOnJoin.java
@@ -37,9 +37,7 @@ import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.ApiFe
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.DataRendererEditor;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.widget.WidgetProfileViewer;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
-import kr.syeyoung.dungeonsguide.mod.overlay.OverlayManager;
-import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
-import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
+import kr.syeyoung.dungeonsguide.mod.overlay.*;
import kr.syeyoung.dungeonsguide.mod.party.PartyContext;
import kr.syeyoung.dungeonsguide.mod.party.PartyManager;
import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
@@ -150,7 +148,7 @@ public class FeatureViewPlayerStatsOnJoin extends SimpleFeature {
}
}),
OverlayType.OVER_CHAT,
- () -> new Rect(mouseX, mouseY-height, width, height)
+ new AbsPosPositioner(mouseX, mouseY-height)
);
OverlayManager.getInstance().addOverlay(widget);
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java
index 3834f966..0389fb32 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/PlayerModelRenderer.java
@@ -18,33 +18,26 @@
package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.widget;
-import com.mojang.authlib.GameProfile;
import kr.syeyoung.dungeonsguide.mod.DungeonsGuide;
import kr.syeyoung.dungeonsguide.mod.cosmetics.ActiveCosmetic;
import kr.syeyoung.dungeonsguide.mod.cosmetics.CosmeticData;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.FakePlayer;
-import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
-import kr.syeyoung.dungeonsguide.mod.guiv2.BindableAttribute;
import kr.syeyoung.dungeonsguide.mod.guiv2.DomElement;
import kr.syeyoung.dungeonsguide.mod.guiv2.Widget;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MinecraftTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MouseTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.PopupMgr;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MinecraftTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MouseTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.PopupMgr;
import kr.syeyoung.dungeonsguide.mod.guiv2.layouter.Layouter;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.ConstraintBox;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Size;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.Renderer;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.RenderingContext;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.AnnotatedExportOnlyWidget;
-import kr.syeyoung.dungeonsguide.mod.guiv2.xml.annotations.Export;
-import kr.syeyoung.dungeonsguide.mod.utils.TextUtils;
-import lombok.AllArgsConstructor;
import lombok.Setter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import org.lwjgl.opengl.GL11;
@@ -153,7 +146,7 @@ public class PlayerModelRenderer extends AnnotatedExportOnlyWidget implements La
this.tooltip = null;
} else if (toHover != null && this.tooltip == null)
PopupMgr.getPopupMgr(getDomElement())
- .openPopup(this.tooltip = new MouseTooltip(absMouseX, absMouseY, actualTooltip),(a) -> {
+ .openPopup(this.tooltip = new MouseTooltip(actualTooltip),(a) -> {
this.tooltip = null;
});
return false;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java
index 636a6f26..4eae8659 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetDataRendererWrapper.java
@@ -22,17 +22,14 @@ import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playe
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarenders.IDataRenderer;
import kr.syeyoung.dungeonsguide.mod.guiv2.DomElement;
import kr.syeyoung.dungeonsguide.mod.guiv2.Widget;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MinecraftTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MouseTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.PopupMgr;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MinecraftTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MouseTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.PopupMgr;
import kr.syeyoung.dungeonsguide.mod.guiv2.layouter.Layouter;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.ConstraintBox;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Size;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.Renderer;
import kr.syeyoung.dungeonsguide.mod.guiv2.renderer.RenderingContext;
-import net.minecraft.client.Minecraft;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.EnumChatFormatting;
import java.awt.*;
import java.util.Collections;
@@ -87,7 +84,7 @@ public class WidgetDataRendererWrapper extends Widget implements Layouter, Rende
this.tooltip = null;
} else if (toHover != null && this.tooltip == null)
PopupMgr.getPopupMgr(getDomElement())
- .openPopup(this.tooltip = new MouseTooltip(absMouseX, absMouseY, actualTooltip), (a) -> {
+ .openPopup(this.tooltip = new MouseTooltip(actualTooltip), (a) -> {
this.tooltip = null;
});
return false;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java
index e32f5754..9f04cfcf 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetPlayerInventory.java
@@ -21,9 +21,9 @@ package kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.widget;
import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.api.playerprofile.PlayerProfile;
import kr.syeyoung.dungeonsguide.mod.guiv2.DomElement;
import kr.syeyoung.dungeonsguide.mod.guiv2.Widget;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MinecraftTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.MouseTooltip;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.PopupMgr;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MinecraftTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.MouseTooltip;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.PopupMgr;
import kr.syeyoung.dungeonsguide.mod.guiv2.layouter.Layouter;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.ConstraintBox;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Size;
@@ -124,7 +124,7 @@ public class WidgetPlayerInventory extends Widget implements Renderer, Layouter
this.tooltip = null;
} else if (toHover != null && this.tooltip == null)
PopupMgr.getPopupMgr(getDomElement())
- .openPopup(this.tooltip = new MouseTooltip(absMouseX, absMouseY, actualTooltip), (a) -> {
+ .openPopup(this.tooltip = new MouseTooltip(actualTooltip), (a) -> {
this.tooltip = null;
});
return true;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java
index 3ba7cbd0..3a3ca61d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/party/playerpreview/widget/WidgetProfileViewerData.java
@@ -27,8 +27,8 @@ import kr.syeyoung.dungeonsguide.mod.features.impl.party.playerpreview.datarende
import kr.syeyoung.dungeonsguide.mod.guiv2.BindableAttribute;
import kr.syeyoung.dungeonsguide.mod.guiv2.DomElement;
import kr.syeyoung.dungeonsguide.mod.guiv2.Widget;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.LocationedPopup;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.PopupMgr;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.AbsLocationPopup;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.PopupMgr;
import kr.syeyoung.dungeonsguide.mod.guiv2.elements.Scaler;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.AnnotatedWidget;
@@ -101,7 +101,7 @@ public class WidgetProfileViewerData extends AnnotatedWidget {
}
- private LocationedPopup popup;
+ private AbsLocationPopup popup;
@On(functionName = "openInventory")
public void openStates() {
Rect abs = inventoryButton.getValue().getAbsBounds();
@@ -115,7 +115,7 @@ public class WidgetProfileViewerData extends AnnotatedWidget {
scaler.child.setValue(new WidgetPlayerInventory(
playerSkyblockData.getPlayerProfiles()[idx]
));
- popupMgr.openPopup(popup = new LocationedPopup(x, y, scaler), (a) -> {
+ popupMgr.openPopup(popup = new AbsLocationPopup(x, y, scaler, true), (a) -> {
this.popup = null;
});
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
index 87f28a3c..b5e67a5d 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java
@@ -33,7 +33,7 @@ import kr.syeyoung.dungeonsguide.mod.features.RawRenderingGuiFeature;
import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MFloatSelectionButton;
import kr.syeyoung.dungeonsguide.mod.gui.elements.MPassiveLabelAndElement;
-import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
+import kr.syeyoung.dungeonsguide.mod.overlay.GUIRectanglePositioner;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayManager;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
@@ -199,11 +199,7 @@ public class FeatureMechanicBrowse extends RawRenderingGuiFeature {
OverlayManager.getInstance().removeOverlay(lastOpen);
widget = new OverlayWidget(
mechanicBrowser = new WidgetMechanicBrowser(dungeonRoomOpt.get()),
- OverlayType.OVER_CHAT,
- () -> {
- Rectangle loc = getFeatureRect().getRectangleNoScale();
- return new Rect(loc.x, loc.y, loc.width, loc.height);
- });
+ OverlayType.OVER_CHAT, new GUIRectanglePositioner(this::getFeatureRect));
}
}
if (mechanicBrowser != null)
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/WidgetSecret.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/WidgetSecret.java
index 899f07f9..0642da1b 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/WidgetSecret.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/WidgetSecret.java
@@ -21,8 +21,8 @@ package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.dunegonmechanic.DungeonMechanic;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.guiv2.BindableAttribute;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.LocationedPopup;
-import kr.syeyoung.dungeonsguide.mod.guiv2.elements.PopupMgr;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.AbsLocationPopup;
+import kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups.PopupMgr;
import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.AnnotatedWidget;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.annotations.Bind;
@@ -54,14 +54,14 @@ public class WidgetSecret extends AnnotatedWidget {
this.onSelect = selectedId;
}
- private LocationedPopup popup;
+ private AbsLocationPopup popup;
@On(functionName = "toggleStates")
public void openStates() {
Rect abs = getDomElement().getAbsBounds();
double x = abs.getX() + abs.getWidth();
double y = abs.getY();
- if (x + 120 > Minecraft.getMinecraft().displayWidth)
+ if (!PopupMgr.getPopupMgr(getDomElement()).getDomElement().getAbsBounds().contains(x + 120 , y))
x = abs.getX() - 120;
@@ -69,7 +69,7 @@ public class WidgetSecret extends AnnotatedWidget {
if (popup == null) {
PopupMgr popupMgr = PopupMgr.getPopupMgr(getDomElement());
- popupMgr.openPopup(popup = new LocationedPopup(x, y, new WidgetStateTooltip(room, mechanic, id)), (val) -> {
+ popupMgr.openPopup(popup = new AbsLocationPopup(x, y, new WidgetStateTooltip(room, mechanic, id), true), (val) -> {
if (val == null)
onSelect.accept(null);
popup = null;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
index 34f76728..7debd1f0 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/text/TextHUDFeature.java
@@ -38,6 +38,7 @@ import kr.syeyoung.dungeonsguide.mod.guiv2.elements.richtext.BreakWord;
import kr.syeyoung.dungeonsguide.mod.guiv2.elements.richtext.RichText;
import kr.syeyoung.dungeonsguide.mod.guiv2.elements.richtext.TextSpan;
import kr.syeyoung.dungeonsguide.mod.guiv2.elements.richtext.styles.ParentDelegatingTextStyle;
+import kr.syeyoung.dungeonsguide.mod.overlay.GUIRectanglePositioner;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
import net.minecraft.client.Minecraft;
@@ -50,7 +51,13 @@ public abstract class TextHUDFeature extends AbstractHUDFeature implements Style
protected TextHUDFeature(String category, String name, String description, String key, boolean keepRatio, int width, int height) {
super(category, name, description, key, keepRatio, width, height);
addParameter("textStylesNEW", new FeatureParameter<List<TextStyle>>("textStylesNEW", "", "", new ArrayList<TextStyle>(), "list_textStyle"));
- addParameter("alignment", new FeatureParameter<String>("alignment", "Alignment", "Alignment", "LEFT", "string"));
+ addParameter("alignment", new FeatureParameter<String>("alignment", "Alignment", "Alignment", "LEFT", "string", (change) -> {
+ richText.setAlign(
+ change.equals("LEFT") ? RichText.TextAlign.LEFT :
+ change.equals("CENTER") ? RichText.TextAlign.CENTER :
+ change.equals("RIGHT") ? RichText.TextAlign.RIGHT : RichText.TextAlign.LEFT
+ );
+ }));
addParameter("scale", new FeatureParameter<Float>("scale", "Scale", "Scale", 1.0f, "float"));
}
@@ -66,7 +73,7 @@ public abstract class TextHUDFeature extends AbstractHUDFeature implements Style
@Override
public OverlayWidget instantiateWidget() {
- return new OverlayWidget(richText, OverlayType.UNDER_CHAT, this::getWidgetPosition);
+ return new OverlayWidget(richText, OverlayType.UNDER_CHAT, new GUIRectanglePositioner(this::getFeatureRect));
}
private Map<String, ParentDelegatingTextStyle> builtTextStyles = new HashMap<>();
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/LocationedPopup.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/AbsLocationPopup.java
index 2ed260ab..06db01e2 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/LocationedPopup.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/AbsLocationPopup.java
@@ -16,16 +16,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.mod.guiv2.elements;
+package kr.syeyoung.dungeonsguide.mod.guiv2.elements.popups;
import kr.syeyoung.dungeonsguide.mod.guiv2.BindableAttribute;
import kr.syeyoung.dungeonsguide.mod.guiv2.DomElement;
import kr.syeyoung.dungeonsguide.mod.guiv2.Widget;
+import kr.syeyoung.dungeonsguide.mod.guiv2.primitive.Rect;
+import kr.syeyoung.dungeonsguide.mod.guiv2.xml.AnnotatedImportOnlyWidget;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.AnnotatedWidget;
import kr.syeyoung.dungeonsguide.mod.guiv2.xml.annotations.Bind;
+import kr.syeyoung.dungeonsguide.mod.guiv2.xml.annotations.Export;
import net.minecraft.util.ResourceLocation;
-public class LocationedPopup extends AnnotatedWidget {
+public class AbsLocationPopup extends AnnotatedImportOnlyWidget {
@Bind(variableName = "x")
public final BindableAttribute<Double> x = new BindableAttribute<>(Double.class);
@Bind(variableName = "y")
@@ -34,16 +37,49 @@ public class LocationedPopup extends AnnotatedWidget {
public final BindableAttribute<DomElement> ref = new BindableAttribute<>(DomElement.class);
@Bind(variableName = "child")
public final BindableAttribute<Widget> child = new BindableAttribute<>(Widget.class);
- public LocationedPopup(double x, double y, Widget child) {
+
+ public final BindableAttribute<Double> absX = new BindableAttribute<>(Double.class);
+ public final BindableAttribute<Double> absY = new BindableAttribute<>(Double.class);
+ public boolean autoclose = false;
+ public AbsLocationPopup(double x, double y, Widget child, boolean autoclose) {
super(new ResourceLocation("dungeonsguide:gui/elements/locationedPopup.gui"));
- this.x.setValue(x);
- this.y.setValue(y);
+ absX.setValue(x);
+ absY.setValue(y);
+ absX.addOnUpdate(this::updatePos);
+ absY.addOnUpdate(this::updatePos);
this.child.setValue(child);
+ this.autoclose = autoclose;
+ }
+ public AbsLocationPopup(BindableAttribute<Double> x, BindableAttribute<Double> y, Widget child, boolean autoclose) {
+ super(new ResourceLocation("dungeonsguide:gui/elements/locationedPopup.gui"));
+ x.exportTo(this.absX);
+ y.exportTo(this.absY);
+ absX.addOnUpdate(this::updatePos);
+ absY.addOnUpdate(this::updatePos);
+ this.child.setValue(child);
+ this.autoclose = autoclose;
+ }
+
+ @Override
+ public void onMount() {
+ updatePos(0,0);
+ }
+
+ public void updatePos(double old, double neu) {
+ PopupMgr popupMgr = PopupMgr.getPopupMgr(getDomElement());
+ Rect rect = popupMgr.getDomElement().getAbsBounds();
+ Rect rel = popupMgr.getDomElement().getRelativeBound();
+ this.x.setValue(
+ (absX.getValue() - rect.getX()) * rel.getWidth() / rect.getWidth()
+ );
+ this.y.setValue(
+ (absY.getValue() - rect.getY()) * rel.getHeight() / rect.getHeight()
+ );
}
@Override
public boolean mouseClicked(int absMouseX, int absMouseY, double relMouseX, double relMouseY, int mouseButton) {
- if (!ref.getValue().getAbsBounds().contains(absMouseX, absMouseY)) {
+ if (!ref.getValue().getAbsBounds().contains(absMouseX, absMouseY) && autoclose) {
PopupMgr.getPopupMgr(getDomElement()).closePopup(this,null);
}
return false;
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MinecraftTooltip.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/MinecraftTooltip.java
index f445c52f..3206478a 100644
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/MinecraftTooltip.java
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/popups/MinecraftTooltip.java
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-package kr.syeyoung.dungeonsguide.mod.guiv2.elements;
+package kr.syeyoung.dungeonsguide.mod.guiv2.elements.p