package com.bioxx.tfc2.core;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import com.bioxx.tfc2.Core;
import com.bioxx.tfc2.Reference;
import com.bioxx.tfc2.containers.slots.SlotForShowOnly;
public class PlayerInventory
{
public static int invXSize = 176;
public static int invYSize = 87;
private static ResourceLocation invTexture = new ResourceLocation(Reference.ModID, Reference.AssetPathGui + "gui_inventory_lower.png");
public static InventoryCrafting containerInv;
private static int index;
public static void buildInventoryLayout(Container container, InventoryPlayer inventory, int x, int y, boolean freezeSlot, boolean toolBarAfterMainInv)
{
index = 0;
if(!toolBarAfterMainInv)
addToolbarSlots(container, inventory, x, y, freezeSlot);
for(int i = 0; i < 3; ++i)
{
for(int k = 0; k < 9; ++k)
{
index = k + (i+1) * 9;
addSlotToContainer(container, new Slot(inventory, index, x + k * 18, y + i * 18));
}
}
if(toolBarAfterMainInv)
addToolbarSlots(container, inventory, x, y, freezeSlot);
/*ItemStack is = getInventory(inventory.player).extraEquipInventory[0];
if(is != null)
{
if(is.getItem() instanceof ItemQuiver)
{
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 178, y));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 178, y+18));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 178, y+36));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 178, y+54));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 196, y));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 196, y+18));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 196, y+36));
addSlotToContainer(container, new SlotQuiver(containerInv, index++, x + 196, y+54));
}
loadBagInventory(is, container);
}*/
}
public static void loadBagInventory(ItemStack is, Container c)
{
if(is != null && is.hasTagCompound())
{
NBTTagList nbttaglist = is.getTagCompound().getTagList("Items", 10);
containerInv = new InventoryCrafting(c, 4, 2);
for(int i = 0; i < nbttaglist.tagCount(); i++)
{
NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
byte byte0 = nbttagcompound1.getByte("Slot");
if(byte0 >= 0 && byte0 < 8)
containerInv.setInventorySlotContents(byte0, ItemStack.loadItemStackFromNBT(nbttagcompound1));
}
}
}
public static void addExtraEquipables(Container container, InventoryPlayer inventory, int x, int y, boolean freezeSlot){
int index = 36; // Should be the correct index
//Removed during port
//addSlotToContainer(container, new SlotExtraEquipable(inventory, index, 8 + 18, 8 + 18, IEquipable.EquipType.BACK));
}
private static void addToolbarSlots(Container container, InventoryPlayer inventory, int x, int y, boolean freezeSlot)
{
for(int j = 0; j < 9; ++j)
{
if(freezeSlot && j == inventory.currentItem)
addSlotToContainer(container, new SlotForShowOnly(inventory, j, x + j * 18, y+58));
else
addSlotToContainer(container, new Slot(inventory, j, x + j * 18, y+58));
}
}
public static void buildInventoryLayout(Container container, InventoryPlayer inventory, int x, int y, boolean freezeSlot)
{
buildInventoryLayout(container, inventory, x, y, false, false);
}
public static void buildInventoryLayout(Container container, InventoryPlayer inventory, int x, int y)
{
buildInventoryLayout(container, inventory, x, y, false);
}
protected static Slot addSlotToContainer(Container container, Slot par1Slot)
{
par1Slot.slotNumber = container.inventorySlots.size();
container.inventorySlots.add(par1Slot);
container.inventoryItemStacks.add((ItemStack)null);
return par1Slot;
}
public static void drawInventory(GuiContainer container, int screenWidth, int screenHeight, int upperGuiHeight)
{
Core.bindTexture(invTexture);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int l = (screenWidth - invXSize) / 2;
int i1 = (screenHeight - (upperGuiHeight+invYSize)) / 2 + upperGuiHeight;
container.drawTexturedModalRect(l, i1, 0, 0, invXSize, invYSize);
//container.drawTexturedModalRect(l+invXSize, i1+1, 0, 87, 83, 83);
/*ItemStack is = getInventory(container.mc.thePlayer).extraEquipInventory[0];
if(is != null)
{
if(is.getItem() instanceof ItemQuiver)
container.drawTexturedModalRect(l+invXSize, i1+1, 84, 87, 47, 83);
}*/
}
/*public static InventoryPlayerTFC getInventory(EntityPlayer p)
{
return (InventoryPlayerTFC)p.inventory;
}*/
public static void upgradePlayerCrafting(EntityPlayer player)
{
if(player.getEntityData().hasKey("craftingTable"))
{
player.inventoryContainer.getSlot(45).xDisplayPosition += 50000;
player.inventoryContainer.getSlot(46).xDisplayPosition += 50000;
player.inventoryContainer.getSlot(47).xDisplayPosition += 50000;
player.inventoryContainer.getSlot(48).xDisplayPosition += 50000;
player.inventoryContainer.getSlot(49).xDisplayPosition += 50000;
}
}
public static ItemStack transferStackInSlot(EntityPlayer player, ItemStack stackToXfer)
{
return null;
}
}