    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    }