package com.vapourdrive.harderstart.handlers.NEIIntegration;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import org.lwjgl.opengl.GL11;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.TemplateRecipeHandler;
import com.vapourdrive.harderstart.interfaces.cuttingtable.GuiCuttingTable;
import com.vapourdrive.harderstart.items.HS_Items;
import com.vapourdrive.harderstart.recipe.cuttingtable.CuttingTableRecipe;
import com.vapourdrive.harderstart.recipe.cuttingtable.CuttingTableRecipeManager;
public class CuttingTableRecipeHandler extends TemplateRecipeHandler
{
public class CTRecipe extends TemplateRecipeHandler.CachedRecipe
{
public Item[] sampleTools =
{
HS_Items.flint_knife, Items.iron_axe, Items.iron_shovel, Items.iron_pickaxe
};
public PositionedStack ingredient;
public ArrayList<PositionedStack> tool;
public ArrayList<PositionedStack> otherOutputs;
public PositionedStack output;
// public CTRecipe(ItemStack items, ItemStack[] out)
// {
// this(null, items, out);
// }
public CTRecipe(Class tool, ItemStack items, ItemStack[] out)
{
otherOutputs = new ArrayList<PositionedStack>();
ingredient = new PositionedStack(items, 29, 31);
output = new PositionedStack(out[0], 75, 22);
for (int i = 0; i < sampleTools.length; i++)
{
if (tool.isAssignableFrom(sampleTools[i].getClass()))
{
otherOutputs.add(new PositionedStack(new ItemStack(sampleTools[i]), 29, 13));
}
}
for (int j = 1; j < out.length; j++)
{
if (out[j] != null)
{
otherOutputs.add(new PositionedStack(out[j], 75 + j * 18, 22));
}
}
}
public CTRecipe(CuttingTableRecipe recipe)
{
this(recipe.getTool(), recipe.getInput(), recipe.getRecipeOutput());
}
@Override
public PositionedStack getResult()
{
return output;
}
@Override
public PositionedStack getIngredient()
{
return ingredient;
}
@Override
public List<PositionedStack> getOtherStacks()
{
return otherOutputs;
}
}
@Override
public void drawBackground(int arg0)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GuiDraw.changeTexture(getGuiTexture());
GuiDraw.drawTexturedModalRect(0, 0, 5, 11, 166, 65);
}
@Override
public Class<? extends GuiContainer> getGuiClass()
{
return GuiCuttingTable.class;
}
@Override
public void loadCraftingRecipes(String outputId, Object... results)
{
if (outputId.equals("CuttingTable") && getClass() == CuttingTableRecipeHandler.class)
{
List<CuttingTableRecipe> recipes = CuttingTableRecipeManager.getInstance().getRecipeList();
for (CuttingTableRecipe recipe : recipes)
{
CTRecipe res = new CTRecipe(recipe.getTool(), recipe.getInput(), recipe.getRecipeOutput());
arecipes.add(res);
}
}
else
{
super.loadCraftingRecipes(outputId, results);
}
}
@Override
public void loadCraftingRecipes(ItemStack result)
{
List<CuttingTableRecipe> recipes = CuttingTableRecipeManager.getInstance().getRecipeList();
for (CuttingTableRecipe recipe : recipes)
{
for (int i = 0; i < recipe.getRecipeOutput().length; i++)
{
if (recipe.getRecipeOutput()[i].getItem() == result.getItem())
{
CTRecipe res = new CTRecipe(recipe.getTool(), recipe.getInput(), recipe.getRecipeOutput());
arecipes.add(res);
}
}
}
}
@Override
public void loadUsageRecipes(ItemStack ingredient)
{
for (CuttingTableRecipe irecipe : (List<CuttingTableRecipe>) CuttingTableRecipeManager.getInstance().getRecipeList())
{
CTRecipe recipe = null;
if (irecipe instanceof CuttingTableRecipe)
{
recipe = new CTRecipe((CuttingTableRecipe) irecipe);
}
if (recipe == null || !recipe.contains(recipe.getIngredients(), ingredient.getItem()))
{
continue;
}
if (recipe.contains(recipe.getIngredients(), ingredient))
{
arecipes.add(recipe);
}
}
}
@Override
public String getRecipeName()
{
return "CuttingTable";
}
@Override
public String getOverlayIdentifier()
{
return "CuttingTable";
}
@Override
public void loadTransferRects()
{
transferRects.add(new RecipeTransferRect(new Rectangle(48, 22, 24, 16), "CuttingTable", new Object[0]));
}
@Override
public String getGuiTexture()
{
return "harderstart:textures/gui/container/cuttingtable.png";
}
@Override
public int recipiesPerPage()
{
return 1;
}
@Override
public List<String> handleItemTooltip(GuiRecipe gui, ItemStack stack, List<String> currenttip, int recipe)
{
if (stack != null && stack.getItem() == HS_Items.flint_knife)
{
currenttip.add(EnumChatFormatting.GREEN + "Not Consumed");
}
return currenttip;
}
}