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 }