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