package crazypants.enderio.machine.transceiver.gui; import java.awt.Color; import java.awt.Point; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import org.lwjgl.opengl.GL11; import com.enderio.core.api.client.gui.ITabPanel; import com.enderio.core.client.gui.button.MultiIconButton; import com.enderio.core.client.render.ColorUtil; import com.enderio.core.client.render.RenderUtil; import crazypants.enderio.EnderIO; import crazypants.enderio.conduit.gui.item.BasicItemFilterGui; import crazypants.enderio.conduit.gui.item.IItemFilterContainer; import crazypants.enderio.conduit.item.filter.ItemFilter; import crazypants.enderio.gui.IconEIO; import crazypants.enderio.machine.transceiver.PacketItemFilter; import crazypants.enderio.machine.transceiver.TileTransceiver; import crazypants.enderio.network.PacketHandler; public class FilterTab implements ITabPanel { private final GuiTransceiver parent; private final ContainerTransceiver container; private final BasicItemFilterGui sendGui; private final BasicItemFilterGui recGui; private final MultiIconButton sendRecB; boolean showSend = true; FilterTab(GuiTransceiver parent) { this.parent = parent; container = parent.getContainer(); sendGui = new BasicItemFilterGui(parent, new FilterContainer(parent.getTransciever(), true), false, container.getFilterOffset().x, container.getFilterOffset().y, 0); recGui = new BasicItemFilterGui(parent, new FilterContainer(parent.getTransciever(), false), false, container.getFilterOffset().x, container.getFilterOffset().y, 20); sendRecB = MultiIconButton.createRightArrowButton(parent, 8888, container.getFilterOffset().x + 79, container.getFilterOffset().y - 20); sendRecB.setSize(10, 16); } @Override public void onGuiInit(int x, int y, int width, int height) { parent.getContainer().setPlayerInventoryVisible(true); sendRecB.onGuiInit(); updateSendRecieve(); } protected void updateSendRecieve() { parent.getGhostSlots().clear(); if(showSend) { sendGui.updateButtons(); recGui.deactivate(); sendGui.createFilterSlots(); } else { sendGui.deactivate(); recGui.updateButtons(); recGui.createFilterSlots(); } } @Override public void deactivate() { parent.getContainer().setPlayerInventoryVisible(false); sendGui.deactivate(); recGui.deactivate(); sendRecB.detach(); } @Override public IconEIO getIcon() { return IconEIO.FILTER; } @Override public void render(float par1, int par2, int par3) { int top = parent.getGuiTop(); int left = parent.getGuiLeft(); GL11.glColor3f(1, 1, 1); //Inventory parent.bindGuiTexture(); Point invRoot = container.getPlayerInventoryOffset(); parent.drawTexturedModalRect(left + invRoot.x - 1, top + invRoot.y - 1, 24, 180, 162, 76); if(showSend) { sendGui.renderCustomOptions(0, par1, par2, par3); } else { recGui.renderCustomOptions(0, par1, par2, par3); } String txt = EnderIO.lang.localize("gui.machine.sendfilter"); if(!showSend) { txt = EnderIO.lang.localize("gui.machine.receivefilter"); } FontRenderer fr = parent.getFontRenderer(); int x = left + container.getFilterOffset().x; int y = top - fr.FONT_HEIGHT + container.getFilterOffset().y - 7; fr.drawStringWithShadow(txt, x, y, ColorUtil.getRGB(Color.WHITE)); //sendRecB.xPosition = left + container.getFilterOffset().x + fr.getStringWidth(txt) + 10; //System.out.println("FilterTab.enclosing_method: " + (fr.getStringWidth(txt) + 10)); } @Override public void actionPerformed(GuiButton guiButton) { if(guiButton == sendRecB) { showSend = !showSend; updateSendRecieve(); } if(showSend) { sendGui.actionPerformed(guiButton); } else { recGui.actionPerformed(guiButton); } } @Override public void mouseClicked(int x, int y, int par3) { if(showSend) { sendGui.mouseClicked(x, y, par3); } else { recGui.mouseClicked(x, y, par3); } } @Override public void keyTyped(char par1, int par2) { } @Override public void updateScreen() { } private static class FilterContainer implements IItemFilterContainer { private final TileTransceiver trans; private final boolean isSend; private FilterContainer(TileTransceiver trans, boolean isSend) { this.trans = trans; this.isSend = isSend; } @Override public ItemFilter getItemFilter() { if(isSend) { return trans.getSendItemFilter(); } return trans.getReceiveItemFilter(); } @Override public void onFilterChanged() { PacketHandler.INSTANCE.sendToServer(new PacketItemFilter(trans, isSend)); } } }