/* * 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.container.ContainerFactory; import matteroverdrive.gui.element.*; import matteroverdrive.init.MatterOverdriveItems; import matteroverdrive.machines.transporter.TileEntityMachineTransporter; import matteroverdrive.util.MOStringHelper; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; /** * Created by Simeon on 5/3/2015. */ public class GuiTransporter extends MOGuiMachine<TileEntityMachineTransporter> { MOElementEnergy energy; ElementMatterStored matterStored; ElementIntegerField xCoords; ElementIntegerField yCoords; ElementIntegerField zCoords; MOElementButtonScaled importButton; MOElementButtonScaled newLocationButton; MOElementButtonScaled resetButton; MOElementTextField name; ElementTransportList list; MOElementButtonScaled removeLocation; public GuiTransporter(InventoryPlayer inventoryPlayer,TileEntityMachineTransporter machine) { super(ContainerFactory.createMachineContainer(machine,inventoryPlayer), machine,225,220); energy = new MOElementEnergy(this,xSize - 35,50,machine.getEnergyStorage()); matterStored = new ElementMatterStored(this,xSize - 35,100,machine.getMatterStorage()); xCoords = new ElementIntegerField(this,this,32,24,80,16); xCoords.setName("XCoord"); yCoords = new ElementIntegerField(this,this,32,24 + 18,80,16); yCoords.setName("YCoord"); zCoords = new ElementIntegerField(this,this,32,24 + 18 * 2,80,16); zCoords.setName("ZCoord"); list = new ElementTransportList(this,this,45,30,140,100,machine); list.setName("Locations"); name = new MOElementTextField(this,this,32 + 6,4,74,16); name.setTextOffset(6, 4); name.setBackground(MOElementButton.HOVER_TEXTURE_DARK); name.setName("LocationName"); importButton = new MOElementButtonScaled(this,this,22,28 + 18 * 3,"Import",50,18); importButton.setNormalTexture(MOElementButton.NORMAL_TEXTURE); importButton.setOverTexture(MOElementButton.HOVER_TEXTURE); importButton.setDisabledTexture(MOElementButton.HOVER_TEXTURE_DARK); importButton.setText(MOStringHelper.translateToLocal("gui.label.button.import")); resetButton = new MOElementButtonScaled(this,this,22 + 52,28 + 18 * 3,"Reset",50,18); resetButton.setNormalTexture(MOElementButton.NORMAL_TEXTURE); resetButton.setOverTexture(MOElementButton.HOVER_TEXTURE); resetButton.setText(MOStringHelper.translateToLocal("gui.label.button.reset")); newLocationButton = new MOElementButtonScaled(this,this,115,ySize - 55,"New",40,18); newLocationButton.setNormalTexture(MOElementButton.NORMAL_TEXTURE); newLocationButton.setOverTexture(MOElementButton.HOVER_TEXTURE); newLocationButton.setText(MOStringHelper.translateToLocal("gui.label.button.new")); removeLocation = new MOElementButtonScaled(this,this,50,ySize - 55,"Remove",60,18); removeLocation.setNormalTexture(MOElementButton.NORMAL_TEXTURE); removeLocation.setText(MOStringHelper.translateToLocal("gui.label.button.remove")); } @Override public void initGui() { super.initGui(); pages.get(0).addElement(energy); pages.get(0).addElement(matterStored); pages.get(0).addElement(list); pages.get(1).addElement(xCoords); pages.get(1).addElement(yCoords); pages.get(1).addElement(zCoords); pages.get(1).addElement(importButton); pages.get(1).addElement(name); pages.get(1).addElement(resetButton); pages.get(0).addElement(removeLocation); pages.get(0).addElement(newLocationButton); pages.get(1).getElements().get(0).setPosition(32, 110); xCoords.init(); yCoords.init(); zCoords.init(); updateInfo(); AddHotbarPlayerSlots(inventorySlots, this); } private void updateInfo() { list.setSelectedIndex(machine.selectedLocation); name.setText(machine.getSelectedLocation().name); xCoords.setBounds(machine.xCoord - machine.getTransportRange(), machine.xCoord + machine.getTransportRange()); yCoords.setBounds(machine.yCoord - machine.getTransportRange(), machine.yCoord + machine.getTransportRange()); zCoords.setBounds(machine.zCoord - machine.getTransportRange(), machine.zCoord + machine.getTransportRange()); if (machine.getSelectedLocation() != null) { xCoords.setNumber(machine.getSelectedLocation().x); yCoords.setNumber(machine.getSelectedLocation().y); zCoords.setNumber(machine.getSelectedLocation().z); }else { xCoords.setNumber(0); yCoords.setNumber(0); zCoords.setNumber(0); } } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { super.drawGuiContainerForegroundLayer(mouseX, mouseY); if (pages.get(1).isVisible()) { getFontRenderer().drawString("X:", pages.get(1).getPosX() + xCoords.getPosX() - 10, pages.get(1).getPosY() + xCoords.getPosY() + 4, 0xFFFFFF); getFontRenderer().drawString(Integer.toString(xCoords.getNumber() - machine.xCoord), pages.get(1).getPosX() + xCoords.getPosX() + xCoords.getWidth() + 4,pages.get(1).getPosY()+ xCoords.getPosY() + 4, 0xFFFFFF); getFontRenderer().drawString("Y:", pages.get(1).getPosX() + yCoords.getPosX() - 10, pages.get(1).getPosY() + yCoords.getPosY() + 4, 0xFFFFFF); getFontRenderer().drawString(Integer.toString(yCoords.getNumber() - machine.yCoord), pages.get(1).getPosX() + yCoords.getPosX() + yCoords.getWidth() + 4,pages.get(1).getPosY() + yCoords.getPosY() + 4, 0xFFFFFF); getFontRenderer().drawString("Z:", pages.get(1).getPosX() + zCoords.getPosX() - 10, pages.get(1).getPosY() + zCoords.getPosY() + 4, 0xFFFFFF); getFontRenderer().drawString(Integer.toString(zCoords.getNumber() - machine.zCoord), pages.get(1).getPosX() + zCoords.getPosX() + zCoords.getWidth() + 4,pages.get(1).getPosY() + zCoords.getPosY() + 4, 0xFFFFFF); } } @Override public void handleElementButtonClick(MOElementBase element,String buttonName, int mouseButton) { super.handleElementButtonClick(element,buttonName,mouseButton); if (buttonName == "Import") { ItemStack usb = machine.getStackInSlot(machine.usbSlotID); if (usb != null) { if (MatterOverdriveItems.transportFlashDrive.hasTarget(usb)) { machine.setSelectedLocation(MatterOverdriveItems.transportFlashDrive.getTargetX(usb),MatterOverdriveItems.transportFlashDrive.getTargetY(usb)+1,MatterOverdriveItems.transportFlashDrive.getTargetZ(usb),name.getText()); machine.sendConfigsToServer(true); updateInfo(); } } } else if (buttonName == "New") { machine.addNewLocation(machine.xCoord, machine.yCoord, machine.zCoord, name.getText()); machine.sendConfigsToServer(true); updateInfo(); list.setSelectedIndex(list.getElementCount() - 1); } else if (buttonName == "Reset") { machine.setSelectedLocation(machine.xCoord,machine.yCoord,machine.zCoord,machine.getSelectedLocation().name); machine.sendConfigsToServer(true); updateInfo(); } else if (buttonName == "Remove") { machine.removeLocation(list.getSelectedIndex()); machine.sendConfigsToServer(true); updateInfo(); } else if (buttonName.equals("XCoord") || buttonName.equals("YCoord") || buttonName.equals("ZCoord")) { machine.setSelectedLocation(xCoords.getNumber(), yCoords.getNumber(), zCoords.getNumber(), name.getText()); machine.sendConfigsToServer(true); } } @Override protected void updateElementInformation() { super.updateElementInformation(); ItemStack usb = machine.getStackInSlot(machine.usbSlotID); if (usb != null) { int targetDestination = MatterOverdriveItems.transportFlashDrive.getTargetDistance(usb); int transportRange = machine.getTransportRange(); boolean hasTarget = MatterOverdriveItems.transportFlashDrive.hasTarget(usb); if (!hasTarget || targetDestination > transportRange) { importButton.setEnabled(false); importButton.setToolTip(MOStringHelper.translateToLocal("gui.label.button.import.too_far")); } else { importButton.setEnabled(true); importButton.setToolTip(null); } }else { importButton.setEnabled(false); importButton.setToolTip(null); } } public void onPageChange(int newPage) { if (newPage == 1) { updateInfo(); } } @Override public void ListSelectionChange(String name,int selected) { if (name == "Locations") { updateInfo(); machine.selectedLocation = selected; machine.sendConfigsToServer(true); list.setSelectedIndex(machine.selectedLocation); } } @Override public void textChanged(String elementName, String text, boolean typed) { if (typed) { if (elementName.equals("LocationName")) { machine.setSelectedLocation(xCoords.getNumber(), yCoords.getNumber(), zCoords.getNumber(), name.getText()); machine.sendConfigsToServer(true); //updateInfo(); } } } }