From abe549bf1371d79f2410ac3c78e4603e9937a7dc Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Wed, 30 Oct 2013 23:48:50 -0400 Subject: [PATCH] Started some work on more filter tab information. --- .../client/gui/GuiItemStackFilter.java | 2 +- .../client/gui/GuiLogisticalSorter.java | 179 +++++++++++++++++- .../mekanism/gui/GuiLogisticalSorter.png | Bin 3722 -> 3888 bytes 3 files changed, 175 insertions(+), 6 deletions(-) diff --git a/common/mekanism/client/gui/GuiItemStackFilter.java b/common/mekanism/client/gui/GuiItemStackFilter.java index 6041e7804..82dda7762 100644 --- a/common/mekanism/client/gui/GuiItemStackFilter.java +++ b/common/mekanism/client/gui/GuiItemStackFilter.java @@ -108,7 +108,7 @@ public class GuiItemStackFilter extends GuiMekanism int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - fontRenderer.drawString((isNew ? "New" : "Edit") + " ItemStack Filter", 43, 6, 0x404040); + fontRenderer.drawString((isNew ? "New" : "Edit") + " Item Filter", 43, 6, 0x404040); fontRenderer.drawString("Status: " + status, 35, 20, 0x00CD00); fontRenderer.drawString("ItemStack Details:", 35, 32, 0x00CD00); diff --git a/common/mekanism/client/gui/GuiLogisticalSorter.java b/common/mekanism/client/gui/GuiLogisticalSorter.java index 368fb9c9c..9451b8899 100644 --- a/common/mekanism/client/gui/GuiLogisticalSorter.java +++ b/common/mekanism/client/gui/GuiLogisticalSorter.java @@ -1,6 +1,11 @@ package mekanism.client.gui; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import mekanism.api.Object3D; import mekanism.client.render.MekanismRenderer; @@ -16,9 +21,10 @@ import mekanism.common.transporter.OreDictFilter; import mekanism.common.transporter.TransporterFilter; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; -import mekanism.common.util.TransporterUtils; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -35,6 +41,10 @@ public class GuiLogisticalSorter extends GuiMekanism public int dragOffset = 0; + public int stackSwitch = 0; + + public Map oreDictStacks = new HashMap(); + public float scroll; public GuiLogisticalSorter(EntityPlayer player, TileEntityLogisticalSorter tentity) @@ -59,6 +69,69 @@ public class GuiLogisticalSorter extends GuiMekanism return (int)((tileEntity.filters.size()*scroll) - ((4F/(float)tileEntity.filters.size()))*scroll); } + @Override + public void updateScreen() + { + super.updateScreen(); + + if(stackSwitch > 0) + { + stackSwitch--; + } + + if(stackSwitch == 0) + { + for(Map.Entry entry : oreDictStacks.entrySet()) + { + if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() > 0) + { + if(entry.getValue().stackIndex == -1 || entry.getValue().stackIndex == entry.getValue().iterStacks.size()-1) + { + entry.getValue().stackIndex = 0; + } + else if(entry.getValue().stackIndex < entry.getValue().iterStacks.size()-1) + { + entry.getValue().stackIndex++; + } + + entry.getValue().renderStack = entry.getValue().iterStacks.get(entry.getValue().stackIndex); + } + } + + stackSwitch = 20; + } + else { + for(Map.Entry entry : oreDictStacks.entrySet()) + { + if(entry.getValue().iterStacks != null && entry.getValue().iterStacks.size() == 0) + { + entry.getValue().renderStack = null; + } + } + } + + Set filtersVisible = new HashSet(); + + for(int i = 0; i < 4; i++) + { + if(tileEntity.filters.get(getFilterIndex()+i) instanceof OreDictFilter) + { + filtersVisible.add((OreDictFilter)tileEntity.filters.get(getFilterIndex()+i)); + } + } + + for(TransporterFilter filter : tileEntity.filters) + { + if(filter instanceof OreDictFilter && !filtersVisible.contains(filter)) + { + if(oreDictStacks.containsKey(filter)) + { + oreDictStacks.remove(filter); + } + } + } + } + @Override public void mouseClicked(int mouseX, int mouseY, int button) { @@ -190,13 +263,40 @@ public class GuiLogisticalSorter extends GuiMekanism if(filter instanceof ItemStackFilter) { - fontRenderer.drawString("ItemStack Filter", 58, yStart + 2, 0x404040); - fontRenderer.drawString("Color: " + (filter.color != null ? filter.color.getName() : "None"), 58, yStart + 11, 0x404040); + ItemStackFilter itemFilter = (ItemStackFilter)filter; + + if(itemFilter.itemType != null) + { + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + itemRenderer.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), itemFilter.itemType, 59, yStart + 3); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + + fontRenderer.drawString("Item Filter", 78, yStart + 2, 0x404040); + fontRenderer.drawString(filter.color != null ? filter.color.getName() : "None", 78, yStart + 11, 0x404040); } else if(filter instanceof OreDictFilter) { - fontRenderer.drawString("OreDict Filter", 58, yStart + 2, 0x404040); - fontRenderer.drawString("Color: " + (filter.color != null ? filter.color.getName() : "None"), 58, yStart + 11, 0x404040); + OreDictFilter oreFilter = (OreDictFilter)filter; + + fontRenderer.drawString("OreDict Filter", 78, yStart + 2, 0x404040); + fontRenderer.drawString(filter.color != null ? filter.color.getName() : "None", 78, yStart + 11, 0x404040); + + if(!oreDictStacks.containsKey(oreFilter)) + { + updateStackList(oreFilter); + } + + if(oreDictStacks.get(filter).renderStack != null) + { + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + itemRenderer.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), oreDictStacks.get(filter).renderStack, 59, yStart + 3); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } } } } @@ -295,4 +395,73 @@ public class GuiLogisticalSorter extends GuiMekanism return list; } + + private void updateStackList(OreDictFilter filter) + { + if(!oreDictStacks.containsKey(filter)) + { + oreDictStacks.put(filter, new StackData()); + } + + if(oreDictStacks.get(filter).iterStacks == null) + { + oreDictStacks.get(filter).iterStacks = new ArrayList(); + } + else { + oreDictStacks.get(filter).iterStacks.clear(); + } + + List keys = new ArrayList(); + + for(String s : OreDictionary.getOreNames()) + { + if(filter.oreDictName.equals(s) || filter.oreDictName.equals("*")) + { + keys.add(s); + } + else if(filter.oreDictName.endsWith("*") && !filter.oreDictName.startsWith("*")) + { + if(s.startsWith(filter.oreDictName.substring(0, filter.oreDictName.length()-1))) + { + keys.add(s); + } + } + else if(filter.oreDictName.startsWith("*") && !filter.oreDictName.endsWith("*")) + { + if(s.endsWith(filter.oreDictName.substring(1))) + { + keys.add(s); + } + } + else if(filter.oreDictName.startsWith("*") && filter.oreDictName.endsWith("*")) + { + if(s.contains(filter.oreDictName.substring(1, filter.oreDictName.length()-1))) + { + keys.add(s); + } + } + } + + for(String key : keys) + { + for(ItemStack stack : OreDictionary.getOres(key)) + { + ItemStack toAdd = stack.copy(); + + if(!oreDictStacks.get(filter).iterStacks.contains(stack)) + { + oreDictStacks.get(filter).iterStacks.add(stack.copy()); + } + } + } + + oreDictStacks.get(filter).stackIndex = -1; + } + + public static class StackData + { + public List iterStacks; + public int stackIndex; + public ItemStack renderStack; + } } \ No newline at end of file diff --git a/resources/assets/mekanism/gui/GuiLogisticalSorter.png b/resources/assets/mekanism/gui/GuiLogisticalSorter.png index f01c733c082c9f1c3ccd6c94012405f1b04c5fb6..56efb5e5d19ec83bf8857581bc5608a53b56382c 100644 GIT binary patch literal 3888 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 R%^wr+I^ySEdx-GUe*x7~5wHLN