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