From cb555e90a6fea879c5cfd9f3de1479a4b09ed7cc Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sun, 27 Oct 2013 18:24:16 -0400 Subject: [PATCH] Filters are now editable by GUI! --- .../client/gui/GuiItemStackFilter.java | 9 ++- .../mekanism/client/gui/GuiOreDictFilter.java | 65 +++++++++++-------- .../common/network/PacketEditFilter.java | 25 +++++-- .../network/PacketLogisticalSorterGui.java | 4 +- .../common/network/PacketNewFilter.java | 2 +- .../common/transporter/ItemStackFilter.java | 10 +++ .../common/transporter/OreDictFilter.java | 10 +++ 7 files changed, 90 insertions(+), 35 deletions(-) diff --git a/common/mekanism/client/gui/GuiItemStackFilter.java b/common/mekanism/client/gui/GuiItemStackFilter.java index e5cbb00af..2ba6f8856 100644 --- a/common/mekanism/client/gui/GuiItemStackFilter.java +++ b/common/mekanism/client/gui/GuiItemStackFilter.java @@ -28,6 +28,8 @@ public class GuiItemStackFilter extends GuiMekanism public boolean isNew = false; + public ItemStackFilter origFilter; + public ItemStackFilter filter = new ItemStackFilter(); public String status = EnumColor.DARK_GREEN + "All OK"; @@ -39,7 +41,8 @@ public class GuiItemStackFilter extends GuiMekanism super(new ContainerFilter(player.inventory)); tileEntity = tentity; - filter = (ItemStackFilter)tileEntity.filters.get(index); + origFilter = (ItemStackFilter)tileEntity.filters.get(index); + filter = ((ItemStackFilter)tileEntity.filters.get(index)).clone(); } public GuiItemStackFilter(EntityPlayer player, TileEntityLogisticalSorter tentity) @@ -84,7 +87,7 @@ public class GuiItemStackFilter extends GuiMekanism PacketHandler.sendPacket(Transmission.SERVER, new PacketNewFilter().setParams(Object3D.get(tileEntity), filter)); } else { - PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), false, filter)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), false, origFilter, filter)); } PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(SorterGuiPacket.SERVER, Object3D.get(tileEntity), 0)); @@ -96,7 +99,7 @@ public class GuiItemStackFilter extends GuiMekanism } else if(guibutton.id == 1) { - PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), true, filter)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), true, origFilter)); PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(SorterGuiPacket.SERVER, Object3D.get(tileEntity), 0)); } } diff --git a/common/mekanism/client/gui/GuiOreDictFilter.java b/common/mekanism/client/gui/GuiOreDictFilter.java index ce4718661..2d967ffcd 100644 --- a/common/mekanism/client/gui/GuiOreDictFilter.java +++ b/common/mekanism/client/gui/GuiOreDictFilter.java @@ -15,6 +15,7 @@ import mekanism.common.network.PacketLogisticalSorterGui; import mekanism.common.network.PacketLogisticalSorterGui.SorterGuiPacket; import mekanism.common.network.PacketNewFilter; import mekanism.common.tileentity.TileEntityLogisticalSorter; +import mekanism.common.transporter.ItemStackFilter; import mekanism.common.transporter.OreDictFilter; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -35,6 +36,8 @@ public class GuiOreDictFilter extends GuiMekanism public boolean isNew = false; + public OreDictFilter origFilter; + public OreDictFilter filter = new OreDictFilter(); private GuiTextField oreDictText; @@ -56,7 +59,10 @@ public class GuiOreDictFilter extends GuiMekanism super(new ContainerFilter(player.inventory)); tileEntity = tentity; - filter = (OreDictFilter)tentity.filters.get(index); + origFilter = (OreDictFilter)tileEntity.filters.get(index); + filter = ((OreDictFilter)tentity.filters.get(index)).clone(); + + updateStackList(filter.oreDictName); } public GuiOreDictFilter(EntityPlayer player, TileEntityLogisticalSorter tentity) @@ -94,14 +100,11 @@ public class GuiOreDictFilter extends GuiMekanism @Override public void keyTyped(char c, int i) { - if(i == Keyboard.KEY_E) + if(!oreDictText.isFocused() || i == Keyboard.KEY_ESCAPE) { - oreDictText.textboxKeyTyped(c, i); - return; + super.keyTyped(c, i); } - super.keyTyped(c, i); - if(oreDictText.isFocused() && i == Keyboard.KEY_RETURN) { setOreDictKey(); @@ -121,6 +124,11 @@ public class GuiOreDictFilter extends GuiMekanism if(guibutton.id == 0) { + if(!oreDictText.getText().isEmpty()) + { + setOreDictKey(); + } + if(filter.oreDictName != null && !filter.oreDictName.isEmpty()) { if(isNew) @@ -128,7 +136,7 @@ public class GuiOreDictFilter extends GuiMekanism PacketHandler.sendPacket(Transmission.SERVER, new PacketNewFilter().setParams(Object3D.get(tileEntity), filter)); } else { - PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), false, filter)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), false, origFilter, filter)); } PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(SorterGuiPacket.SERVER, Object3D.get(tileEntity), 0)); @@ -140,7 +148,7 @@ public class GuiOreDictFilter extends GuiMekanism } else if(guibutton.id == 1) { - PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), true, filter)); + PacketHandler.sendPacket(Transmission.SERVER, new PacketEditFilter().setParams(Object3D.get(tileEntity), true, origFilter)); PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(SorterGuiPacket.SERVER, Object3D.get(tileEntity), 0)); } } @@ -288,22 +296,9 @@ public class GuiOreDictFilter extends GuiMekanism } } - private void setOreDictKey() + private void updateStackList(String oreName) { - String oreName = oreDictText.getText(); - - if(oreName == null || oreName.isEmpty()) - { - status = EnumColor.DARK_RED + "No key entered"; - return; - } - else if(oreName.equals(filter.oreDictName)) - { - status = EnumColor.DARK_RED + "Same key"; - return; - } - - if(iterStacks == null) + if(iterStacks == null) { iterStacks = new ArrayList(); } @@ -355,10 +350,28 @@ public class GuiOreDictFilter extends GuiMekanism } } - filter.oreDictName = oreName; - oreDictText.setText(""); - stackSwitch = 0; stackIndex = -1; } + + private void setOreDictKey() + { + String oreName = oreDictText.getText(); + + if(oreName == null || oreName.isEmpty()) + { + status = EnumColor.DARK_RED + "No key entered"; + return; + } + else if(oreName.equals(filter.oreDictName)) + { + status = EnumColor.DARK_RED + "Same key"; + return; + } + + updateStackList(oreName); + + filter.oreDictName = oreName; + oreDictText.setText(""); + } } diff --git a/common/mekanism/common/network/PacketEditFilter.java b/common/mekanism/common/network/PacketEditFilter.java index 1bc486939..71481c228 100644 --- a/common/mekanism/common/network/PacketEditFilter.java +++ b/common/mekanism/common/network/PacketEditFilter.java @@ -19,6 +19,8 @@ public class PacketEditFilter implements IMekanismPacket { public Object3D object3D; + public TransporterFilter filter; + public TransporterFilter edited; public boolean delete; @@ -34,7 +36,12 @@ public class PacketEditFilter implements IMekanismPacket { object3D = (Object3D)data[0]; delete = (Boolean)data[1]; - edited = (TransporterFilter)data[2]; + filter = (TransporterFilter)data[2]; + + if(!delete) + { + edited = (TransporterFilter)data[3]; + } return this; } @@ -45,14 +52,18 @@ public class PacketEditFilter implements IMekanismPacket object3D = new Object3D(dataStream.readInt(), dataStream.readInt(), dataStream.readInt(), dataStream.readInt()); delete = dataStream.readBoolean(); - edited = TransporterFilter.readFromPacket(dataStream); + filter = TransporterFilter.readFromPacket(dataStream); + + if(!delete) + { + edited = TransporterFilter.readFromPacket(dataStream); + } World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(object3D.dimensionId); if(worldServer != null && object3D.getTileEntity(worldServer) instanceof TileEntityLogisticalSorter) { TileEntityLogisticalSorter sorter = (TileEntityLogisticalSorter)object3D.getTileEntity(worldServer); - TransporterFilter filter = TransporterFilter.readFromPacket(dataStream); if(!sorter.filters.contains(filter)) { @@ -87,7 +98,13 @@ public class PacketEditFilter implements IMekanismPacket dataStream.writeBoolean(delete); ArrayList data = new ArrayList(); - edited.write(data); + filter.write(data); + + if(!delete) + { + edited.write(data); + } + PacketHandler.encode(data.toArray(), dataStream); } } diff --git a/common/mekanism/common/network/PacketLogisticalSorterGui.java b/common/mekanism/common/network/PacketLogisticalSorterGui.java index 0ffdb2c73..599a44714 100644 --- a/common/mekanism/common/network/PacketLogisticalSorterGui.java +++ b/common/mekanism/common/network/PacketLogisticalSorterGui.java @@ -110,7 +110,9 @@ public class PacketLogisticalSorterGui implements IMekanismPacket } player.openContainer.windowId = windowId; - } catch(Exception e) {} + } catch(Exception e) { + e.printStackTrace(); + } } } } diff --git a/common/mekanism/common/network/PacketNewFilter.java b/common/mekanism/common/network/PacketNewFilter.java index 6f0e884a2..4896d8d01 100644 --- a/common/mekanism/common/network/PacketNewFilter.java +++ b/common/mekanism/common/network/PacketNewFilter.java @@ -48,7 +48,7 @@ public class PacketNewFilter implements IMekanismPacket TileEntityLogisticalSorter sorter = (TileEntityLogisticalSorter)object3D.getTileEntity(worldServer); TransporterFilter filter = TransporterFilter.readFromPacket(dataStream); - //sorter.filters.add(filter); + sorter.filters.add(filter); for(EntityPlayer iterPlayer : sorter.playersUsing) { diff --git a/common/mekanism/common/transporter/ItemStackFilter.java b/common/mekanism/common/transporter/ItemStackFilter.java index 9843a1c2c..fbb01d955 100644 --- a/common/mekanism/common/transporter/ItemStackFilter.java +++ b/common/mekanism/common/transporter/ItemStackFilter.java @@ -71,4 +71,14 @@ public class ItemStackFilter extends TransporterFilter { return super.equals(filter) && filter instanceof ItemStackFilter && ((ItemStackFilter)filter).itemType.isItemEqual(itemType); } + + @Override + public ItemStackFilter clone() + { + ItemStackFilter filter = new ItemStackFilter(); + filter.color = color; + filter.itemType = itemType.copy(); + + return filter; + } } diff --git a/common/mekanism/common/transporter/OreDictFilter.java b/common/mekanism/common/transporter/OreDictFilter.java index d50823f47..4084bb880 100644 --- a/common/mekanism/common/transporter/OreDictFilter.java +++ b/common/mekanism/common/transporter/OreDictFilter.java @@ -101,4 +101,14 @@ public class OreDictFilter extends TransporterFilter { return super.equals(filter) && filter instanceof OreDictFilter && ((OreDictFilter)filter).oreDictName.equals(oreDictName); } + + @Override + public OreDictFilter clone() + { + OreDictFilter filter = new OreDictFilter(); + filter.color = color; + filter.oreDictName = oreDictName; + + return filter; + } }