001 package net.minecraft.client.gui;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import net.minecraft.client.settings.GameSettings;
006 import net.minecraft.util.StringTranslate;
007
008 @SideOnly(Side.CLIENT)
009 public class GuiLanguage extends GuiScreen
010 {
011 /** This GUI's parent GUI. */
012 protected GuiScreen parentGui;
013
014 /**
015 * Timer used to update texture packs, decreases every tick and is reset to 20 and updates texture packs upon
016 * reaching 0.
017 */
018 private int updateTimer = -1;
019
020 /** This GUI's language list. */
021 private GuiSlotLanguage languageList;
022
023 /** For saving the user's language selection to disk. */
024 private final GameSettings theGameSettings;
025
026 /** This GUI's 'Done' button. */
027 private GuiSmallButton doneButton;
028
029 public GuiLanguage(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
030 {
031 this.parentGui = par1GuiScreen;
032 this.theGameSettings = par2GameSettings;
033 }
034
035 /**
036 * Adds the buttons (and other controls) to the screen in question.
037 */
038 public void initGui()
039 {
040 StringTranslate var1 = StringTranslate.getInstance();
041 this.controlList.add(this.doneButton = new GuiSmallButton(6, this.width / 2 - 75, this.height - 38, var1.translateKey("gui.done")));
042 this.languageList = new GuiSlotLanguage(this);
043 this.languageList.registerScrollButtons(this.controlList, 7, 8);
044 }
045
046 /**
047 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
048 */
049 protected void actionPerformed(GuiButton par1GuiButton)
050 {
051 if (par1GuiButton.enabled)
052 {
053 switch (par1GuiButton.id)
054 {
055 case 5:
056 break;
057 case 6:
058 this.mc.displayGuiScreen(this.parentGui);
059 break;
060 default:
061 this.languageList.actionPerformed(par1GuiButton);
062 }
063 }
064 }
065
066 /**
067 * Draws the screen and all the components in it.
068 */
069 public void drawScreen(int par1, int par2, float par3)
070 {
071 this.languageList.drawScreen(par1, par2, par3);
072
073 if (this.updateTimer <= 0)
074 {
075 this.mc.texturePackList.updateAvaliableTexturePacks();
076 this.updateTimer += 20;
077 }
078
079 StringTranslate var4 = StringTranslate.getInstance();
080 this.drawCenteredString(this.fontRenderer, var4.translateKey("options.language"), this.width / 2, 16, 16777215);
081 this.drawCenteredString(this.fontRenderer, "(" + var4.translateKey("options.languageWarning") + ")", this.width / 2, this.height - 56, 8421504);
082 super.drawScreen(par1, par2, par3);
083 }
084
085 /**
086 * Called from the main game loop to update the screen.
087 */
088 public void updateScreen()
089 {
090 super.updateScreen();
091 --this.updateTimer;
092 }
093
094 /**
095 * Gets the relevant instance of GameSettings. Synthetic method for use in GuiSlotLanguage
096 */
097 static GameSettings getGameSettings(GuiLanguage par0GuiLanguage)
098 {
099 return par0GuiLanguage.theGameSettings;
100 }
101
102 /**
103 * Returns the private doneButton field.
104 */
105 static GuiSmallButton getDoneButton(GuiLanguage par0GuiLanguage)
106 {
107 return par0GuiLanguage.doneButton;
108 }
109 }