diff options
author | syeyoung <cyong06@naver.com> | 2021-08-01 23:43:10 +0900 |
---|---|---|
committer | syeyoung <cyong06@naver.com> | 2021-08-01 23:43:10 +0900 |
commit | d1c36c2412b98350f8336e38361e49b3655982d5 (patch) | |
tree | 34f2d6396f69840f623254b5c6e50c3563f5cfda /src/main/java/kr/syeyoung/dungeonsguide/features | |
parent | 16a4367663f5ed2a909804de6d319c97c9854ecc (diff) | |
download | Skyblock-Dungeons-Guide-d1c36c2412b98350f8336e38361e49b3655982d5.tar.gz Skyblock-Dungeons-Guide-d1c36c2412b98350f8336e38361e49b3655982d5.tar.bz2 Skyblock-Dungeons-Guide-d1c36c2412b98350f8336e38361e49b3655982d5.zip |
Too many changes to describe
Config gui overhaul.
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/features')
13 files changed, 102 insertions, 76 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java index 7b2d5ba0..c71639cd 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java @@ -21,9 +21,7 @@ package kr.syeyoung.dungeonsguide.features; import com.google.common.base.Supplier; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.PanelDefaultParameterConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.*; import kr.syeyoung.dungeonsguide.config.types.TypeConverter; import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry; import kr.syeyoung.dungeonsguide.gui.MPanel; @@ -84,11 +82,15 @@ public abstract class AbstractFeature { return object; } - public String getEditRoute(final GuiConfig config) { + public String getEditRoute(RootConfigPanel rootConfigPanel) { ConfigPanelCreator.map.put("base." + key , new Supplier<MPanel>() { @Override public MPanel get() { - return new PanelDefaultParameterConfig(config, AbstractFeature.this, Collections.emptyList(), Collections.emptySet()); + MFeatureEdit featureEdit = new MFeatureEdit(AbstractFeature.this, rootConfigPanel); + for (FeatureParameter parameter: getParameters()) { + featureEdit.addParameterEdit(parameter.getKey(), new MParameterEdit(AbstractFeature.this, parameter, rootConfigPanel)); + } + return featureEdit; } }); return "base." + key ; diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java index b1db6d2d..bf0d8961 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java @@ -51,6 +51,8 @@ public class FeatureRegistry { private static final Map<String, AbstractFeature> featureByKey = new HashMap<String, AbstractFeature>(); @Getter private static final Map<String, List<AbstractFeature>> featuresByCategory = new HashMap<String, List<AbstractFeature>>(); + @Getter + private static final Map<String, String> categoryDescription = new HashMap<>(); public static AbstractFeature getFeatureByKey(String key) { return featureByKey.get(key); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java index 4c60c090..396d244d 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/GuiFeature.java @@ -19,7 +19,7 @@ package kr.syeyoung.dungeonsguide.features; import com.google.gson.JsonObject; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.GuiConfigV2; import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig; import kr.syeyoung.dungeonsguide.config.types.GUIRectangle; import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry; @@ -135,11 +135,11 @@ public abstract class GuiFeature extends AbstractFeature implements ScreenRender setOnActionPerformed(() -> { GuiScreen guiScreen = guiGuiLocationConfig.getBefore(); if (guiScreen == null) { - guiScreen = new GuiConfig(); + guiScreen = new GuiConfigV2(); } Minecraft.getMinecraft().displayGuiScreen(guiScreen); - if (guiScreen instanceof GuiConfig) { - ((GuiConfig) guiScreen).getTabbedPane().setCurrentPage(getEditRoute((GuiConfig) guiScreen)); + if (guiScreen instanceof GuiConfigV2) { + ((GuiConfigV2) guiScreen).getRootConfigPanel().setCurrentPageAndPushHistory(getEditRoute(((GuiConfigV2) guiScreen).getRootConfigPanel())); } }); } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java index 1711f955..8e585a0b 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java @@ -21,11 +21,13 @@ package kr.syeyoung.dungeonsguide.features.impl.boss; import com.google.common.base.Supplier; import kr.syeyoung.dungeonsguide.DungeonsGuide; import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.PanelDefaultParameterConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.ConfigPanelCreator; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MFeatureEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MParameterEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel; import kr.syeyoung.dungeonsguide.config.types.AColor; import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; +import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureParameter; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; import kr.syeyoung.dungeonsguide.features.SimpleFeature; @@ -177,14 +179,17 @@ public class FeatureWarningOnPortal extends SimpleFeature implements StyledTextP @Override - public String getEditRoute(final GuiConfig config) { + public String getEditRoute(RootConfigPanel rootConfigPanel) { ConfigPanelCreator.map.put("base." + getKey() , new Supplier<MPanel>() { @Override public MPanel get() { - return new PanelDefaultParameterConfig(config, FeatureWarningOnPortal.this, - Arrays.asList(new MPanel[] { - new PanelTextParameterConfig(config, FeatureWarningOnPortal.this) - }), Collections.singleton("textStyles")); + MFeatureEdit featureEdit = new MFeatureEdit(FeatureWarningOnPortal.this, rootConfigPanel); + featureEdit.addParameterEdit("textStyles", new PanelTextParameterConfig(FeatureWarningOnPortal.this)); + for (FeatureParameter parameter: getParameters()) { + if (parameter.getKey().equals("textStyles")) continue; + featureEdit.addParameterEdit(parameter.getKey(), new MParameterEdit(FeatureWarningOnPortal.this, parameter, rootConfigPanel)); + } + return featureEdit; } }); return "base." + getKey() ; diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknameColor.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknameColor.java index c81539a0..7a46de61 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknameColor.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknameColor.java @@ -18,8 +18,8 @@ package kr.syeyoung.dungeonsguide.features.impl.cosmetics; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.ConfigPanelCreator; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel; import kr.syeyoung.dungeonsguide.features.FeatureParameter; import kr.syeyoung.dungeonsguide.features.SimpleFeature; @@ -30,8 +30,8 @@ public class FeatureNicknameColor extends SimpleFeature { } @Override - public String getEditRoute(final GuiConfig config) { - ConfigPanelCreator.map.put("base." + getKey() , () -> new PrefixSelectorGUI(config, "color", new String[] { + public String getEditRoute(RootConfigPanel rootConfigPanel) { + ConfigPanelCreator.map.put("base." + getKey() , () -> new PrefixSelectorGUI("color", new String[] { "§9Party §8> §r§a[RANK§6+§a] %prefix%%name%§f: TEST", "§2Guild > §r§a[RANK§6+§a] %prefix%%name% §3[Vet]§f: TEST", "§dTo §r§r§a[RANK§r§6+§r§a] %prefix%%name%§r§7: §r§7TEST§r", diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknamePrefix.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknamePrefix.java index 4796eaa1..983e086b 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknamePrefix.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/FeatureNicknamePrefix.java @@ -18,8 +18,8 @@ package kr.syeyoung.dungeonsguide.features.impl.cosmetics; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.ConfigPanelCreator; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel; import kr.syeyoung.dungeonsguide.features.FeatureParameter; import kr.syeyoung.dungeonsguide.features.SimpleFeature; @@ -30,8 +30,8 @@ public class FeatureNicknamePrefix extends SimpleFeature { } @Override - public String getEditRoute(final GuiConfig config) { - ConfigPanelCreator.map.put("base." + getKey() , () -> new PrefixSelectorGUI(config, "prefix", new String[] { + public String getEditRoute(RootConfigPanel rootConfigPanel) { + ConfigPanelCreator.map.put("base." + getKey() , () -> new PrefixSelectorGUI("prefix", new String[] { "§9Party §8> §r%prefix% §a[RANK§6+§a] %name%§f: TEST", "§2Guild > §r%prefix% §a[RANK§6+§a] %name% §3[Vet]§f: TEST", "§dTo §r%prefix% §r§a[RANK§r§6+§r§a] %name%§r§7: §r§7TEST§r", diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/PrefixSelectorGUI.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/PrefixSelectorGUI.java index e888edcf..4750831e 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/PrefixSelectorGUI.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/cosmetics/PrefixSelectorGUI.java @@ -19,7 +19,6 @@ package kr.syeyoung.dungeonsguide.features.impl.cosmetics; import kr.syeyoung.dungeonsguide.DungeonsGuide; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; import kr.syeyoung.dungeonsguide.cosmetics.ActiveCosmetic; import kr.syeyoung.dungeonsguide.cosmetics.CosmeticData; import kr.syeyoung.dungeonsguide.cosmetics.CosmeticsManager; @@ -37,12 +36,10 @@ import java.util.List; import java.util.function.Function; public class PrefixSelectorGUI extends MPanel { - private GuiConfig config; private String cosmeticType; private Function<String, String> optionTransformer; - public PrefixSelectorGUI(GuiConfig config, String cosmeticType, String[] previews, Function<String, String> optionTransformer) { - this.config = config; + public PrefixSelectorGUI(String cosmeticType, String[] previews, Function<String, String> optionTransformer) { this.cosmeticType = cosmeticType; this.previews = previews; this.optionTransformer = optionTransformer; diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java index 54631fcb..56ae9be8 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java @@ -84,7 +84,7 @@ public class FeatureDungeonRoomName extends TextHUDFeature { Point roomPt = skyblockStatus.getContext().getMapProcessor().worldPointToRoomPoint(player.getPosition()); DungeonRoom dungeonRoom = skyblockStatus.getContext().getRoomMapper().get(roomPt); List<StyledText> actualBit = new ArrayList<StyledText>(); - dummyText.add(new StyledText("You're in ","in")); + actualBit.add(new StyledText("You're in ","in")); if (dungeonRoom == null) { actualBit.add(new StyledText("Unknown","roomname")); } else { diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java index 09e89928..e2ff6a17 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java @@ -18,7 +18,6 @@ package kr.syeyoung.dungeonsguide.features.impl.party.playerpreview; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; import kr.syeyoung.dungeonsguide.gui.MPanel; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -35,10 +34,8 @@ import java.util.Set; public class DataRendererEditor extends MPanel { private final FeatureViewPlayerOnJoin feature; - private final GuiConfig config; - public DataRendererEditor(GuiConfig config, FeatureViewPlayerOnJoin featureViewPlayerOnJoin) { - this.config = config; + public DataRendererEditor(FeatureViewPlayerOnJoin featureViewPlayerOnJoin) { this.feature = featureViewPlayerOnJoin; } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java index c1730ed7..62405303 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java @@ -24,11 +24,13 @@ import io.github.moulberry.hychat.HyChat; import io.github.moulberry.hychat.chat.ChatManager; import io.github.moulberry.hychat.gui.GuiChatBox; import kr.syeyoung.dungeonsguide.DungeonsGuide; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.PanelDefaultParameterConfig; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.ConfigPanelCreator; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MFeatureEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MParameterEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel; import kr.syeyoung.dungeonsguide.cosmetics.ActiveCosmetic; import kr.syeyoung.dungeonsguide.cosmetics.CosmeticData; +import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureParameter; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; import kr.syeyoung.dungeonsguide.features.SimpleFeature; @@ -585,14 +587,18 @@ public class FeatureViewPlayerOnJoin extends SimpleFeature implements GuiPostRen @Override - public String getEditRoute(final GuiConfig config) { + public String getEditRoute(RootConfigPanel rootConfigPanel) { ConfigPanelCreator.map.put("base." + getKey() , new Supplier<MPanel>() { @Override public MPanel get() { - return new PanelDefaultParameterConfig(config, FeatureViewPlayerOnJoin.this, - Arrays.asList(new MPanel[] { - new DataRendererEditor(config, FeatureViewPlayerOnJoin.this) - }), Collections.singleton("datarenderers")); + + MFeatureEdit featureEdit = new MFeatureEdit(FeatureViewPlayerOnJoin.this, rootConfigPanel); + featureEdit.addParameterEdit("datarenderers", new DataRendererEditor(FeatureViewPlayerOnJoin.this)); + for (FeatureParameter parameter: getParameters()) { + if (parameter.getKey().equals("datarenderers")) continue; + featureEdit.addParameterEdit(parameter.getKey(), new MParameterEdit(FeatureViewPlayerOnJoin.this, parameter, rootConfigPanel)); + } + return featureEdit; } }); return "base." + getKey() ; diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java index 224ace06..d9c97ff6 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java @@ -21,7 +21,6 @@ package kr.syeyoung.dungeonsguide.features.impl.secret; import com.google.common.collect.Lists; import kr.syeyoung.dungeonsguide.DungeonsGuide; import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig; import kr.syeyoung.dungeonsguide.config.types.AColor; import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; @@ -78,7 +77,6 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPreRenderLis @Override public void drawHUD(float partialTicks) { if (Minecraft.getMinecraft().currentScreen != null && !(Minecraft.getMinecraft().currentScreen instanceof GuiGuiLocationConfig - || Minecraft.getMinecraft().currentScreen instanceof GuiConfig || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonRoomEdit || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonAddSet || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonParameterEdit diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java index 70c0b2be..904aaaee 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java @@ -18,7 +18,6 @@ package kr.syeyoung.dungeonsguide.features.text; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; import kr.syeyoung.dungeonsguide.config.types.AColor; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MEditableAColor; @@ -47,15 +46,12 @@ public class PanelTextParameterConfig extends MPanel { @Override public void onBoundsUpdate() { } - @Override - public void resize(int parentWidth, int parentHeight) { - this.setBounds(new Rectangle(5,5,parentWidth-10, 120)); + public Dimension getPreferredSize() { + return new Dimension(400, 120); } - private final GuiConfig config; - public PanelTextParameterConfig(final GuiConfig config, final StyledTextProvider feature) { - this.config = config; + public PanelTextParameterConfig(final StyledTextProvider feature) { this.feature = feature; setBackgroundColor(new Color(38, 38, 38, 255)); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java index b3488bdd..0aecc0e6 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java @@ -19,16 +19,20 @@ package kr.syeyoung.dungeonsguide.features.text; import com.google.common.base.Supplier; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.ConfigPanelCreator; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.GuiConfig; +import com.google.gson.JsonObject; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.ConfigPanelCreator; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MFeatureEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MParameterEdit; +import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel; import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig; -import kr.syeyoung.dungeonsguide.config.guiconfig.old.PanelDefaultParameterConfig; import kr.syeyoung.dungeonsguide.config.types.AColor; +import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureParameter; import kr.syeyoung.dungeonsguide.features.GuiFeature; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MFloatSelectionButton; import kr.syeyoung.dungeonsguide.gui.elements.MPassiveLabelAndElement; +import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton; import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.GlStateManager; @@ -40,10 +44,8 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro protected TextHUDFeature(String category, String name, String description, String key, boolean keepRatio, int width, int height) { super(category, name, description, key, keepRatio, width, height); this.parameters.put("textStylesNEW", new FeatureParameter<List<TextStyle>>("textStylesNEW", "", "", new ArrayList<TextStyle>(), "list_textStyle")); - this.parameters.put("alignRight", new FeatureParameter<Boolean>("alignRight", "Align Right", "Align text to right", false, "boolean")); - this.parameters.put("alignCenter", new FeatureParameter<Boolean>("alignCenter", "Align Center", "Align text to center (overrides alignright)", false, "boolean")); + this.parameters.put("alignment", new FeatureParameter<String>("alignment", "Alignment", "Alignment", "LEFT", "string")); this.parameters.put("scale", new FeatureParameter<Float>("scale", "Scale", "Scale", 1.0f, "float")); - } @Override @@ -59,7 +61,8 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro scale = this.<Float>getParameter("scale").getValue(); } GlStateManager.scale(scale, scale, 0); - StyledTextRenderer.drawTextWithStylesAssociated(getText(), 0, 0, (int) (Math.abs(getFeatureRect().getWidth())/scale), getStylesMap(),this.<Boolean>getParameter("alignCenter").getValue() ? StyledTextRenderer.Alignment.CENTER : this.<Boolean>getParameter("alignRight").getValue() ? StyledTextRenderer.Alignment.RIGHT : StyledTextRenderer.Alignment.LEFT); + StyledTextRenderer.drawTextWithStylesAssociated(asd, 0, 0, (int) (Math.abs(getFeatureRect().getWidth())/scale), getStylesMap(), + StyledTextRenderer.Alignment.valueOf(TextHUDFeature.this.<String>getParameter("alignment").getValue())); } } @@ -78,7 +81,9 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro scale = this.<Float>getParameter("scale").getValue(); } GlStateManager.scale(scale, scale, 0); - StyledTextRenderer.drawTextWithStylesAssociated(getDummyText(), 0, 0, (int) (Math.abs(getFeatureRect().getWidth())/scale), getStylesMap(),this.<Boolean>getParameter("alignCenter").getValue() ? StyledTextRenderer.Alignment.CENTER : this.<Boolean>getParameter("alignRight").getValue() ? StyledTextRenderer.Alignment.RIGHT : StyledTextRenderer.Alignment.LEFT); + + StyledTextRenderer.drawTextWithStylesAssociated(asd, 0, 0, (int) (Math.abs(getFeatureRect().getWidth())/scale), getStylesMap(), + StyledTextRenderer.Alignment.valueOf(TextHUDFeature.this.<String>getParameter("alignment").getValue())); } public int countLines(List<StyledText> texts) { @@ -124,14 +129,27 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro @Override - public String getEditRoute(final GuiConfig config) { + public String getEditRoute(RootConfigPanel rootConfigPanel) { ConfigPanelCreator.map.put("base." + getKey() , new Supplier<MPanel>() { @Override public MPanel get() { - return new PanelDefaultParameterConfig(config, TextHUDFeature.this, - Arrays.asList(new MPanel[] { - new PanelTextParameterConfig(config, TextHUDFeature.this) - }), Collections.singleton("textStylesNEW")); + + MFeatureEdit featureEdit = new MFeatureEdit(TextHUDFeature.this, rootConfigPanel); + featureEdit.addParameterEdit("textStyleNEW", new PanelTextParameterConfig(TextHUDFeature.this)); + + StyledTextRenderer.Alignment alignment = StyledTextRenderer.Alignment.valueOf(TextHUDFeature.this.<String>getParameter("alignment").getValue()); + MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(Arrays.asList("LEFT", "CENTER", "RIGHT"), alignment.name()); + mStringSelectionButton.setOnUpdate(() -> { + TextHUDFeature.this.<String>getParameter("alignment").setValue(mStringSelectionButton.getSelected()); + }); + featureEdit.addParameterEdit("alignment", new MParameterEdit(TextHUDFeature.this, TextHUDFeature.this.<String>getParameter("alignment"), rootConfigPanel, mStringSelectionButton)); + + for (FeatureParameter parameter: getParameters()) { + if (parameter.getKey().equals("textStylesNEW")) continue; + if (parameter.getKey().equals("alignment")) continue; + featureEdit.addParameterEdit(parameter.getKey(), new MParameterEdit(TextHUDFeature.this, parameter, rootConfigPanel)); + } + return featureEdit; } }); return "base." + getKey() ; @@ -140,18 +158,13 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro @Override public List<MPanel> getTooltipForEditor(GuiGuiLocationConfig guiGuiLocationConfig) { List<MPanel> mPanels = super.getTooltipForEditor(guiGuiLocationConfig); - mPanels.add(new MPassiveLabelAndElement("Align Right", new MToggleButton() {{ - setEnabled(TextHUDFeature.this.<Boolean>getParameter("alignRight").getValue()); - setOnToggle(() ->{ - TextHUDFeature.this.<Boolean>getParameter("alignRight").setValue(isEnabled()); - }); } - })); - mPanels.add(new MPassiveLabelAndElement("Align Center", new MToggleButton() {{ - setEnabled(TextHUDFeature.this.<Boolean>getParameter("alignCenter").getValue()); - setOnToggle(() ->{ - TextHUDFeature.this.<Boolean>getParameter("alignCenter").setValue(isEnabled()); - }); } - })); + StyledTextRenderer.Alignment alignment = StyledTextRenderer.Alignment.valueOf(this.<String>getParameter("alignment").getValue()); + MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(Arrays.asList("LEFT", "CENTER", "RIGHT"), alignment.name()); + mStringSelectionButton.setOnUpdate(() -> { + TextHUDFeature.this.<String>getParameter("alignment").setValue(mStringSelectionButton.getSelected()); + }); + + mPanels.add(new MPassiveLabelAndElement("Alignment", mStringSelectionButton)); if (!doesScaleWithHeight()) { mPanels.add(new MPassiveLabelAndElement("Scale", new MFloatSelectionButton(TextHUDFeature.this.<Float>getParameter("scale").getValue()) {{ setOnUpdate(() ->{ @@ -162,4 +175,14 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro return mPanels; } + + @Override + public void loadConfig(JsonObject jsonObject) { + super.loadConfig(jsonObject); + StyledTextRenderer.Alignment alignment; + try { + alignment = StyledTextRenderer.Alignment.valueOf(TextHUDFeature.this.<String>getParameter("alignment").getValue()); + } catch (Exception e) {alignment = StyledTextRenderer.Alignment.LEFT;} + TextHUDFeature.this.<String>getParameter("alignment").setValue(alignment.name()); + } } |