From 2cd3d5d899ea928b90295e3e4d16ab866f4ee0d4 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sun, 15 Mar 2015 23:39:55 -0400 Subject: [PATCH] Work on GUI --- .../client/gui/GuiOredictionificator.java | 103 ++++++++++++++++-- 1 file changed, 94 insertions(+), 9 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiOredictionificator.java b/src/main/java/mekanism/client/gui/GuiOredictionificator.java index d239caf1c..affdbf813 100644 --- a/src/main/java/mekanism/client/gui/GuiOredictionificator.java +++ b/src/main/java/mekanism/client/gui/GuiOredictionificator.java @@ -1,5 +1,9 @@ package mekanism.client.gui; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.client.gui.element.GuiProgress; @@ -8,6 +12,7 @@ import mekanism.client.gui.element.GuiProgress.ProgressBar; import mekanism.client.gui.element.GuiSlot; import mekanism.client.gui.element.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; +import mekanism.client.sound.SoundHandler; import mekanism.common.Mekanism; import mekanism.common.inventory.container.ContainerOredictionificator; import mekanism.common.network.PacketOredictionificatorGui.OredictionificatorGuiMessage; @@ -18,6 +23,8 @@ import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import org.lwjgl.opengl.GL11; @@ -29,6 +36,8 @@ public class GuiOredictionificator extends GuiMekanism { public TileEntityOredictionificator tileEntity; + public Map renderStacks = new HashMap(); + public boolean isDragging = false; public int dragOffset = 0; @@ -61,12 +70,12 @@ public class GuiOredictionificator extends GuiMekanism public int getFilterIndex() { - if(tileEntity.filters.size() <= 4) + if(tileEntity.filters.size() <= 3) { return 0; } - return (int)((tileEntity.filters.size()*scroll) - ((4F/(float)tileEntity.filters.size()))*scroll); + return (int)((tileEntity.filters.size()*scroll) - ((3F/(float)tileEntity.filters.size()))*scroll); } @Override @@ -101,22 +110,28 @@ public class GuiOredictionificator extends GuiMekanism fontRendererObj.drawString(tileEntity.getInventoryName(), (xSize/2)-(fontRendererObj.getStringWidth(tileEntity.getInventoryName())/2), 6, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); - for(int i = 0; i < 4; i++) + for(int i = 0; i < 3; i++) { if(tileEntity.filters.get(getFilterIndex()+i) != null) { OredictionificatorFilter filter = tileEntity.filters.get(getFilterIndex()+i); int yStart = i*22 + 18; - - /* - if(itemFilter.itemType != null) + + if(!renderStacks.containsKey(filter)) + { + updateRenderStacks(); + } + + ItemStack stack = renderStacks.get(filter); + + if(stack != null) { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_LIGHTING); - itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), itemFilter.itemType, 59, yStart + 3); + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, 13, yStart + 3); GL11.glDisable(GL11.GL_LIGHTING); GL11.glPopMatrix(); - }*/ + } fontRendererObj.drawString(MekanismUtils.localize("gui.filter"), 32, yStart + 2, 0x404040); } @@ -141,7 +156,7 @@ public class GuiOredictionificator extends GuiMekanism super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); - for(int i = 0; i < 4; i++) + for(int i = 0; i < 3; i++) { if(tileEntity.filters.get(getFilterIndex()+i) != null) { @@ -160,6 +175,46 @@ public class GuiOredictionificator extends GuiMekanism } } + @Override + public void mouseClicked(int mouseX, int mouseY, int button) + { + super.mouseClicked(mouseX, mouseY, button); + + if(button == 0) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + if(xAxis >= 154 && xAxis <= 166 && yAxis >= getScroll()+18 && yAxis <= getScroll()+18+15) + { + if(tileEntity.filters.size()>3) + { + dragOffset = yAxis - (getScroll()+18); + isDragging = true; + } + else { + scroll = 0; + } + } + + for(int i = 0; i < 3; i++) + { + if(tileEntity.filters.get(getFilterIndex()+i) != null) + { + int yStart = i*29 + 18; + + if(xAxis >= 10 && xAxis <= 152 && yAxis >= yStart && yAxis <= yStart+22) + { + OredictionificatorFilter filter = tileEntity.filters.get(getFilterIndex()+i); + + SoundHandler.playSound("gui.button.press"); + Mekanism.packetHandler.sendToServer(new OredictionificatorGuiMessage(OredictionificatorGuiPacket.SERVER_INDEX, Coord4D.get(tileEntity), 1, getFilterIndex()+i, 0)); + } + } + } + } + } + @Override protected void mouseClickMove(int mouseX, int mouseY, int button, long ticks) { @@ -185,4 +240,34 @@ public class GuiOredictionificator extends GuiMekanism isDragging = false; } } + + public void updateRenderStacks() + { + renderStacks.clear(); + + for(OredictionificatorFilter filter : tileEntity.filters) + { + if(filter.filter == null || filter.filter.isEmpty()) + { + renderStacks.put(filter, null); + continue; + } + + List stacks = OreDictionary.getOres(filter.filter); + + if(stacks.isEmpty()) + { + renderStacks.put(filter, null); + continue; + } + + if(stacks.size()-1 >= filter.index) + { + renderStacks.put(filter, stacks.get(filter.index).copy()); + } + else { + renderStacks.put(filter, null); + } + } + } }