package blusunrize.immersiveengineering.client.gui; import blusunrize.immersiveengineering.ImmersiveEngineering; import blusunrize.immersiveengineering.api.Lib; import blusunrize.immersiveengineering.client.ClientUtils; import blusunrize.immersiveengineering.client.gui.elements.GuiButtonIE; import blusunrize.immersiveengineering.client.gui.elements.GuiButtonState; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityAssembler; import blusunrize.immersiveengineering.common.gui.ContainerAssembler; import blusunrize.immersiveengineering.common.util.network.MessageTileSync; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.TextFormatting; import org.lwjgl.opengl.GL11; import java.util.ArrayList; public class GuiAssembler extends GuiContainer { static final String texture = "immersiveengineering:textures/gui/assembler.png"; public TileEntityAssembler tile; public GuiAssembler(InventoryPlayer inventoryPlayer, TileEntityAssembler tile) { super(new ContainerAssembler(inventoryPlayer, tile)); this.tile=tile; this.xSize = 230; this.ySize = 218; } @Override public void initGui() { // "\u2716" // "\u2716" // "\u2716" super.initGui(); this.buttonList.clear(); this.buttonList.add(new GuiButtonIE(0, guiLeft+ 11,guiTop+67, 10,10, null, texture,230,50).setHoverOffset(0,10)); this.buttonList.add(new GuiButtonIE(1, guiLeft+ 69,guiTop+67, 10,10, null, texture,230,50).setHoverOffset(0,10)); this.buttonList.add(new GuiButtonIE(2, guiLeft+127,guiTop+67, 10,10, null, texture,230,50).setHoverOffset(0,10)); this.buttonList.add(new GuiButtonState(3, guiLeft+162,guiTop+69, 16,16, null, tile.recursiveIngredients, texture,240,66,3)); } @Override protected void actionPerformed(GuiButton button) { NBTTagCompound tag = new NBTTagCompound(); tag.setInteger("buttonID", button.id); ImmersiveEngineering.packetHandler.sendToServer(new MessageTileSync(tile, tag)); if(button.id==3) { tile.recursiveIngredients = !tile.recursiveIngredients; this.initGui(); } } @Override public void drawScreen(int mx, int my, float partial) { super.drawScreen(mx, my, partial); ArrayList<String> tooltip = new ArrayList<String>(); if(mx>=guiLeft+187&&mx<guiLeft+194 && my>=guiTop+12&&my<guiTop+59) tooltip.add(tile.getEnergyStored(null)+"/"+tile.getMaxEnergyStored(null)+" RF"); ClientUtils.handleGuiTank(tile.tanks[0], guiLeft+204,guiTop+13,16,46, 250,0,20,50, mx,my, texture,tooltip); ClientUtils.handleGuiTank(tile.tanks[1], guiLeft+182,guiTop+70,16,46, 250,0,20,50, mx,my, texture,tooltip); ClientUtils.handleGuiTank(tile.tanks[2], guiLeft+204,guiTop+70,16,46, 250,0,20,50, mx,my, texture,tooltip); for(int i=0; i<tile.patterns.length; i++) if(tile.inventory[18+i]==null && tile.patterns[i].inv[9]!=null) if(mx>=guiLeft+27+i*58&&mx<guiLeft+43+i*58 && my>=guiTop+64&&my<guiTop+80) { tooltip.add(tile.patterns[i].inv[9].getDisplayName()); tile.patterns[i].inv[9].getItem().addInformation(tile.patterns[i].inv[9], ClientUtils.mc().thePlayer, tooltip, false); for(int j=0; j<tooltip.size(); j++) tooltip.set(j, (j==0?tile.patterns[i].inv[9].getRarity().rarityColor: TextFormatting.GRAY)+tooltip.get(j)); } if(((mx>=guiLeft+11&&mx<guiLeft+21)||(mx>=guiLeft+69&&mx<guiLeft+79)||(mx>=guiLeft+127&&mx<guiLeft+137)) && my>guiTop+67&&my<guiTop+77) tooltip.add(I18n.format(Lib.GUI_CONFIG+"assembler.clearRecipe")); if(mx>=guiLeft+162&&mx<guiLeft+178 && my>guiTop+69&&my<guiTop+85) tooltip.add(I18n.format(Lib.GUI_CONFIG+"assembler."+(tile.recursiveIngredients?"recursiveIngredients":"nonRecursiveIngredients"))); if(!tooltip.isEmpty()) { ClientUtils.drawHoveringText(tooltip, mx, my, fontRendererObj, xSize,-1); RenderHelper.enableGUIStandardItemLighting(); } } @Override protected void drawGuiContainerBackgroundLayer(float f, int mx, int my) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); ClientUtils.bindTexture(texture); this.drawTexturedModalRect(guiLeft,guiTop, 0, 0, xSize, ySize); int stored = (int)(46*(tile.getEnergyStored(null)/(float)tile.getMaxEnergyStored(null))); ClientUtils.drawGradientRect(guiLeft+187,guiTop+13+(46-stored), guiLeft+194,guiTop+59, 0xffb51500, 0xff600b00); ClientUtils.handleGuiTank(tile.tanks[0], guiLeft+204,guiTop+13,16,46, 230,0,20,50, mx,my, texture,null); ClientUtils.handleGuiTank(tile.tanks[1], guiLeft+182,guiTop+70,16,46, 230,0,20,50, mx,my, texture,null); ClientUtils.handleGuiTank(tile.tanks[2], guiLeft+204,guiTop+70,16,46, 230,0,20,50, mx,my, texture,null); for(int i=0; i<tile.patterns.length; i++) if(tile.inventory[18+i]==null && tile.patterns[i].inv[9]!=null) { ItemStack stack = tile.patterns[i].inv[9]; GL11.glPushMatrix(); GL11.glTranslatef(0.0F, 0.0F, 32.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); RenderHelper.disableStandardItemLighting(); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; FontRenderer font = null; if(stack!=null) font = stack.getItem().getFontRenderer(stack); if(font==null) font = fontRendererObj; itemRender.renderItemAndEffectIntoGUI(stack, guiLeft+27+i*58, guiTop+64); itemRender.renderItemOverlayIntoGUI(font, stack, guiLeft+27+i*58, guiTop+64, TextFormatting.GRAY.toString()+stack.stackSize); this.zLevel = 0.0F; itemRender.zLevel = 0.0F; GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_DEPTH_TEST); ClientUtils.drawColouredRect(guiLeft+27+i*58, guiTop+64, 16,16, 0x77444444); GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glPopMatrix(); } } }