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};
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}