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