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 GuiVideoSettings extends GuiScreen
008 {
009 private GuiScreen parentGuiScreen;
010
011 /** The title string that is displayed in the top-center of the screen. */
012 protected String screenTitle = "Video Settings";
013
014 /** GUI game settings */
015 private GameSettings guiGameSettings;
016
017 /**
018 * True if the system is 64-bit (using a simple indexOf test on a system property)
019 */
020 private boolean is64bit = false;
021
022 /** An array of all of EnumOption's video options. */
023 private static EnumOptions[] videoOptions = new EnumOptions[] {EnumOptions.GRAPHICS, EnumOptions.RENDER_DISTANCE, EnumOptions.AMBIENT_OCCLUSION, EnumOptions.FRAMERATE_LIMIT, EnumOptions.ANAGLYPH, EnumOptions.VIEW_BOBBING, EnumOptions.GUI_SCALE, EnumOptions.ADVANCED_OPENGL, EnumOptions.GAMMA, EnumOptions.RENDER_CLOUDS, EnumOptions.PARTICLES, EnumOptions.USE_SERVER_TEXTURES};
024
025 public GuiVideoSettings(GuiScreen par1GuiScreen, GameSettings par2GameSettings)
026 {
027 this.parentGuiScreen = par1GuiScreen;
028 this.guiGameSettings = 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 this.screenTitle = var1.translateKey("options.videoTitle");
038 int var2 = 0;
039 EnumOptions[] var3 = videoOptions;
040 int var4 = var3.length;
041 int var5;
042
043 for (var5 = 0; var5 < var4; ++var5)
044 {
045 EnumOptions var6 = var3[var5];
046
047 if (var6.getEnumFloat())
048 {
049 this.controlList.add(new GuiSlider(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.guiGameSettings.getKeyBinding(var6), this.guiGameSettings.getOptionFloatValue(var6)));
050 }
051 else
052 {
053 this.controlList.add(new GuiSmallButton(var6.returnEnumOrdinal(), this.width / 2 - 155 + var2 % 2 * 160, this.height / 6 + 24 * (var2 >> 1), var6, this.guiGameSettings.getKeyBinding(var6)));
054 }
055
056 ++var2;
057 }
058
059 this.controlList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, var1.translateKey("gui.done")));
060 this.is64bit = false;
061 String[] var9 = new String[] {"sun.arch.data.model", "com.ibm.vm.bitmode", "os.arch"};
062 String[] var10 = var9;
063 var5 = var9.length;
064
065 for (int var11 = 0; var11 < var5; ++var11)
066 {
067 String var7 = var10[var11];
068 String var8 = System.getProperty(var7);
069
070 if (var8 != null && var8.contains("64"))
071 {
072 this.is64bit = true;
073 break;
074 }
075 }
076 }
077
078 /**
079 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
080 */
081 protected void actionPerformed(GuiButton par1GuiButton)
082 {
083 if (par1GuiButton.enabled)
084 {
085 int var2 = this.guiGameSettings.guiScale;
086
087 if (par1GuiButton.id < 100 && par1GuiButton instanceof GuiSmallButton)
088 {
089 this.guiGameSettings.setOptionValue(((GuiSmallButton)par1GuiButton).returnEnumOptions(), 1);
090 par1GuiButton.displayString = this.guiGameSettings.getKeyBinding(EnumOptions.getEnumOptions(par1GuiButton.id));
091 }
092
093 if (par1GuiButton.id == 200)
094 {
095 this.mc.gameSettings.saveOptions();
096 this.mc.displayGuiScreen(this.parentGuiScreen);
097 }
098
099 if (this.guiGameSettings.guiScale != var2)
100 {
101 ScaledResolution var3 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
102 int var4 = var3.getScaledWidth();
103 int var5 = var3.getScaledHeight();
104 this.setWorldAndResolution(this.mc, var4, var5);
105 }
106 }
107 }
108
109 /**
110 * Draws the screen and all the components in it.
111 */
112 public void drawScreen(int par1, int par2, float par3)
113 {
114 this.drawDefaultBackground();
115 this.drawCenteredString(this.fontRenderer, this.screenTitle, this.width / 2, 20, 16777215);
116
117 if (!this.is64bit && this.guiGameSettings.renderDistance == 0)
118 {
119 this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("options.farWarning1"), this.width / 2, this.height / 6 + 144, 11468800);
120 this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("options.farWarning2"), this.width / 2, this.height / 6 + 144 + 12, 11468800);
121 }
122
123 super.drawScreen(par1, par2, par3);
124 }
125 }