    001    package net.minecraft.src;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import java.util.Iterator;
    006    import org.lwjgl.opengl.GL11;
    007
    008    @SideOnly(Side.CLIENT)
    009    public class GuiGameOver extends GuiScreen
    010    {
    011        /**
    012         * The cooldown timer for the buttons, increases every tick and enables all buttons when reaching 20.
    013         */
    014        private int cooldownTimer;
    015
    016        /**
    017         * Adds the buttons (and other controls) to the screen in question.
    018         */
    019        public void initGui()
    020        {
    021            this.controlList.clear();
    022
    023            if (this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled())
    024            {
    025                if (this.mc.isIntegratedServerRunning())
    026                {
    027                    this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 96, StatCollector.translateToLocal("deathScreen.deleteWorld")));
    028                }
    029                else
    030                {
    031                    this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 96, StatCollector.translateToLocal("deathScreen.leaveServer")));
    032                }
    033            }
    034            else
    035            {
    036                this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 72, StatCollector.translateToLocal("deathScreen.respawn")));
    037                this.controlList.add(new GuiButton(2, this.width / 2 - 100, this.height / 4 + 96, StatCollector.translateToLocal("deathScreen.titleScreen")));
    038
    039                if (this.mc.session == null)
    040                {
    041                    ((GuiButton)this.controlList.get(1)).enabled = false;
    042                }
    043            }
    044
    045            GuiButton var2;
    046
    047            for (Iterator var1 = this.controlList.iterator(); var1.hasNext(); var2.enabled = false)
    048            {
    049                var2 = (GuiButton)var1.next();
    050            }
    051        }
    052
    053        /**
    054         * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    055         */
    056        protected void keyTyped(char par1, int par2) {}
    057
    058        /**
    059         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    060         */
    061        protected void actionPerformed(GuiButton par1GuiButton)
    062        {
    063            switch (par1GuiButton.id)
    064            {
    065                case 1:
    066                    this.mc.thePlayer.respawnPlayer();
    067                    this.mc.displayGuiScreen((GuiScreen)null);
    068                    break;
    069                case 2:
    070                    this.mc.theWorld.sendQuittingDisconnectingPacket();
    071                    this.mc.loadWorld((WorldClient)null);
    072                    this.mc.displayGuiScreen(new GuiMainMenu());
    073            }
    074        }
    075
    076        /**
    077         * Draws the screen and all the components in it.
    078         */
    079        public void drawScreen(int par1, int par2, float par3)
    080        {
    081            this.drawGradientRect(0, 0, this.width, this.height, 1615855616, -1602211792);
    082            GL11.glPushMatrix();
    083            GL11.glScalef(2.0F, 2.0F, 2.0F);
    084            boolean var4 = this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled();
    085            String var5 = var4 ? StatCollector.translateToLocal("deathScreen.title.hardcore") : StatCollector.translateToLocal("deathScreen.title");
    086            this.drawCenteredString(this.fontRenderer, var5, this.width / 2 / 2, 30, 16777215);
    087            GL11.glPopMatrix();
    088
    089            if (var4)
    090            {
    091                this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("deathScreen.hardcoreInfo"), this.width / 2, 144, 16777215);
    092            }
    093
    094            this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("deathScreen.score") + ": \u00a7e" + this.mc.thePlayer.getScore(), this.width / 2, 100, 16777215);
    095            super.drawScreen(par1, par2, par3);
    096        }
    097
    098        /**
    099         * Returns true if this GUI should pause the game when it is displayed in single-player
    100         */
    101        public boolean doesGuiPauseGame()
    102        {
    103            return false;
    104        }
    105
    106        /**
    107         * Called from the main game loop to update the screen.
    108         */
    109        public void updateScreen()
    110        {
    111            super.updateScreen();
    112            ++this.cooldownTimer;
    113            GuiButton var2;
    114
    115            if (this.cooldownTimer == 20)
    116            {
    117                for (Iterator var1 = this.controlList.iterator(); var1.hasNext(); var2.enabled = true)
    118                {
    119                    var2 = (GuiButton)var1.next();
    120                }
    121            }
    122        }
    123    }