aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyeyoung <cyoung06@naver.com>2023-01-18 17:08:17 +0900
committersyeyoung <cyoung06@naver.com>2023-01-18 17:09:19 +0900
commiteac86380ed0db7be002e55d850ca7fea4b698c4d (patch)
tree7db6fca1e8bbe90361b9b114730ba4a5148e218c
parent470585150a1f2a506215e17bc9b9871bfdd80aa6 (diff)
downloadSkyblock-Dungeons-Guide-eac86380ed0db7be002e55d850ca7fea4b698c4d.tar.gz
Skyblock-Dungeons-Guide-eac86380ed0db7be002e55d850ca7fea4b698c4d.tar.bz2
Skyblock-Dungeons-Guide-eac86380ed0db7be002e55d850ca7fea4b698c4d.zip
- upgrade mechanic browser to use guiv2
- also add #134 Signed-off-by: syeyoung <cyoung06@naver.com>
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/FeatureMechanicBrowse.java140
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MGuiMechanicBrowser.java45
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java62
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserTooltip.java68
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java344
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/v2/WidgetCategory.java61
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/v2/WidgetMechanicBrowser.java116
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/v2/WidgetSecret.java87
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/v2/WidgetState.java53
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/v2/WidgetStateTooltip.java54
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/AbsXY.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Align.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/AspectRatioFitter.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Background.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Border.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Button.java8
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Clip.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Column.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/ConstrainedBox.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Flexible.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/IntrinsicHeight.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/IntrinsicWidth.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Line.java7
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/LocationedPopup.java51
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Measure.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Padding.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/PopupMgr.java33
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Row.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Scaler.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/ScrollablePanel.java10
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Scrollbar.java5
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/SelectiveContainer.java6
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Slot.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Stack.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/Text.java98
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/elements/UnconstrainedBox.java2
-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.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/xml/PropByPropParsedWidgetConverter.java11
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/guiv2/xml/StringConversions.java2
-rw-r--r--mod/src/main/java/kr/syeyoung/dungeonsguide/mod/overlay/OverlayManager.java59
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/elements/locationedPopup.gui20
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/elements/popupmgr.gui2
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/elements/scrollablePanel.gui2
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/elements/simpleButton.gui26
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/elements/size.gui2
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/features/mechanicBrowser/browser.gui55
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/features/mechanicBrowser/category.gui20
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/features/mechanicBrowser/secret.gui25
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/features/mechanicBrowser/state.gui25
-rw-r--r--mod/src/main/resources/assets/dungeonsguide/gui/features/mechanicBrowser/tooltip.gui34
52 files changed, 938 insertions, 643 deletions
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 48e515bb..91b87969 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
@@ -24,20 +24,29 @@ import kr.syeyoung.dungeonsguide.mod.SkyblockStatus;
import kr.syeyoung.dungeonsguide.mod.config.guiconfig.location.GuiGuiLocationConfig;
import kr.syeyoung.dungeonsguide.mod.config.types.GUIRectangle;
import kr.syeyoung.dungeonsguide.mod.dungeon.DungeonContext;
+import kr.syeyoung.dungeonsguide.mod.dungeon.actions.tree.ActionRoute;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.mod.dungeon.roomprocessor.GeneralRoomProcessor;
import kr.syeyoung.dungeonsguide.mod.events.annotations.DGEventHandler;
+import kr.syeyoung.dungeonsguide.mod.events.impl.DGTickEvent;
import kr.syeyoung.dungeonsguide.mod.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.mod.features.GuiFeature;
+import kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser.v2.WidgetMechanicBrowser;
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.OverlayManager;
+import kr.syeyoung.dungeonsguide.mod.overlay.OverlayType;
+import kr.syeyoung.dungeonsguide.mod.overlay.OverlayWidget;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
+import net.minecraft.client.gui.GuiChat;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.MathHelper;
+import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
@@ -48,27 +57,29 @@ import org.lwjgl.opengl.GL14;
import java.awt.*;
import java.io.IOException;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
+import java.util.UUID;
public class FeatureMechanicBrowse extends GuiFeature {
+
+ private OverlayWidget lastOpen;
+ private OverlayWidget widget;
+ private WidgetMechanicBrowser mechanicBrowser;
+
public FeatureMechanicBrowse() {
super("Dungeon.Secrets.Secret Browser","Secret Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
addParameter("scale", new FeatureParameter<Float>("scale", "Scale", "Scale", 1.0f, "float"));
- mGuiMechanicBrowser = new MGuiMechanicBrowser(this);
- mGuiMechanicBrowser.setWorldAndResolution(Minecraft.getMinecraft(), Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight);
- lastWidth = Minecraft.getMinecraft().displayWidth; lastHeight = Minecraft.getMinecraft().displayHeight;
}
public double getScale() {
return this.<Float>getParameter("scale").getValue();
}
- private MGuiMechanicBrowser mGuiMechanicBrowser;
@Override
public void drawDemo(float partialTicks) {
- super.drawDemo(partialTicks);
double scale = FeatureMechanicBrowse.this.<Float>getParameter("scale").getValue();
GlStateManager.scale(scale, scale, 1.0);
@@ -86,44 +97,59 @@ public class FeatureMechanicBrowse extends GuiFeature {
fr.drawString("Open Chat to Select Secrets", 2, fr.FONT_HEIGHT + 5, 0xFFAAAAAA);
}
- private int lastWidth, lastHeight;
-
@Override
- public void drawScreen(float partialTicks) {
-
- int i = Mouse.getEventX();
- int j = Minecraft.getMinecraft().displayHeight - Mouse.getEventY();
- if (Minecraft.getMinecraft().displayWidth != lastWidth || Minecraft.getMinecraft().displayHeight != lastHeight) mGuiMechanicBrowser.initGui();
- lastWidth = Minecraft.getMinecraft().displayWidth; lastHeight = Minecraft.getMinecraft().displayHeight;
- mGuiMechanicBrowser.drawScreen(i,j,partialTicks);
- }
+ public void drawHUD(float partialTicks) {
+ SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
+ if (!skyblockStatus.isOnDungeon()) return;
+ if (DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext() == null || !DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext().getMapProcessor().isInitialized()) return;
+ DungeonContext context = DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext();
- @Override
- public void setFeatureRect(GUIRectangle featureRect) {
- super.setFeatureRect(featureRect);
- mGuiMechanicBrowser.initGui();
- }
+ EntityPlayerSP thePlayer = Minecraft.getMinecraft().thePlayer;
+ Point roomPt = context.getMapProcessor().worldPointToRoomPoint(thePlayer.getPosition());
+ DungeonRoom dungeonRoom = context.getRoomMapper().get(roomPt);
+ if (dungeonRoom == null) return;
+ if (!(dungeonRoom.getRoomProcessor() instanceof GeneralRoomProcessor)) return;
+ GeneralRoomProcessor grp = (GeneralRoomProcessor) dungeonRoom.getRoomProcessor();
- @Override
- public void drawHUD(float partialTicks) { }
+ double scale = FeatureMechanicBrowse.this.<Float>getParameter("scale").getValue();
+ GlStateManager.scale(scale, scale, 1.0);
+
+ Dimension bigDim = getFeatureRect().getRectangleNoScale().getSize();
+ Dimension effectiveDim = new Dimension((int) (bigDim.width / scale),(int)( bigDim.height / scale));
+
+ FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
+ Gui.drawRect(0, 0, effectiveDim.width, fr.FONT_HEIGHT + 4, 0xFF444444);
+ Gui.drawRect(1, 1, effectiveDim.width - 1, fr.FONT_HEIGHT + 3, 0xFF262626);
+ GlStateManager.enableBlend();
+ GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ fr.drawString("Selected: ", 2,2, 0xFFAAAAAA);
+ if (grp.getPath("MECH-BROWSER") == null)
+ fr.drawString("Nothing", fr.getStringWidth("Selected: ") + 2,2, 0xFFAA0000);
+ else {
+ ActionRoute route = grp.getPath("MECH-BROWSER");
+ fr.drawString(route.getMechanic()+" -> "+route.getState(), fr.getStringWidth("Selected: ") + 2,2, 0xFFFFFF00);
+ }
+ fr.drawString("Open Chat to Select Secrets", 2, fr.FONT_HEIGHT + 5, 0xFFAAAAAA);
+ }
@DGEventHandler
public void onMouseInput(GuiScreenEvent.MouseInputEvent.Pre mouseInputEvent) {
-
- try {
- mGuiMechanicBrowser.handleMouseInput();
- } catch (IOException e) {
- e.printStackTrace();
- }
+//
+// try {
+// mGuiMechanicBrowser.handleMouseInput();
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
}
@DGEventHandler
public void onGuiPreRender(GuiScreenEvent.DrawScreenEvent.Pre rendered) {
-
- int i = Mouse.getEventX();
- int j = Minecraft.getMinecraft().displayHeight - Mouse.getEventY();
- mGuiMechanicBrowser.drawScreen(i, j, rendered.renderPartialTicks);
+//
+// int i = Mouse.getEventX();
+// int j = Minecraft.getMinecraft().displayHeight - Mouse.getEventY();
+// mGuiMechanicBrowser.drawScreen(i, j, rendered.renderPartialTicks);
}
@DGEventHandler
@@ -140,9 +166,9 @@ public class FeatureMechanicBrowse extends GuiFeature {
DungeonRoom dungeonRoom = context.getRoomMapper().get(roomPt);
if (dungeonRoom == null) return;
if (!(dungeonRoom.getRoomProcessor() instanceof GeneralRoomProcessor)) return;
- String id = mGuiMechanicBrowser.getPanelMechanicBrowser().getSelectedID();
+ String id = mechanicBrowser.getSelectedId();
if (id != null) {
- Optional.ofNullable(dungeonRoom.getMechanics().get(mGuiMechanicBrowser.getPanelMechanicBrowser().getSelectedID()))
+ Optional.ofNullable(dungeonRoom.getMechanics().get(mechanicBrowser.getSelectedId()))
.ifPresent(a -> {
a.highlight(new Color(0,255,255,50), id +" ("+(
dungeonRoom.getMechanics().get(id).getRepresentingPoint(dungeonRoom) != null ?
@@ -158,10 +184,54 @@ public class FeatureMechanicBrowse extends GuiFeature {
mPanels.add(new MPassiveLabelAndElement("Scale", new MFloatSelectionButton(FeatureMechanicBrowse.this.<Float>getParameter("scale").getValue()) {{
setOnUpdate(() ->{
FeatureMechanicBrowse.this.<Float>getParameter("scale").setValue(this.getData());
- mGuiMechanicBrowser.initGui();
}); }
}));
return mPanels;
}
+
+ @DGEventHandler
+ public void onOpen(GuiOpenEvent event) {
+ if (event.gui instanceof GuiChat) {
+ if (widget != null)
+ OverlayManager.getInstance().addOverlay(lastOpen = widget);
+ } else {
+ if (lastOpen != null)
+ OverlayManager.getInstance().removeOverlay(lastOpen);
+ lastOpen = null;
+ }
+ }
+
+
+ private UUID lastRoomUid = null;
+ @DGEventHandler
+ public void onTick(DGTickEvent event) {
+ Optional<DungeonRoom> dungeonRoomOpt = Optional.ofNullable(DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext())
+ .map(DungeonContext::getMapProcessor).map(a->a.worldPointToRoomPoint(Minecraft.getMinecraft().thePlayer.getPosition()))
+ .map(a -> {
+ return DungeonsGuide.getDungeonsGuide().getDungeonFacade().getContext().getRoomMapper().get(a);
+ });
+ UUID currentUID = dungeonRoomOpt.map(a -> a.getDungeonRoomInfo().getUuid()).orElse(null);
+ // Event-ify above this.
+
+ if (!Objects.equals(lastRoomUid, currentUID)) {
+ if (currentUID == null) {
+ mechanicBrowser = null;
+ widget = null;
+ } else {
+ if (lastOpen != null)
+ 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);
+ });
+ }
+ }
+ if (mechanicBrowser != null)
+ mechanicBrowser.update();
+ lastRoomUid = currentUID;
+ }
}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MGuiMechanicBrowser.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MGuiMechanicBrowser.java
deleted file mode 100644
index d7d69e0a..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MGuiMechanicBrowser.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-
-import kr.syeyoung.dungeonsguide.mod.gui.MGui;
-import lombok.Getter;
-
-public class MGuiMechanicBrowser extends MGui {
- private FeatureMechanicBrowse featureMechanicBrowse;
- @Getter
- private PanelMechanicBrowser panelMechanicBrowser;
- public MGuiMechanicBrowser(FeatureMechanicBrowse mechanicBrowse) {
- this.featureMechanicBrowse = mechanicBrowse;
- panelMechanicBrowser = new PanelMechanicBrowser(mechanicBrowse);
- getMainPanel().add(panelMechanicBrowser);
- }
-
- @Override
- public void initGui() {
- super.initGui();
- panelMechanicBrowser.setBounds(featureMechanicBrowse.getFeatureRect().getRectangle());
- panelMechanicBrowser.setScale(featureMechanicBrowse.getScale());
- }
-
- @Override
- public void drawScreen(int mouseX, int mouseY, float partialTicks) {
- super.drawScreen(mouseX, mouseY, partialTicks);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
deleted file mode 100644
index 7ed916c0..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserElement.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-
-
-import kr.syeyoung.dungeonsguide.mod.gui.MPanel;
-import kr.syeyoung.dungeonsguide.mod.utils.cursor.EnumCursor;
-import lombok.AllArgsConstructor;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.Gui;
-
-import java.awt.*;
-import java.util.function.BiConsumer;
-import java.util.function.Supplier;
-
-@AllArgsConstructor
-public class MechanicBrowserElement extends MPanel {
- private Supplier<String> name;
- private boolean isCategory = false;
- private BiConsumer<MechanicBrowserElement, Point> onClick;
- @Override
- public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
- if (isCategory || isFocused)
- Gui.drawRect(0, 0, bounds.width, bounds.height, 0xFF444444);
- else if (lastAbsClip.contains(absMousex, absMousey))
- Gui.drawRect(0, 0, bounds.width, bounds.height, 0xFF555555);
- Minecraft.getMinecraft().fontRendererObj.drawString((String)name.get(), 4, 1, 0xFFEEEEEE);
- }
-
- @Override
- public Dimension getPreferredSize() {
- return new Dimension(Minecraft.getMinecraft().fontRendererObj.getStringWidth(name.get()) + 8, Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT);
- }
-
- @Override
- public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- if (lastAbsClip.contains(absMouseX, absMouseY) && onClick != null)
- onClick.accept(this, new Point(lastParentPoint.x + bounds.x, lastParentPoint.y + bounds.y));
- }
-
- @Override
- public void mouseMoved(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0) {
- if (lastAbsClip.contains(absMouseX, absMouseY) && onClick != null)
- setCursor(EnumCursor.POINTING_HAND);
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserTooltip.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserTooltip.java
deleted file mode 100644
index 87b100a5..00000000
--- a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/MechanicBrowserTooltip.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide.mod.features.impl.secret.mechanicbrowser;
-
-import kr.syeyoung.dungeonsguide.mod.gui.elements.MList;
-import kr.syeyoung.dungeonsguide.mod.gui.elements.MTooltip;
-import lombok.Getter;
-import net.minecraft.client.gui.Gui;
-
-import java.awt.*;
-
-public class MechanicBrowserTooltip extends MTooltip {
- @Getter
- private MList mList;
- public MechanicBrowserTooltip() {
- mList = new MList();
- mList.setGap(0);
- add(mList);
- }
-
- @Override
- public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
- Dimension effectiveDim = getEffectiveDimension();
- Gui.drawRect(0, 0, effectiveDim.width, effectiveDim.height, 0xFF444444);
- Gui.drawRect(1, 1, effectiveDim.width - 1, effectiveDim.height - 1, 0xFF262626);
- }
-
- @Override
- public void setBounds(Rectangle bounds) {
- super.setBounds(bounds);
- mList.setBounds(new Rectangle(1,1, getEffectiveDimension().width-2, getEffectiveDimension().height-2));
- mList.realignChildren();
- }
-
- @Override
- public void setScale(double scale) {
- super.setScale(scale);
- mList.setBounds(new Rectangle(1,1, getEffectiveDimension().width-2, getEffectiveDimension().height-2));
- mList.realignChildren();
- }
-
- @Override
- public Dimension getPreferredSize() {
- Dimension dim = mList.getPreferredSize();
- return new Dimension((int) ((dim.width + 2) * getScale()), (int) ((dim.height + 2) * getScale()));
- }
-
- @Override
- public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- if (!lastAbsClip.contains(absMouseX, absMouseY)) close();
- }
-}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/mod/features/impl/secret/mechanicbrowser/PanelMechanicBrowser.java
deleted file mode 100644
index