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