001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import net.minecraft.client.Minecraft;
006    import org.lwjgl.opengl.GL11;
007    import org.lwjgl.opengl.GL12;
008    
009    @SideOnly(Side.CLIENT)
010    public class GuiInventory extends InventoryEffectRenderer
011    {
012        /**
013         * x size of the inventory window in pixels. Defined as float, passed as int
014         */
015        private float xSize_lo;
016    
017        /**
018         * y size of the inventory window in pixels. Defined as float, passed as int.
019         */
020        private float ySize_lo;
021    
022        public GuiInventory(EntityPlayer par1EntityPlayer)
023        {
024            super(par1EntityPlayer.inventoryContainer);
025            this.allowUserInput = true;
026            par1EntityPlayer.addStat(AchievementList.openInventory, 1);
027        }
028    
029        /**
030         * Called from the main game loop to update the screen.
031         */
032        public void updateScreen()
033        {
034            if (this.mc.playerController.isInCreativeMode())
035            {
036                this.mc.displayGuiScreen(new GuiContainerCreative(this.mc.thePlayer));
037            }
038        }
039    
040        /**
041         * Adds the buttons (and other controls) to the screen in question.
042         */
043        public void initGui()
044        {
045            this.controlList.clear();
046    
047            if (this.mc.playerController.isInCreativeMode())
048            {
049                this.mc.displayGuiScreen(new GuiContainerCreative(this.mc.thePlayer));
050            }
051            else
052            {
053                super.initGui();
054            }
055        }
056    
057        /**
058         * Draw the foreground layer for the GuiContainer (everything in front of the items)
059         */
060        protected void drawGuiContainerForegroundLayer(int par1, int par2)
061        {
062            this.fontRenderer.drawString(StatCollector.translateToLocal("container.crafting"), 86, 16, 4210752);
063        }
064    
065        /**
066         * Draws the screen and all the components in it.
067         */
068        public void drawScreen(int par1, int par2, float par3)
069        {
070            super.drawScreen(par1, par2, par3);
071            this.xSize_lo = (float)par1;
072            this.ySize_lo = (float)par2;
073        }
074    
075        /**
076         * Draw the background layer for the GuiContainer (everything behind the items)
077         */
078        protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
079        {
080            int var4 = this.mc.renderEngine.getTexture("/gui/inventory.png");
081            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
082            this.mc.renderEngine.bindTexture(var4);
083            int var5 = this.guiLeft;
084            int var6 = this.guiTop;
085            this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
086            func_74223_a(this.mc, var5 + 51, var6 + 75, 30, (float)(var5 + 51) - this.xSize_lo, (float)(var6 + 75 - 50) - this.ySize_lo);
087        }
088    
089        public static void func_74223_a(Minecraft par0Minecraft, int par1, int par2, int par3, float par4, float par5)
090        {
091            GL11.glEnable(GL11.GL_COLOR_MATERIAL);
092            GL11.glPushMatrix();
093            GL11.glTranslatef((float)par1, (float)par2, 50.0F);
094            GL11.glScalef((float)(-par3), (float)par3, (float)par3);
095            GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
096            float var6 = par0Minecraft.thePlayer.renderYawOffset;
097            float var7 = par0Minecraft.thePlayer.rotationYaw;
098            float var8 = par0Minecraft.thePlayer.rotationPitch;
099            GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
100            RenderHelper.enableStandardItemLighting();
101            GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
102            GL11.glRotatef(-((float)Math.atan((double)(par5 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F);
103            par0Minecraft.thePlayer.renderYawOffset = (float)Math.atan((double)(par4 / 40.0F)) * 20.0F;
104            par0Minecraft.thePlayer.rotationYaw = (float)Math.atan((double)(par4 / 40.0F)) * 40.0F;
105            par0Minecraft.thePlayer.rotationPitch = -((float)Math.atan((double)(par5 / 40.0F))) * 20.0F;
106            par0Minecraft.thePlayer.rotationYawHead = par0Minecraft.thePlayer.rotationYaw;
107            GL11.glTranslatef(0.0F, par0Minecraft.thePlayer.yOffset, 0.0F);
108            RenderManager.instance.playerViewY = 180.0F;
109            RenderManager.instance.renderEntityWithPosYaw(par0Minecraft.thePlayer, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F);
110            par0Minecraft.thePlayer.renderYawOffset = var6;
111            par0Minecraft.thePlayer.rotationYaw = var7;
112            par0Minecraft.thePlayer.rotationPitch = var8;
113            GL11.glPopMatrix();
114            RenderHelper.disableStandardItemLighting();
115            GL11.glDisable(GL12.GL_RESCALE_NORMAL);
116            OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
117            GL11.glDisable(GL11.GL_TEXTURE_2D);
118            OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
119        }
120    
121        /**
122         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
123         */
124        protected void actionPerformed(GuiButton par1GuiButton)
125        {
126            if (par1GuiButton.id == 0)
127            {
128                this.mc.displayGuiScreen(new GuiAchievements(this.mc.statFileWriter));
129            }
130    
131            if (par1GuiButton.id == 1)
132            {
133                this.mc.displayGuiScreen(new GuiStats(this, this.mc.statFileWriter));
134            }
135        }
136    }