package net.minecraft.client.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.settings.GameSettings;
@SideOnly(Side.CLIENT)
public class GuiVideoSettings extends GuiScreen
{
private GuiScreen parentGuiScreen;
protected String screenTitle = "Video Settings";
private GameSettings guiGameSettings;
private GuiListExtended optionsRowList;
/** An array of all of GameSettings.Options's video options. */
private static final GameSettings.Options[] videoOptions = new GameSettings.Options[] {GameSettings.Options.GRAPHICS, GameSettings.Options.RENDER_DISTANCE, GameSettings.Options.AMBIENT_OCCLUSION, GameSettings.Options.FRAMERATE_LIMIT, GameSettings.Options.ANAGLYPH, GameSettings.Options.VIEW_BOBBING, GameSettings.Options.GUI_SCALE, GameSettings.Options.ADVANCED_OPENGL, GameSettings.Options.GAMMA, GameSettings.Options.RENDER_CLOUDS, GameSettings.Options.PARTICLES, GameSettings.Options.USE_FULLSCREEN, GameSettings.Options.ENABLE_VSYNC, GameSettings.Options.MIPMAP_LEVELS, GameSettings.Options.ANISOTROPIC_FILTERING};
private static final String __OBFID = "CL_00000718";
public GuiVideoSettings(GuiScreen p_i1062_1_, GameSettings p_i1062_2_)
{
this.parentGuiScreen = p_i1062_1_;
this.guiGameSettings = p_i1062_2_;
}
/**
* Adds the buttons (and other controls) to the screen in question.
*/
public void initGui()
{
this.screenTitle = I18n.format("options.videoTitle", new Object[0]);
this.buttonList.clear();
this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height - 27, I18n.format("gui.done", new Object[0])));
if (OpenGlHelper.field_153197_d)
{
this.optionsRowList = new GuiOptionsRowList(this.mc, this.width, this.height, 32, this.height - 32, 25, videoOptions);
}
else
{
GameSettings.Options[] aoptions = new GameSettings.Options[videoOptions.length - 1];
int i = 0;
GameSettings.Options[] aoptions1 = videoOptions;
int j = aoptions1.length;
for (int k = 0; k < j; ++k)
{
GameSettings.Options options = aoptions1[k];
if (options != GameSettings.Options.ADVANCED_OPENGL)
{
aoptions[i] = options;
++i;
}
}
this.optionsRowList = new GuiOptionsRowList(this.mc, this.width, this.height, 32, this.height - 32, 25, aoptions);
}
}
protected void actionPerformed(GuiButton button)
{
if (button.enabled)
{
if (button.id == 200)
{
this.mc.gameSettings.saveOptions();
this.mc.displayGuiScreen(this.parentGuiScreen);
}
}
}
/**
* Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton
*/
protected void mouseClicked(int mouseX, int mouseY, int mouseButton)
{
int l = this.guiGameSettings.guiScale;
super.mouseClicked(mouseX, mouseY, mouseButton);
this.optionsRowList.func_148179_a(mouseX, mouseY, mouseButton);
if (this.guiGameSettings.guiScale != l)
{
ScaledResolution scaledresolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
int i1 = scaledresolution.getScaledWidth();
int j1 = scaledresolution.getScaledHeight();
this.setWorldAndResolution(this.mc, i1, j1);
}
}
/**
* Called when a mouse button is released. Args : mouseX, mouseY, releaseButton
*
* @param state Will be negative to indicate mouse move and will be either 0 or 1 to indicate mouse up.
*/
protected void mouseReleased(int mouseX, int mouseY, int state)
{
int l = this.guiGameSettings.guiScale;
super.mouseReleased(mouseX, mouseY, state);
this.optionsRowList.func_148181_b(mouseX, mouseY, state);
if (this.guiGameSettings.guiScale != l)
{
ScaledResolution scaledresolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
int i1 = scaledresolution.getScaledWidth();
int j1 = scaledresolution.getScaledHeight();
this.setWorldAndResolution(this.mc, i1, j1);
}
}
/**
* Draws the screen and all the components in it. Args : mouseX, mouseY, renderPartialTicks
*/
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
this.drawDefaultBackground();
this.optionsRowList.drawScreen(mouseX, mouseY, partialTicks);
this.drawCenteredString(this.fontRendererObj, this.screenTitle, this.width / 2, 5, 16777215);
super.drawScreen(mouseX, mouseY, partialTicks);
}
}