    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}