/* * 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.container.ContainerFalse; import matteroverdrive.data.ItemPattern; import matteroverdrive.gui.element.MOElementBase; import matteroverdrive.gui.element.MOElementButton; import matteroverdrive.gui.pages.PageScanInfo; import matteroverdrive.items.MatterScanner; import matteroverdrive.network.packet.bi.PacketMatterScannerGetDatabase; import matteroverdrive.network.packet.server.PacketMatterScannerUpdate; import matteroverdrive.proxy.ClientProxy; import matteroverdrive.util.MOStringHelper; import matteroverdrive.util.TimeTracker; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import java.util.List; public class GuiMatterScanner extends MOGuiBase { public ItemStack scanner; public int databaseSlot; private static final int REFRESH_DEPLAY = 200; public static final String QUIDE_ELEMENTS_NAME = "GUIDE_ENTRY"; int lastPage = 0; PageScanInfo pageScanInfo; TimeTracker refreshTimeTracker; ItemPattern lastSelected; MOElementButton infoPageButton; MOElementButton scanPageButton; public GuiMatterScanner(ItemStack scanner,int slot) { super(new ContainerFalse(),300,230); this.scanner = scanner; registerPages(this, scanner); refreshTimeTracker = new TimeTracker(); this.databaseSlot = slot; lastPage = MatterScanner.getLastPage(scanner); MatterOverdrive.packetPipeline.sendToServer(new PacketMatterScannerGetDatabase(MatterScanner.getLinkPosition(scanner))); } @Override public void initGui() { currentPage = MatterScanner.getLastPage(scanner); super.initGui(); //set selected item in list, as active object //if(pageScanInfo.list.getSelectedElement() != null) //SetSelected((NBTTagCompound) pageScanInfo.list.getSelectedElement().getValue()); //else //SetSelected(null); updateSelected(scanner); } private void registerPages(GuiMatterScanner gui,ItemStack matterScanner) { pageScanInfo = new PageScanInfo(this,0,0,"Scan Info",null,scanner); updateSelected(scanner); pageScanInfo.setSize(this.xSize, this.ySize); AddPage(pageScanInfo, ClientProxy.holoIcons.getIcon("page_icon_info"), MOStringHelper.translateToLocal("gui.tooltip.page.scan_info")); } @Override protected void updateElementInformation() { super.updateElementInformation(); if(refreshTimeTracker.hasDelayPassed(Minecraft.getMinecraft().theWorld,REFRESH_DEPLAY)) { //System.out.println("Refreshed"); updateSelected(scanner); } } public void UpdatePatternList(List<ItemPattern> list) { pageScanInfo.updateList(list); } private ItemPattern getSelectedFromDatabase(ItemStack scanner) { return MatterScanner.getSelectedAsPattern(scanner); } private void updateSelected(ItemStack scanner) { lastSelected = getSelectedFromDatabase(scanner); pageScanInfo.setItemNBT(lastSelected); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { drawElements(0, true); } @Override public void handleElementButtonClick(MOElementBase element, String buttonName, int mouseButton) { super.handleElementButtonClick(element,buttonName,mouseButton); if(buttonName == PageScanInfo.SCROLL_UP_BUTTON_NAME) { pageScanInfo.list.scrollUp(); } else if(buttonName == PageScanInfo.SCROLL_DOWN_BUTTON_NAME) { pageScanInfo.list.scrollDown(); } else if (buttonName == PageScanInfo.LIST_ELEMENT_NAME) { ItemPattern elementTag = (ItemPattern) pageScanInfo.list.getElement(mouseButton).getValue(); SetSelected(elementTag); } } @Override public void handleListChange(String listName, int mouseButton,int element) { if(listName == QUIDE_ELEMENTS_NAME) { //guideDescription.OpenGuide(element); } } @Override public void setPage(int page) { super.setPage(page); if(scanner.hasTagCompound()) { scanner.getTagCompound().setShort(MatterScanner.PAGE_TAG_NAME, (short) page); } } void SetSelected(ItemPattern tagCompound) { lastSelected = tagCompound; pageScanInfo.setItemNBT(tagCompound); } @Override public void onGuiClosed() { super.onGuiClosed(); if(MatterScanner.getSelectedAsPattern(scanner).equals(lastSelected)) MatterOverdrive.packetPipeline.sendToServer(new PacketMatterScannerUpdate(scanner, (short) databaseSlot)); } @Override public void textChanged(String elementName, String text, boolean typed) { } @Override public void ListSelectionChange(String name, int selected) { } }