001package net.minecraft.client.gui;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.client.settings.GameSettings;
006import net.minecraft.util.StringTranslate;
007
008@SideOnly(Side.CLIENT)
009public 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 stringtranslate = StringTranslate.getInstance();
041        this.buttonList.add(this.doneButton = new GuiSmallButton(6, this.width / 2 - 75, this.height - 38, stringtranslate.translateKey("gui.done")));
042        this.languageList = new GuiSlotLanguage(this);
043        this.languageList.registerScrollButtons(this.buttonList, 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 stringtranslate = StringTranslate.getInstance();
080        this.drawCenteredString(this.fontRenderer, stringtranslate.translateKey("options.language"), this.width / 2, 16, 16777215);
081        this.drawCenteredString(this.fontRenderer, "(" + stringtranslate.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}