package pixlepix.auracascade.lexicon.page;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.item.Item;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
import pixlepix.auracascade.block.tile.CraftingCenterTile;
import pixlepix.auracascade.data.recipe.PylonRecipe;
import pixlepix.auracascade.lexicon.IGuiLexiconEntry;
import pixlepix.auracascade.lexicon.LexiconEntry;
import pixlepix.auracascade.lexicon.LexiconRecipeMappings;
import pixlepix.auracascade.lexicon.VazkiiRenderHelper;
import pixlepix.auracascade.registry.BlockRegistry;
import java.util.Collections;
/**
* Created by pixlepix on 12/28/14.
*/
public class PagePylon extends PageRecipe {
private static final ResourceLocation craftingOverlay = new ResourceLocation("aura:textures/gui/pylonOverlay.png");
PylonRecipe recipe;
public PagePylon(String unlocalizedName, PylonRecipe recipe) {
super(unlocalizedName);
this.recipe = recipe;
}
public PagePylon(String unlocalizedName, Class item) {
super(unlocalizedName);
if (Item.class.isAssignableFrom(item)) {
this.recipe = (PylonRecipe) BlockRegistry.getFirstRecipeFromItem(item);
}
if (Block.class.isAssignableFrom(item)) {
this.recipe = (PylonRecipe) BlockRegistry.getFirstRecipeFromBlock(item);
}
}
@Override
public void onPageAdded(LexiconEntry entry, int index) {
LexiconRecipeMappings.map(recipe.result, entry, index);
}
@Override
@SideOnly(Side.CLIENT)
public void renderRecipe(IGuiLexiconEntry gui, int mx, int my) {
renderPylonRecipe(gui, recipe, mx, my);
TextureManager render = Minecraft.getMinecraft().renderEngine;
render.bindTexture(craftingOverlay);
GlStateManager.enableBlend();
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GlStateManager.color(1F, 1F, 1F, 1F);
((GuiScreen) gui).drawTexturedModalRect(gui.getLeft(), gui.getTop(), 0, 0, gui.getWidth(), gui.getHeight());
GlStateManager.enableBlend();
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
render.bindTexture(craftingOverlay);
GlStateManager.enableBlend();
GlStateManager.disableBlend();
}
@SideOnly(Side.CLIENT)
public void renderPylonRecipe(IGuiLexiconEntry gui, PylonRecipe recipe, int mx, int my) {
for (int i = 0; i < 4; i++) {
EnumFacing direction = CraftingCenterTile.pedestalRelativeLocations.get(i);
int x = 2 + direction.getFrontOffsetX();
int y = 2 + direction.getFrontOffsetZ();
renderItemAtGridPos(gui, x, y, recipe.componentList.get(i).itemStack, true);
int xPos = gui.getLeft() + x * 29 + 7 + (y == 0 && x == 3 ? 10 : 0);
int yPos = gui.getTop() + y * 29 + 24 - (y == 0 ? 7 : 0);
int quantity = recipe.componentList.get(i).auraQuantity;
//If the 'Shift click to see recipe is present
//We need to offset the color display
LexiconRecipeMappings.EntryData data = LexiconRecipeMappings.getDataForStack(recipe.componentList.get(i).itemStack);
int yOffset = (data != null && (data.entry != gui.getEntry() || data.page != gui.getPageOn())) ? 32 : 16;
if (mx >= xPos && my >= yPos && mx < xPos + 16 && my < yPos + 16) {
VazkiiRenderHelper.renderTooltip(mx, my + yOffset, Collections.singletonList("" + quantity));
}
}
renderItemAtGridPos(gui, 2, 0, recipe.result, false);
}
}