diff options
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java')
-rwxr-xr-x | src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java index cdc15456..4281f6a3 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/MFeature.java @@ -6,10 +6,13 @@ import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MButton; import kr.syeyoung.dungeonsguide.gui.elements.MLabel; import kr.syeyoung.dungeonsguide.gui.elements.MStringSelectionButton; +import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton; import lombok.Getter; import lombok.Setter; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.GlStateManager; import java.awt.*; import java.util.Arrays; @@ -17,7 +20,6 @@ import java.util.List; import java.util.ArrayList; public class MFeature extends MPanel { - private MLabel label; @Getter private AbstractFeature feature; @@ -33,31 +35,30 @@ public class MFeature extends MPanel { this.config = config; this.feature = abstractFeature; - this.add(this.label = new MLabel()); - this.label.setText(abstractFeature.getName()); - { - final MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(new ArrayList<String>(Arrays.asList(new String[] {"on", "off"})), abstractFeature.isEnabled() ? "on" : "off"); - mStringSelectionButton.setOnUpdate(new Runnable() { + final MToggleButton mStringSelectionButton = new MToggleButton(); + mStringSelectionButton.setOnToggle(new Runnable() { @Override public void run() { - String selected = mStringSelectionButton.getSelected(); - feature.setEnabled("on".equals(selected)); + boolean selected = mStringSelectionButton.isEnabled(); + feature.setEnabled(selected); } }); addons.add(mStringSelectionButton); + mStringSelectionButton.setSize(new Dimension(30, 15)); add(mStringSelectionButton); } - if (!abstractFeature.getParameters().isEmpty()) { + if (abstractFeature.getParameters().size() != 0) { MButton button = new MButton(); button.setText("Edit"); button.setOnActionPerformed(new Runnable() { @Override public void run() { - Minecraft.getMinecraft().displayGuiScreen(new GuiParameterConfig(config, abstractFeature)); + config.getTabbedPane().setCurrentPage(abstractFeature.getEditRoute(config)); } }); addons.add(button); + button.setSize(new Dimension(50, 15)); add(button); } if (abstractFeature instanceof GuiFeature) { @@ -70,15 +71,30 @@ public class MFeature extends MPanel { } }); addons.add(button); + button.setSize(new Dimension(50, 15)); add(button); } } @Override public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) { + Gui.drawRect(0,0,getBounds().width, getBounds().height,0xFF444444); if (hover != null && new Rectangle(new Point(0,0),getBounds().getSize()).contains(relMousex0, relMousey0)) { - Gui.drawRect(0,0,getBounds().width, getBounds().height, hover.getRGB()); + Gui.drawRect(1,18,getBounds().width -1, getBounds().height-1, hover.getRGB()); + } else { + Gui.drawRect(1,18,getBounds().width -1, getBounds().height-1, 0xFF545454); } + Gui.drawRect(0,17,getBounds().width, 18,0xFF444444); + + + FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; + GlStateManager.pushMatrix(); + GlStateManager.translate(5,5,0); + GlStateManager.scale(1.0,1.0,0); + fr.drawString(feature.getName(), 0,0, 0xFFFFFFFF); + GlStateManager.popMatrix(); + + fr.drawSplitString(feature.getDescription(), 5, 23, getBounds().width -10, 0xFFBFBFBF); } @Override @@ -87,12 +103,19 @@ public class MFeature extends MPanel { } @Override + public Dimension getPreferredSize() { + FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; + int descriptionHeight = fr.listFormattedStringToWidth(feature.getDescription(), Math.max(100, getBounds().width - 10)).size() * fr.FONT_HEIGHT; + + return new Dimension(100, descriptionHeight + 28); + } + + @Override public void onBoundsUpdate() { - int x = getBounds().width - 50; + int x = getBounds().width - 5; for (MPanel panel : addons) { - panel.setBounds(new Rectangle(x, 3, 50, getBounds().height - 6)); - x -= 50; + panel.setBounds(new Rectangle(x - panel.getPreferredSize().width, 3, panel.getPreferredSize().width, 12)); + x -= panel.getPreferredSize().width + 5; } - label.setBounds(new Rectangle(0,0,x, getBounds().height)); } } |