    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.EnumOptions;
    006    import net.minecraft.client.settings.GameSettings;
    007    import net.minecraft.util.StringTranslate;
    008
    009    @SideOnly(Side.CLIENT)
    010    public class ScreenChatOptions extends GuiScreen
    011    {
    012        /** An array of all EnumOptions which are to do with chat. */
    013        private static final EnumOptions[] allScreenChatOptions = new EnumOptions[] {EnumOptions.CHAT_VISIBILITY, EnumOptions.CHAT_COLOR, EnumOptions.CHAT_LINKS, EnumOptions.CHAT_OPACITY, EnumOptions.CHAT_LINKS_PROMPT};
    014        private static final EnumOptions[] allMultiplayerOptions = new EnumOptions[] {EnumOptions.SHOW_CAPE};
    015
    016        /** Instance of GuiScreen. */
    017        private final GuiScreen theGuiScreen;
    018
    019        /** Instance of GameSettings file. */
    020        private final GameSettings theSettings;
    021        private String theChatOptions;
    022        private String field_82268_n;
    023        private int field_82269_o = 0;
    024
    025        public ScreenChatOptions(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
    026        {
    027            this.theGuiScreen = par1GuiScreen;
    028            this.theSettings = par2GameSettings;
    029        }
    030
    031        /**
    032         * Adds the buttons (and other controls) to the screen in question.
    033         */
    034        public void initGui()
    035        {
    036            StringTranslate var1 = StringTranslate.getInstance();
    037            int var2 = 0;
    038            this.theChatOptions = var1.translateKey("options.chat.title");
    039            this.field_82268_n = var1.translateKey("options.multiplayer.title");
    040            EnumOptions[] var3 = allScreenChatOptions;
    041            int var4 = var3.length;
    042            int var5;
    043            EnumOptions var6;
    044
    045            for (var5 = 0; var5 < var4; ++var5)
    046            {
    047                var6 = var3[var5];
    048
    049                if (var6.getEnumFloat())
    050                {
    051                    this.controlList.add(new GuiSlider(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.theSettings.getKeyBinding(var6), this.theSettings.getOptionFloatValue(var6)));
    052                }
    053                else
    054                {
    055                    this.controlList.add(new GuiSmallButton(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.theSettings.getKeyBinding(var6)));
    056                }
    057
    058                ++var2;
    059            }
    060
    061            if (var2 % 2 == 1)
    062            {
    063                ++var2;
    064            }
    065
    066            this.field_82269_o = this.height / 6 + 24 * (var2 >> 1);
    067            var2 += 2;
    068            var3 = allMultiplayerOptions;
    069            var4 = var3.length;
    070
    071            for (var5 = 0; var5 < var4; ++var5)
    072            {
    073                var6 = var3[var5];
    074
    075                if (var6.getEnumFloat())
    076                {
    077                    this.controlList.add(new GuiSlider(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.theSettings.getKeyBinding(var6), this.theSettings.getOptionFloatValue(var6)));
    078                }
    079                else
    080                {
    081                    this.controlList.add(new GuiSmallButton(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.theSettings.getKeyBinding(var6)));
    082                }
    083
    084                ++var2;
    085            }
    086
    087            this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, var1.translateKey("gui.done")));
    088        }
    089
    090        /**
    091         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
    092         */
    093        protected void actionPerformed(GuiButton par1GuiButton)
    094        {
    095            if (par1GuiButton.enabled)
    096            {
    097                if (par1GuiButton.id < 100 && par1GuiButton instanceof GuiSmallButton)
    098                {
    099                    this.theSettings.setOptionValue(((GuiSmallButton)par1GuiButton).returnEnumOptions(), 1);
    100                    par1GuiButton.displayString = this.theSettings.getKeyBinding(EnumOptions.getEnumOptions(par1GuiButton.id));
    101                }
    102
    103                if (par1GuiButton.id == 200)
    104                {
    105                    this.mc.gameSettings.saveOptions();
    106                    this.mc.displayGuiScreen(this.theGuiScreen);
    107                }
    108            }
    109        }
    110
    111        /**
    112         * Draws the screen and all the components in it.
    113         */
    114        public void drawScreen(int par1, int par2, float par3)
    115        {
    116            this.drawDefaultBackground();
    117            this.drawCenteredString(this.fontRenderer, this.theChatOptions, this.width / 2, 20, 16777215);
    118            this.drawCenteredString(this.fontRenderer, this.field_82268_n, this.width / 2, this.field_82269_o + 7, 16777215);
    119            super.drawScreen(par1, par2, par3);
    120        }
    121    }