    001    package net.minecraft.client.gui;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.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    }