package mekanism.client.jei;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import mekanism.api.gas.GasStack;
import mekanism.client.gui.IGuiWrapper;
import mekanism.client.gui.element.GuiElement;
import mekanism.client.gui.element.GuiProgress.ProgressBar;
import mekanism.client.render.MekanismRenderer;
import mekanism.client.render.MekanismRenderer.FluidType;
import mekanism.common.util.LangUtils;
import mezz.jei.api.recipe.IRecipeCategory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
public abstract class BaseRecipeCategory implements IRecipeCategory, IGuiWrapper
{
public static final GuiDummy gui = new GuiDummy();
public String recipeName;
public String unlocalizedName;
public String guiTexture;
public ResourceLocation guiLocation;
public ProgressBar progressBar;
public int xOffset = 28;
public int yOffset = 16;
public BaseRecipeCategory(String gui, String name, String unlocalized, ProgressBar progress)
{
guiTexture = gui;
guiLocation = new ResourceLocation(guiTexture);
progressBar = progress;
recipeName = name;
unlocalizedName = unlocalized;
addGuiElements();
}
@Override
public String getUid()
{
return "mekanism." + recipeName;
}
@Override
public String getTitle()
{
return LangUtils.localize(unlocalizedName);
}
@Override
public void drawExtras(Minecraft minecraft)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
changeTexture(guiLocation);
for(GuiElement e : guiElements)
{
e.renderBackground(0, 0, -xOffset, -yOffset);
}
}
@Override
public void drawAnimations(Minecraft minecraft) {}
@Override
public void drawTexturedRect(int x, int y, int u, int v, int w, int h)
{
gui.drawTexturedModalRect(x, y, u, v, w, h);
}
@Override
public void drawTexturedRectFromIcon(int x, int y, TextureAtlasSprite icon, int w, int h)
{
gui.drawTexturedModalRect(x, y, icon, w, h);
}
@Override
public void displayTooltip(String s, int xAxis, int yAxis) {}
@Override
public void displayTooltips(List<String> list, int xAxis, int yAxis) {}
@Override
public FontRenderer getFont()
{
return null;
}
public void displayGauge(int length, int xPos, int yPos, int overlayX, int overlayY, int scale, FluidStack fluid, GasStack gas)
{
if(fluid == null && gas == null)
{
return;
}
int start = 0;
while(true)
{
int renderRemaining = 0;
if(scale > 16)
{
renderRemaining = 16;
scale -= 16;
}
else {
renderRemaining = scale;
scale = 0;
}
changeTexture(MekanismRenderer.getBlocksTexture());
if(fluid != null)
{
gui.drawTexturedModalRect(xPos, yPos + length - renderRemaining - start, MekanismRenderer.getFluidTexture(fluid.getFluid(), FluidType.STILL), 16, 16 - (16 - renderRemaining));
}
else if(gas != null)
{
gui.drawTexturedModalRect(xPos, yPos + length - renderRemaining - start, gas.getGas().getSprite(), 16, 16 - (16 - renderRemaining));
}
start+=16;
if(renderRemaining == 0 || scale == 0)
{
break;
}
}
changeTexture(guiLocation);
gui.drawTexturedModalRect(xPos, yPos, overlayX, overlayY, 16, length+1);
}
public void displayGauge(int xPos, int yPos, int sizeX, int sizeY, GasStack gas)
{
if(gas == null)
{
return;
}
changeTexture(MekanismRenderer.getBlocksTexture());
gui.drawTexturedModalRect(xPos, yPos, gas.getGas().getSprite(), sizeX, sizeY);
}
public String stripTexture()
{
return guiTexture.replace("mekanism:gui/", "");
}
public void changeTexture(ResourceLocation texture)
{
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
}
public Set<GuiElement> guiElements = new HashSet<GuiElement>();
public void addGuiElements() {}
public static class GuiDummy extends Gui {}
}