/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core.list;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import buildcraft.BuildCraftCore;
import buildcraft.core.ItemList;
import buildcraft.core.lib.gui.AdvancedSlot;
import buildcraft.core.lib.gui.GuiAdvancedInterface;
public class GuiListOld extends GuiAdvancedInterface {
private static final ResourceLocation TEXTURE_BASE = new ResourceLocation(
"buildcraftcore:textures/gui/list.png");
private GuiTextField textField;
private EntityPlayer player;
private static class MainSlot extends AdvancedSlot {
public int lineIndex;
public MainSlot(GuiAdvancedInterface gui, int x, int y, int iLineIndex) {
super(gui, x, y);
lineIndex = iLineIndex;
}
@Override
public ItemStack getItemStack() {
ContainerListOld container = (ContainerListOld) gui.getContainer();
return container.lines[lineIndex].getStack(0);
}
}
private static class SecondarySlot extends AdvancedSlot {
public int lineIndex;
public int slotIndex;
public SecondarySlot(GuiAdvancedInterface gui, int x, int y, int iLineIndex, int iSlotIndex) {
super(gui, x, y);
lineIndex = iLineIndex;
slotIndex = iSlotIndex;
}
@Override
public ItemStack getItemStack() {
ContainerListOld container = (ContainerListOld) gui.getContainer();
if (slotIndex == 6 && container.lines[lineIndex].getStack(7) != null) {
return null;
}
return container.lines[lineIndex].getStack(slotIndex);
}
}
private static class Button extends AdvancedSlot {
public int line;
public int kind;
private String desc;
public Button(GuiAdvancedInterface gui, int x, int y, int iLine, int iKind, String iDesc) {
super(gui, x, y);
line = iLine;
kind = iKind;
desc = iDesc;
}
@Override
public String getDescription() {
return desc;
}
}
public GuiListOld(EntityPlayer iPlayer) {
super(new ContainerListOld(iPlayer), iPlayer.inventory, TEXTURE_BASE);
xSize = 176;
ySize = 241;
for (int sy = 0; sy < 6; sy++) {
slots.add(new MainSlot(this, 44, 31 + sy * 18, sy));
for (int sx = 1; sx < 7; sx++) {
slots.add(new SecondarySlot(this, 44 + sx * 18, 31 + sy * 18, sy, sx));
}
slots.add(new Button(this, 8, 31 + sy * 18, sy, 0, "gui.list.metadata"));
slots.add(new Button(this, 26, 31 + sy * 18, sy, 1, "gui.list.oredict"));
}
player = iPlayer;
}
@Override
public void initGui() {
super.initGui();
textField = new GuiTextField(this.fontRendererObj, 10, 10, 156, 12);
textField.setMaxStringLength(32);
textField.setText(BuildCraftCore.listItem.getLabel(player.getCurrentEquippedItem()));
textField.setFocused(false);
}
@Override
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
super.drawGuiContainerBackgroundLayer(f, x, y);
ContainerListOld container = (ContainerListOld) getContainer();
bindTexture(TEXTURE_BASE);
for (int i = 0; i < 6; ++i) {
if (container.lines[i].subitemsWildcard) {
drawTexturedModalRect(guiLeft + 7, guiTop + 30 + 18 * i, 194, 18, 18, 18);
} else {
drawTexturedModalRect(guiLeft + 7, guiTop + 30 + 18 * i, 194, 0, 18, 18);
}
if (container.lines[i].isOre) {
if (container.lines[i].oreWildcard) {
drawTexturedModalRect(guiLeft + 25, guiTop + 30 + 18 * i, 176, 18, 18, 18);
} else {
drawTexturedModalRect(guiLeft + 25, guiTop + 30 + 18 * i, 176, 0, 18, 18);
}
}
if (container.lines[i].subitemsWildcard || container.lines[i].oreWildcard) {
for (int j = 0; j < 6; ++j) {
drawTexturedModalRect(guiLeft + 62 + 18 * j, guiTop + 31 + 18 * i, 195, 37, 16, 16);
}
}
}
drawBackgroundSlots(x, y);
bindTexture(TEXTURE_BASE);
for (int i = 0; i < 6; ++i) {
if (container.lines[i].getStack(7) != null) {
drawTexturedModalRect(guiLeft + 152, guiTop + 31 + 18 * i, 177, 37, 16, 16);
}
}
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
super.drawGuiContainerForegroundLayer(par1, par2);
textField.drawTextBox();
drawTooltipForSlotAt(par1, par2);
}
private boolean isCarryingList() {
ItemStack stack = mc.thePlayer.inventory.getItemStack();
return stack != null && stack.getItem() instanceof ItemList;
}
private boolean hasListEquipped() {
return mc.thePlayer.getCurrentEquippedItem() != null && mc.thePlayer.getCurrentEquippedItem().getItem() instanceof ItemList;
}
@Override
protected void mouseClicked(int x, int y, int b) {
super.mouseClicked(x, y, b);
if (isCarryingList() || !hasListEquipped()) {
return;
}
AdvancedSlot slot = getSlotAtLocation(x, y);
ContainerListOld container = (ContainerListOld) getContainer();
if (slot instanceof MainSlot) {
container.setStack(((MainSlot) slot).lineIndex, 0, mc.thePlayer.inventory.getItemStack());
} else if (slot instanceof SecondarySlot) {
container.setStack(((SecondarySlot) slot).lineIndex, ((SecondarySlot) slot).slotIndex,
mc.thePlayer.inventory.getItemStack());
} else if (slot instanceof Button) {
Button button = (Button) slot;
container.switchButton(button.line, button.kind);
}
textField.mouseClicked(x - guiLeft, y - guiTop, b);
}
@Override
protected void keyTyped(char c, int i) {
if (textField.isFocused()) {
if (c == 13 || c == 27) {
textField.setFocused(false);
} else {
textField.textboxKeyTyped(c, i);
((ContainerListOld) container).setLabel(textField.getText());
}
} else {
super.keyTyped(c, i);
}
}
}