package kr.syeyoung.dungeonsguide.config.guiconfig; import kr.syeyoung.dungeonsguide.config.Config; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.*; import kr.syeyoung.dungeonsguide.utils.TextUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import java.awt.*; import java.io.IOException; import java.util.*; import java.util.List; public class FeatureEditPane extends MPanel { private List features; private List le = new ArrayList(); private GuiConfig config; private MTextField textField; private String search = ""; public FeatureEditPane(List features, GuiConfig config) { this.features = features; this.config = config; buildElements(); } public void buildElements() { for (AbstractFeature feature : features) { MFeature mFeature = new MFeature(feature, config); mFeature.setHover(new Color(94, 94, 94, 255)); le.add(mFeature); add(mFeature); } textField = new MTextField() { @Override public void edit(String str) { offsetY = 0; search = str; } }; textField.setText(""); textField.setBounds(new Rectangle(getBounds().width - 200, 0, 200, 20)); add(textField); } @Override public void onBoundsUpdate() { for (MPanel panel :getChildComponents()){ panel.setSize(new Dimension(getBounds().width, panel.getPreferredSize().height)); } textField.setBounds(new Rectangle(getBounds().width - 200, 0, 200, 20)); } @Override public void resize(int parentWidth, int parentHeight) { this.setBounds(new Rectangle(5,1,parentWidth-10,parentHeight-2)); } @Override public List getChildComponents() { List comp = new ArrayList(); comp.add(textField); for (MFeature feature:le) { if (feature.getFeature().getName().toLowerCase().contains(search.toLowerCase())) comp.add(feature); } return comp; } private int offsetY = 0; @Override public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) { int heights = 0; for (MPanel panel:getChildComponents()) { panel.setPosition(new Point(panel.getBounds().x, -offsetY + heights)); heights += panel.getBounds().height + 5; } } @Override public void render0(ScaledResolution resolution, Point parentPoint, Rectangle parentClip, int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks) { super.render0(resolution, parentPoint, parentClip, absMousex, absMousey, relMousex0, relMousey0, partialTicks); } @Override public void mouseScrolled(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0, int scrollAmount) { if (scrollAmount > 0) offsetY -= 20; else if (scrollAmount < 0) offsetY += 20; if (offsetY < 0) offsetY = 0; } }