001package net.minecraft.client.gui;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.client.settings.EnumOptions;
006import net.minecraft.client.settings.GameSettings;
007import net.minecraft.util.StringTranslate;
008
009@SideOnly(Side.CLIENT)
010public 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, EnumOptions.CHAT_SCALE, EnumOptions.CHAT_HEIGHT_FOCUSED, EnumOptions.CHAT_HEIGHT_UNFOCUSED, EnumOptions.CHAT_WIDTH};
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 stringtranslate = StringTranslate.getInstance();
037        int i = 0;
038        this.theChatOptions = stringtranslate.translateKey("options.chat.title");
039        this.field_82268_n = stringtranslate.translateKey("options.multiplayer.title");
040        EnumOptions[] aenumoptions = allScreenChatOptions;
041        int j = aenumoptions.length;
042        int k;
043        EnumOptions enumoptions;
044
045        for (k = 0; k < j; ++k)
046        {
047            enumoptions = aenumoptions[k];
048
049            if (enumoptions.getEnumFloat())
050            {
051                this.buttonList.add(new GuiSlider(enumoptions.returnEnumOrdinal(), this.width / 2 - 155 + i % 2 * 160, this.height / 6 + 24 * (i >> 1), enumoptions, this.theSettings.getKeyBinding(enumoptions), this.theSettings.getOptionFloatValue(enumoptions)));
052            }
053            else
054            {
055                this.buttonList.add(new GuiSmallButton(enumoptions.returnEnumOrdinal(), this.width / 2 - 155 + i % 2 * 160, this.height / 6 + 24 * (i >> 1), enumoptions, this.theSettings.getKeyBinding(enumoptions)));
056            }
057
058            ++i;
059        }
060
061        if (i % 2 == 1)
062        {
063            ++i;
064        }
065
066        this.field_82269_o = this.height / 6 + 24 * (i >> 1);
067        i += 2;
068        aenumoptions = allMultiplayerOptions;
069        j = aenumoptions.length;
070
071        for (k = 0; k < j; ++k)
072        {
073            enumoptions = aenumoptions[k];
074
075            if (enumoptions.getEnumFloat())
076            {
077                this.buttonList.add(new GuiSlider(enumoptions.returnEnumOrdinal(), this.width / 2 - 155 + i % 2 * 160, this.height / 6 + 24 * (i >> 1), enumoptions, this.theSettings.getKeyBinding(enumoptions), this.theSettings.getOptionFloatValue(enumoptions)));
078            }
079            else
080            {
081                this.buttonList.add(new GuiSmallButton(enumoptions.returnEnumOrdinal(), this.width / 2 - 155 + i % 2 * 160, this.height / 6 + 24 * (i >> 1), enumoptions, this.theSettings.getKeyBinding(enumoptions)));
082            }
083
084            ++i;
085        }
086
087        this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, stringtranslate.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}