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