001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.net.URI;
006    import net.minecraft.client.settings.GameSettings;
007    import net.minecraft.util.StatCollector;
008    import org.lwjgl.input.Keyboard;
009    import org.lwjgl.opengl.GL11;
010    
011    @SideOnly(Side.CLIENT)
012    public class GuiScreenDemo extends GuiScreen
013    {
014        /**
015         * Adds the buttons (and other controls) to the screen in question.
016         */
017        public void initGui()
018        {
019            this.controlList.clear();
020            byte var1 = -16;
021            this.controlList.add(new GuiButton(1, this.width / 2 - 116, this.height / 2 + 62 + var1, 114, 20, StatCollector.translateToLocal("demo.help.buy")));
022            this.controlList.add(new GuiButton(2, this.width / 2 + 2, this.height / 2 + 62 + var1, 114, 20, StatCollector.translateToLocal("demo.help.later")));
023        }
024    
025        /**
026         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
027         */
028        protected void actionPerformed(GuiButton par1GuiButton)
029        {
030            switch (par1GuiButton.id)
031            {
032                case 1:
033                    par1GuiButton.enabled = false;
034    
035                    try
036                    {
037                        Class var2 = Class.forName("java.awt.Desktop");
038                        Object var3 = var2.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
039                        var2.getMethod("browse", new Class[] {URI.class}).invoke(var3, new Object[] {new URI("http://www.minecraft.net/store?source=demo")});
040                    }
041                    catch (Throwable var4)
042                    {
043                        var4.printStackTrace();
044                    }
045    
046                    break;
047                case 2:
048                    this.mc.displayGuiScreen((GuiScreen)null);
049                    this.mc.setIngameFocus();
050            }
051        }
052    
053        /**
054         * Called from the main game loop to update the screen.
055         */
056        public void updateScreen()
057        {
058            super.updateScreen();
059        }
060    
061        /**
062         * Draws either a gradient over the background screen (when it exists) or a flat gradient over background.png
063         */
064        public void drawDefaultBackground()
065        {
066            super.drawDefaultBackground();
067            int var1 = this.mc.renderEngine.getTexture("/gui/demo_bg.png");
068            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
069            this.mc.renderEngine.bindTexture(var1);
070            int var2 = (this.width - 248) / 2;
071            int var3 = (this.height - 166) / 2;
072            this.drawTexturedModalRect(var2, var3, 0, 0, 248, 166);
073        }
074    
075        /**
076         * Draws the screen and all the components in it.
077         */
078        public void drawScreen(int par1, int par2, float par3)
079        {
080            this.drawDefaultBackground();
081            int var4 = (this.width - 248) / 2 + 10;
082            int var5 = (this.height - 166) / 2 + 8;
083            this.fontRenderer.drawString(StatCollector.translateToLocal("demo.help.title"), var4, var5, 2039583);
084            var5 += 12;
085            GameSettings var7 = this.mc.gameSettings;
086            String var6 = StatCollector.translateToLocal("demo.help.movementShort");
087            var6 = String.format(var6, new Object[] {Keyboard.getKeyName(var7.keyBindForward.keyCode), Keyboard.getKeyName(var7.keyBindLeft.keyCode), Keyboard.getKeyName(var7.keyBindBack.keyCode), Keyboard.getKeyName(var7.keyBindRight.keyCode)});
088            this.fontRenderer.drawString(var6, var4, var5, 5197647);
089            var6 = StatCollector.translateToLocal("demo.help.movementMouse");
090            this.fontRenderer.drawString(var6, var4, var5 + 12, 5197647);
091            var6 = StatCollector.translateToLocal("demo.help.jump");
092            var6 = String.format(var6, new Object[] {Keyboard.getKeyName(var7.keyBindJump.keyCode)});
093            this.fontRenderer.drawString(var6, var4, var5 + 24, 5197647);
094            var6 = StatCollector.translateToLocal("demo.help.inventory");
095            var6 = String.format(var6, new Object[] {Keyboard.getKeyName(var7.keyBindInventory.keyCode)});
096            this.fontRenderer.drawString(var6, var4, var5 + 36, 5197647);
097            this.fontRenderer.drawSplitString(StatCollector.translateToLocal("demo.help.fullWrapped"), var4, var5 + 68, 218, 2039583);
098            super.drawScreen(par1, par2, par3);
099        }
100    }