/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.gui; import matteroverdrive.MatterOverdrive; import matteroverdrive.Reference; import matteroverdrive.api.network.MatterNetworkTaskState; import matteroverdrive.container.ContainerPatternMonitor; import matteroverdrive.container.MOBaseContainer; import matteroverdrive.data.ItemPattern; import matteroverdrive.gui.element.*; import matteroverdrive.gui.pages.PageTasks; import matteroverdrive.network.packet.server.PacketPatternMonitorCommands; import matteroverdrive.network.packet.server.PacketRemoveTask; import matteroverdrive.proxy.ClientProxy; import matteroverdrive.tile.TileEntityMachinePatternMonitor; import matteroverdrive.util.MOStringHelper; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.nbt.NBTTagCompound; import java.util.ArrayList; import java.util.List; /** * Created by Simeon on 4/26/2015. */ public class GuiPatternMonitor extends MOGuiNetworkMachine<TileEntityMachinePatternMonitor> { MOElementButton refreshButton; MOElementButton requestButton; ElementPatternsGrid elementGrid; PageTasks pageTasks; MOElementTextField searchField; public GuiPatternMonitor(InventoryPlayer inventoryPlayer, TileEntityMachinePatternMonitor machine) { super(new ContainerPatternMonitor(inventoryPlayer,machine), machine); name = "pattern_monitor"; refreshButton = new MOElementButton(this,this,6,45,"Refresh",0,0,22,0,22,22, ""); refreshButton.setTexture(Reference.PATH_GUI_ITEM + "refresh.png", 44, 22); refreshButton.setToolTip(MOStringHelper.translateToLocal("gui.tooltip.button.refresh")); requestButton = new MOElementButton(this,this,6,75,"Request",0,0,22,0,22,22,""); requestButton.setTexture(Reference.PATH_GUI_ITEM + "request.png",44,22); requestButton.setToolTip(MOStringHelper.translateToLocal("gui.tooltip.button.request")); elementGrid = new ElementPatternsGrid(this,48,40,160,110); searchField = new MOElementTextField(this,41,26,167,14); slotsList.addElement(refreshButton); slotsList.addElement(requestButton); elementGrid.updateStackList(machine.getGuiPatterns()); } @Override public void registerPages(MOBaseContainer container,TileEntityMachinePatternMonitor machine) { super.registerPages(container, machine); pageTasks = new PageTasks(this,0,0,xSize,ySize,machine.getTaskQueue((byte) 0)); pageTasks.setName("Tasks"); AddPage(pageTasks, ClientProxy.holoIcons.getIcon("page_icon_tasks"), MOStringHelper.translateToLocal("gui.tooltip.page.tasks")).setIconColor(Reference.COLOR_MATTER); } @Override public void initGui() { super.initGui(); //this.addElement(refreshButton); //this.addElement(requestButton); pages.get(0).addElement(elementGrid); pages.get(0).addElement(searchField); AddHotbarPlayerSlots(inventorySlots, this); } public void handleElementButtonClick(MOElementBase element, String buttonName, int mouseButton) { super.handleElementButtonClick(element,buttonName,mouseButton); if (buttonName.equals("Refresh")) { MatterOverdrive.packetPipeline.sendToServer(new PacketPatternMonitorCommands(machine,0,null)); } else if (buttonName.equals("Request")) { List<ItemPattern> requestList = new ArrayList<>(); for (int i = 0;i < elementGrid.getElements().size();i++) { if (elementGrid.getElements().get(i) instanceof ElementMonitorItemPattern) { ElementMonitorItemPattern itemPattern = (ElementMonitorItemPattern)elementGrid.getElements().get(i); if (itemPattern.getAmount() > 0) { ItemPattern pattern = itemPattern.getPattern().copy(); pattern.setCount(itemPattern.getAmount()); requestList.add(pattern); itemPattern.setAmount(0); } else { itemPattern.setExpanded(false); } } } if (requestList.size() > 0) { MatterOverdrive.packetPipeline.sendToServer(new PacketPatternMonitorCommands(machine, PacketPatternMonitorCommands.COMMAND_REQUEST, requestList)); } } else if (buttonName.equals("DropTask")) { NBTTagCompound tagCompound = new NBTTagCompound(); tagCompound.setInteger("TaskID",mouseButton); MatterOverdrive.packetPipeline.sendToServer(new PacketRemoveTask(machine,mouseButton,(byte)0, MatterNetworkTaskState.INVALID)); } } @Override protected void updateElementInformation() { super.updateElementInformation(); if (machine.needsRefresh()) { elementGrid.updateStackList(machine.getGuiPatterns()); machine.forceSearch(false); } elementGrid.setFilter(searchField.getText()); } }