package mekanism.client.jei.machine;
import mekanism.api.gas.GasStack;
import mekanism.client.gui.element.GuiPowerBar;
import mekanism.client.gui.element.GuiPowerBar.IPowerInfoHandler;
import mekanism.client.gui.element.GuiProgress;
import mekanism.client.gui.element.GuiProgress.IProgressInfoHandler;
import mekanism.client.gui.element.GuiProgress.ProgressBar;
import mekanism.client.gui.element.GuiSlot;
import mekanism.client.gui.element.GuiSlot.SlotOverlay;
import mekanism.client.gui.element.GuiSlot.SlotType;
import mekanism.client.jei.BaseRecipeCategory;
import mekanism.common.recipe.inputs.AdvancedMachineInput;
import mekanism.common.recipe.machines.AdvancedMachineRecipe;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.gui.ITickTimer;
import mezz.jei.api.recipe.IRecipeWrapper;
import net.minecraft.client.Minecraft;
import net.minecraft.util.ResourceLocation;
public class AdvancedMachineRecipeCategory extends BaseRecipeCategory
{
public IGuiHelper guiHelper;
public String recipeName;
public String unlocalizedName;
public IDrawable background;
public AdvancedMachineRecipe tempRecipe;
public ITickTimer timer;
public AdvancedMachineRecipeCategory(IGuiHelper helper, String name, String unlocalized, ProgressBar progress)
{
super("mekanism:gui/GuiAdvancedMachine.png", name, unlocalized, progress);
guiHelper = helper;
timer = helper.createTickTimer(20, 20, false);
background = guiHelper.createDrawable(new ResourceLocation(guiTexture), 28, 16, 144, 54);
}
@Override
public void addGuiElements()
{
guiElements.add(new GuiSlot(SlotType.INPUT, this, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 55, 16));
guiElements.add(new GuiSlot(SlotType.POWER, this, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 30, 34).with(SlotOverlay.POWER));
guiElements.add(new GuiSlot(SlotType.EXTRA, this, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 55, 52));
guiElements.add(new GuiSlot(SlotType.OUTPUT_LARGE, this, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 111, 30));
guiElements.add(new GuiPowerBar(this, new IPowerInfoHandler() {
@Override
public double getLevel()
{
return 1F;
}
}, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 164, 15));
guiElements.add(new GuiProgress(new IProgressInfoHandler()
{
@Override
public double getProgress()
{
return (double)timer.getValue() / 20F;
}
}, progressBar, this, MekanismUtils.getResource(ResourceType.GUI, stripTexture()), 77, 37));
}
@Override
public void drawExtras(Minecraft minecraft)
{
super.drawExtras(minecraft);
AdvancedMachineInput input = (AdvancedMachineInput)tempRecipe.getInput();
if(input.gasType != null)
{
displayGauge(33, 21, 6, 12, new GasStack(input.gasType, 1));
}
}
@Override
public IDrawable getBackground()
{
return background;
}
@Override
public void setRecipe(IRecipeLayout recipeLayout, IRecipeWrapper recipeWrapper)
{
if(recipeWrapper instanceof AdvancedMachineRecipeWrapper)
{
tempRecipe = ((AdvancedMachineRecipeWrapper)recipeWrapper).recipe;
}
AdvancedMachineInput input = (AdvancedMachineInput)tempRecipe.recipeInput;
IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
itemStacks.init(0, true, 27, 0);
itemStacks.init(1, false, 87, 18);
itemStacks.init(2, false, 27, 36);
itemStacks.setFromRecipe(0, recipeWrapper.getInputs());
itemStacks.setFromRecipe(1, recipeWrapper.getOutputs());
itemStacks.set(2, ((AdvancedMachineRecipeWrapper)recipeWrapper).getFuelStacks(input.gasType));
}
}