package noppes.npcs.client.gui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.minecraft.client.gui.GuiButton; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; import net.minecraft.nbt.NBTTagList; import noppes.npcs.client.Client; import noppes.npcs.client.controllers.ClientCloneController; import noppes.npcs.client.gui.util.GuiCustomScroll; import noppes.npcs.client.gui.util.GuiMenuSideButton; import noppes.npcs.client.gui.util.GuiMenuTopButton; import noppes.npcs.client.gui.util.GuiNpcButton; import noppes.npcs.client.gui.util.GuiNpcTextField; import noppes.npcs.client.gui.util.IGuiData; import noppes.npcs.client.gui.util.SubGuiInterface; import noppes.npcs.constants.EnumPacketServer; public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiData{ private GuiCustomScroll scroll; private List list; private static String search = ""; public int activeTab = 1; public boolean isServer = false; public GuiNpcMobSpawnerSelector() { super(); xSize = 256; this.closeOnEsc = true; setBackground("menubg.png"); } public void initGui(){ super.initGui(); if(scroll == null){ scroll = new GuiCustomScroll(this,0); scroll.setSize(165, 188); } else scroll.clear(); scroll.guiLeft = guiLeft + 4; scroll.guiTop = guiTop + 26; addScroll(scroll); // GuiMenuTopButton button; // addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones")); // button.active = !isServer; // addTopButton(button = new GuiMenuTopButton(4, button, "gui.server")); // button.active = isServer; addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 165, 20, search)); addButton(new GuiNpcButton(0, guiLeft + 171, guiTop + 80, 80, 20, "gui.done")); addButton(new GuiNpcButton(1, guiLeft + 171, guiTop + 103, 80, 20, "gui.cancel")); addSideButton(new GuiMenuSideButton(21,guiLeft - 90, this.guiTop + 2, 90,22, "1")); addSideButton(new GuiMenuSideButton(22,guiLeft - 90, this.guiTop + 23, 90,22, "2")); addSideButton(new GuiMenuSideButton(23,guiLeft - 90, this.guiTop + 44, 90,22, "3")); addSideButton(new GuiMenuSideButton(24,guiLeft - 90, this.guiTop + 65, 90,22, "4")); addSideButton(new GuiMenuSideButton(25,guiLeft - 90, this.guiTop + 86, 90,22, "5")); addSideButton(new GuiMenuSideButton(26,guiLeft - 45, this.guiTop + 107, 45,22, "6")); addSideButton(new GuiMenuSideButton(27,guiLeft - 90, this.guiTop + 107, 45,22, "7")); addSideButton(new GuiMenuSideButton(28,guiLeft - 45, this.guiTop + 128, 45,22, "8")); addSideButton(new GuiMenuSideButton(29,guiLeft - 90, this.guiTop + 128, 45,22, "9")); addSideButton(new GuiMenuSideButton(30,guiLeft - 45, this.guiTop + 149, 45,22, "10")); addSideButton(new GuiMenuSideButton(31,guiLeft - 90, this.guiTop + 149, 45,22, "11")); addSideButton(new GuiMenuSideButton(32,guiLeft - 45, this.guiTop + 170, 45,22, "12")); addSideButton(new GuiMenuSideButton(33,guiLeft - 90, this.guiTop + 170, 45,22, "13")); addSideButton(new GuiMenuSideButton(34,guiLeft - 45, this.guiTop + 191, 45,22, "14")); addSideButton(new GuiMenuSideButton(35,guiLeft - 90, this.guiTop + 191, 45,22, "15")); getSideButton(20 + activeTab).active = true; showClones(); } public String getSelected(){ return scroll.getSelected(); } private void showClones() { if(isServer){ Client.sendData(EnumPacketServer.CloneList, activeTab); return; } ArrayList list = new ArrayList(); this.list = new ArrayList(ClientCloneController.Instance.getClones(activeTab)); scroll.setList(getSearchList()); } public void keyTyped(char c, int i) { super.keyTyped(c, i); if(search.equals(getTextField(1).getText())) return; search = getTextField(1).getText().toLowerCase(); scroll.setList(getSearchList()); } private List getSearchList(){ if(search.isEmpty()) return new ArrayList(list); List list = new ArrayList(); for(String name : this.list){ if(name.toLowerCase().contains(search)) list.add(name); } return list; } public NBTTagCompound getCompound(){ String sel = scroll.getSelected(); if(sel == null) return null; return ClientCloneController.Instance.getCloneData(player, sel, activeTab); } public void buttonEvent(GuiButton guibutton) { int id = guibutton.id; if(id == 0){ close(); } if(id == 1){ scroll.clear(); close(); } if(id > 20){ activeTab = id - 20; initGui(); } } protected NBTTagList newDoubleNBTList(double ... par1ArrayOfDouble) { NBTTagList nbttaglist = new NBTTagList(); double[] adouble = par1ArrayOfDouble; int i = par1ArrayOfDouble.length; for (int j = 0; j < i; ++j) { double d1 = adouble[j]; nbttaglist.appendTag(new NBTTagDouble(d1)); } return nbttaglist; } @Override public void save() { // TODO Auto-generated method stub } @Override public void setGuiData(NBTTagCompound compound) { NBTTagList nbtlist = compound.getTagList("List", 8); List list = new ArrayList(); for(int i = 0; i < nbtlist.tagCount(); i++){ list.add(nbtlist.getStringTagAt(i)); } this.list = list; scroll.setList(getSearchList()); } }