RMenu
Class RuneMenuVideoOptionsClientWindow

source: c:\runehov\RMenu\Classes\RuneMenuVideoOptionsClientWindow.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UWindow.UWindowPageWindow
                  |
                  +--RMenu.RuneMenuPageWindow
                     |
                     +--RMenu.RuneMenuVideoOptionsClientWindow
Direct Known Subclasses:None

class RuneMenuVideoOptionsClientWindow
extends RMenu.RuneMenuPageWindow


Variables
 UWindowComboControl ActorShadowCombo
 string ActorShadowHelp
 string ActorShadowText
 string BitsText
 string BrightnessHelp
 UWindowHSliderControl BrightnessSlider
 string BrightnessText
 UWindowComboControl ColorDepthCombo
 string ColorDepthHelp
 string ColorDepthText
 string ConfirmDriverText
 string ConfirmDriverTitle
 string ConfirmSettingsCancelText
 string ConfirmSettingsCancelTitle
 string ConfirmSettingsText
 string ConfirmSettingsTitle
 ConfirmWorldTextureDetail, ConfirmSkinTextureDetail
 string ConfirmTextureDetailText
 string ConfirmTextureDetailTitle
 float ControlOffset
 string Details[3]
 UWindowSmallButton DriverButton
 string DriverButtonHelp
 string DriverButtonText
 UWindowLabelControl DriverDesc
 string DriverHelp
 UWindowLabelControl DriverLabel
 string DriverText
 UWindowCheckbox DynamicLightsCheck
 string DynamicLightsHelp
 string DynamicLightsText
 UWindowCheckbox FractalCheck
 string FractalHelp
 string FractalText
 UWindowCheckbox LightingCheck
 string LightingHelp
 string LightingText
 string LodPercentHelp
 UWindowHSliderControl LodPercentSlider
 string LodPercentText
 UWindowEditControl MinFramerateEdit
 string MinFramerateHelp
 string MinFramerateText
 string OldSettings
 int OldSkinDetail
 int OldTextureDetail
 UWindowComboControl RagnarShadowCombo
 string RagnarShadowHelp
 string RagnarShadowText
 UWindowComboControl ResolutionCombo
 string ResolutionHelp
 string ResolutionText
 string ShadowTextBlob
 string ShadowTextNone
 string ShadowTextProjected
 UWindowCheckbox ShowDecalsCheck
 string ShowDecalsHelp
 string ShowDecalsText
 UWindowComboControl SkinDetailCombo
 string SkinDetailHelp
 string SkinDetailText
 UWindowComboControl TextureDetailCombo
 string TextureDetailHelp
 string TextureDetailText
 bool bInitialized


Function Summary
 void ActorShadowChanged()
 void AfterCreate()
 void BeforePaint(Canvas C, float X, float Y)
 void BrightnessChanged()
 void Created()
 void DecalsChanged()
     
//function MenuAlphaChanged()
//{
//	Root.Console.MenuTranslucency = MenuAlphaSlider.Value*0.01;
//}
 void DriverChange()
     
/*
 * Message Crackers
 */
 void DynamicChanged()
 void FogChanged()
     
/*
 void FractalChanged()
 void LightingChanged()
 void LoadAvailableSettings()
 void LodPercentChanged()
     
{
	if (GetLevel().Game != None)
	{
		GetLevel().Game.ParticlePercentage = ParticleSlider.Value*0.01;
	}

	class'GameInfo'.default.ParticlePercentage = ParticleSlider.Value*0.01;
}*/
 void MessageBoxDone(UWindowMessageBox W, MessageBoxResult Result)
 void MinFramerateChanged()
 void Notify(UWindowDialogControl C, byte E)
 void ParticlesChanged()
     
/*
 void RagnarShadowChanged()
     
{
	local int value;
	local float f;
	value = FogSlider.GetValue();
	FogSlider.SetText(FogText$" ["$value$"%]:");
	f = float(value)*0.01;
	GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager FogDistPercentage"@f);
}*/
 void ResolutionChanged(float W, float H)
 void SaveConfigs()
 void SettingsChanged()
 void SkinDetailChanged()
 void SkinDetailSet()
 void TextureDetailChanged()
 void TextureDetailSet()



Source Code


00001	class RuneMenuVideoOptionsClientWindow extends RuneMenuPageWindow;
00002	
00003	// Driver
00004	var bool bInitialized;
00005	var UWindowLabelControl DriverLabel;
00006	var UWindowLabelControl DriverDesc;
00007	var UWindowSmallButton DriverButton;
00008	var localized string DriverText;
00009	var localized string DriverHelp;
00010	var localized string DriverButtonText;
00011	var localized string DriverButtonHelp;
00012	
00013	// Resolution
00014	var UWindowComboControl ResolutionCombo;
00015	var localized string ResolutionText;
00016	var localized string ResolutionHelp;
00017	
00018	var string OldSettings;
00019	
00020	// Color Depth
00021	var UWindowComboControl ColorDepthCombo;
00022	var localized string ColorDepthText;
00023	var localized string ColorDepthHelp;
00024	var localized string BitsText;
00025	
00026	// Texture Detail
00027	var UWindowComboControl TextureDetailCombo;
00028	var localized string TextureDetailText;
00029	var localized string TextureDetailHelp;
00030	var localized string Details[3];
00031	var int OldTextureDetail;
00032	
00033	// Skin Detail
00034	var UWindowComboControl SkinDetailCombo;
00035	var localized string SkinDetailText;
00036	var localized string SkinDetailHelp;
00037	var int OldSkinDetail;
00038	
00039	// Brightness
00040	var UWindowHSliderControl BrightnessSlider;
00041	var localized string BrightnessText;
00042	var localized string BrightnessHelp;
00043	
00044	// Menu Translucency
00045	//var UWindowHSliderControl MenuAlphaSlider;
00046	//var localized string MenuAlphaText;
00047	//var localized string MenuAlphaHelp;
00048	
00049	// GUI Skin
00050	//var UWindowComboControl GuiSkinCombo;
00051	//var localized string GuiSkinText;
00052	//var localized string GuiSkinHelp;
00053	
00054	var float ControlOffset;
00055	
00056	var UWindowMessageBox ConfirmSettings, ConfirmDriver, ConfirmWorldTextureDetail, ConfirmSkinTextureDetail;
00057	var localized string ConfirmSettingsTitle;
00058	var localized string ConfirmSettingsText;
00059	var localized string ConfirmSettingsCancelTitle;
00060	var localized string ConfirmSettingsCancelText;
00061	var localized string ConfirmTextureDetailTitle;
00062	var localized string ConfirmTextureDetailText;
00063	var localized string ConfirmDriverTitle;
00064	var localized string ConfirmDriverText;
00065	
00066	// Show Decals
00067	var UWindowCheckbox ShowDecalsCheck;
00068	var localized string ShowDecalsText;
00069	var localized string ShowDecalsHelp;
00070	
00071	// Fractal Animation
00072	var UWindowCheckbox FractalCheck;
00073	var localized string FractalText;
00074	var localized string FractalHelp;
00075	
00076	// Lighting
00077	var UWindowCheckbox LightingCheck;
00078	var localized string LightingText;
00079	var localized string LightingHelp;
00080	
00081	// Min Desired Frame Rate
00082	var UWindowEditControl MinFramerateEdit;
00083	var localized string MinFramerateText;
00084	var localized string MinFramerateHelp;
00085	
00086	// Dynamic Lights
00087	var UWindowCheckbox DynamicLightsCheck;
00088	var localized string DynamicLightsText;
00089	var localized string DynamicLightsHelp;
00090	
00091	// Particle complexity
00092	//var UWindowHSliderControl ParticleSlider;
00093	//var localized string ParticleText;
00094	//var localized string ParticleHelp;
00095	
00096	// LOD percentage
00097	var UWindowHSliderControl LodPercentSlider;
00098	var localized string LodPercentText;
00099	var localized string LodPercentHelp;
00100	
00101	// FogDistance
00102	//var UWindowHSliderControl FogSlider;
00103	//var localized string FogText;
00104	//var localized string FogHelp;
00105	
00106	// Ragnar Shadows
00107	var localized string ShadowTextNone;
00108	var localized string ShadowTextBlob;
00109	var localized string ShadowTextProjected;
00110	var UWindowComboControl RagnarShadowCombo;
00111	var localized string RagnarShadowText;
00112	var localized string RagnarShadowHelp;
00113	
00114	// Actor Shadows
00115	var UWindowComboControl ActorShadowCombo;
00116	var localized string ActorShadowText;
00117	var localized string ActorShadowHelp;
00118	
00119	
00120	function Created()
00121	{
00122		local bool bLowSoundQuality;
00123		local int MusicVolume, SoundVolume;
00124		local int ControlWidth, ControlLeft, ControlRight;
00125		local int CenterWidth, CenterPos;
00126		local int i, MinRate, temp;
00127		local string NextLook, NextDesc;
00128		local string VideoDriverClassName, ClassLeft, ClassRight, VideoDriverDesc;
00129	
00130		Super.Created();
00131	
00132		ControlWidth = WinWidth/2.5;
00133		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00134		ControlRight = WinWidth/2 + ControlLeft;
00135	
00136		CenterWidth = (WinWidth/4)*3;
00137		CenterPos = (WinWidth - CenterWidth)/2;
00138		
00139		VideoDriverClassName = GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.GameRenderDevice Class");
00140		i = InStr(VideoDriverClassName, "'");
00141		// Get class name from class'...'
00142		if(i != -1)
00143		{
00144			VideoDriverClassName = Mid(VideoDriverClassName, i+1);
00145			i = InStr(VideoDriverClassName, "'");
00146			VideoDriverClassName = Left(VideoDriverClassName, i);
00147			ClassLeft = Left(VideoDriverClassName, InStr(VideoDriverClassName, "."));
00148			ClassRight = Mid(VideoDriverClassName, InStr(VideoDriverClassName, ".") + 1);
00149			VideoDriverDesc = Localize(ClassRight, "ClassCaption", ClassLeft);
00150		}
00151		else
00152			VideoDriverDesc = "VideoDriverClassName";
00153	
00154		// Driver
00155		DriverLabel = UWindowLabelControl(CreateControl(class'UWindowLabelControl', ControlLeft, ControlOffset, ControlWidth, 1));
00156		DriverLabel.SetText(DriverText);
00157		DriverLabel.SetHelpText(DriverHelp);
00158		DriverLabel.SetFont(F_Normal);
00159	
00160		DriverDesc = UWindowLabelControl(CreateControl(class'UWindowLabelControl', ControlRight, ControlOffset, ControlWidth, 1));
00161		DriverDesc.SetText(VideoDriverDesc);
00162		DriverDesc.SetHelpText(DriverHelp);
00163		DriverDesc.SetFont(F_Normal);
00164		ControlOffset += 17;
00165	
00166		DriverButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', ControlRight, ControlOffset, 48, 16));
00167		DriverButton.SetText(DriverButtonText);
00168		DriverButton.SetFont(F_Normal);
00169		DriverButton.SetHelpText(DriverButtonHelp);
00170		ControlOffset += 25;
00171	
00172		// Resolution
00173		ResolutionCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00174		ResolutionCombo.SetText(ResolutionText);
00175		ResolutionCombo.SetHelpText(ResolutionHelp);
00176		ResolutionCombo.SetFont(F_Normal);
00177		ResolutionCombo.SetEditable(False);
00178		ControlOffset += 25;
00179	
00180		// Color depth
00181		ColorDepthCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00182		ColorDepthCombo.SetText(ColorDepthText);
00183		ColorDepthCombo.SetHelpText(ColorDepthHelp);
00184		ColorDepthCombo.SetFont(F_Normal);
00185		ColorDepthCombo.SetEditable(False);
00186		ControlOffset += 25;
00187	
00188		// Texture Detail
00189		TextureDetailCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00190		TextureDetailCombo.SetText(TextureDetailText);
00191		TextureDetailCombo.SetHelpText(TextureDetailHelp);
00192		TextureDetailCombo.SetFont(F_Normal);
00193		TextureDetailCombo.SetEditable(False);
00194		ControlOffset += 25;
00195	
00196		// The display names are localized.  These strings match the enums in UnCamMgr.cpp.
00197		TextureDetailCombo.AddItem(Details[0], "High");
00198		TextureDetailCombo.AddItem(Details[1], "Medium");
00199		TextureDetailCombo.AddItem(Details[2], "Low");
00200	
00201		// Skin Detail
00202		SkinDetailCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00203		SkinDetailCombo.SetText(SkinDetailText);
00204		SkinDetailCombo.SetHelpText(SkinDetailHelp);
00205		SkinDetailCombo.SetFont(F_Normal);
00206		SkinDetailCombo.SetEditable(False);
00207		SkinDetailCombo.AddItem(Details[0], "High");
00208		SkinDetailCombo.AddItem(Details[1], "Medium");
00209		SkinDetailCombo.AddItem(Details[2], "Low");
00210		ControlOffset += 25;
00211	
00212		// Brightness
00213		BrightnessSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00214		BrightnessSlider.bNoSlidingNotify = True;
00215		BrightnessSlider.SetRange(2, 10, 1);
00216		BrightnessSlider.SetText(BrightnessText);
00217		BrightnessSlider.SetHelpText(BrightnessHelp);
00218		BrightnessSlider.SetFont(F_Normal);
00219		ControlOffset += 25;
00220	
00221		// MenuAlpha
00222	//	MenuAlphaSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00223	//	MenuAlphaSlider.bNoSlidingNotify = True;
00224	//	MenuAlphaSlider.SetRange(25, 100, 5);
00225	//	MenuAlphaSlider.SetText(MenuAlphaText);
00226	//	MenuAlphaSlider.SetHelpText(MenuAlphaHelp);
00227	//	MenuAlphaSlider.SetFont(F_Normal);
00228	//	ControlOffset += 25;
00229	
00230		// Particle Slider
00231	//	ParticleSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00232	//	ParticleSlider.bNoSlidingNotify = True;
00233	//	ParticleSlider.SetRange(0, 100, 10);
00234	//	ParticleSlider.SetText(ParticleText);
00235	//	ParticleSlider.SetHelpText(ParticleHelp);
00236	//	ParticleSlider.SetFont(F_Normal);
00237	//	ControlOffset += 25;
00238	
00239		// LOD Percent
00240		LodPercentSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00241		LodPercentSlider.bNoSlidingNotify = True;
00242		LodPercentSlider.SetRange(0, 100, 10);
00243		LodPercentSlider.SetText(LodPercentText$" ["$int(LodPercentSlider.GetValue())$"%]:");
00244		LodPercentSlider.SetHelpText(LodPercentHelp);
00245		LodPercentSlider.SetFont(F_Normal);
00246		ControlOffset += 25;
00247	
00248	/*	// Fog slider
00249		FogSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00250		FogSlider.bNoSlidingNotify = True;
00251		FogSlider.SetRange(0, 1000, 10);
00252		temp = int(float(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager FogDistPercentage"))*100);
00253		FogSlider.SetValue(temp);
00254		FogSlider.SetText(FogText$" ["$temp$"%]:");
00255		FogSlider.SetHelpText(FogHelp);
00256		FogSlider.SetFont(F_Normal);
00257		ControlOffset += 25;*/
00258	
00259		// Player Shadows
00260		RagnarShadowCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00261		RagnarShadowCombo.SetText(RagnarShadowText);
00262		RagnarShadowCombo.SetHelpText(RagnarShadowHelp);
00263		RagnarShadowCombo.SetFont(F_Normal);
00264		RagnarShadowCombo.SetEditable(False);
00265		RagnarShadowCombo.AddItem(ShadowTextNone, "0");
00266		RagnarShadowCombo.AddItem(ShadowTextBlob, "1");
00267		RagnarShadowCombo.AddItem(ShadowTextProjected, "2");
00268		ControlOffset += 25;
00269	
00270		// Actor Shadows
00271		ActorShadowCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00272		ActorShadowCombo.SetText(ActorShadowText);
00273		ActorShadowCombo.SetHelpText(ActorShadowHelp);
00274		ActorShadowCombo.SetFont(F_Normal);
00275		ActorShadowCombo.SetEditable(False);
00276		ActorShadowCombo.AddItem(ShadowTextNone, "0");
00277		ActorShadowCombo.AddItem(ShadowTextBlob, "1");
00278		ActorShadowCombo.AddItem(ShadowTextProjected, "2");
00279		ControlOffset += 25;
00280	
00281	/*	GuiSkinCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00282		GuiSkinCombo.SetText(GuiSkinText);
00283		GuiSkinCombo.SetHelpText(GuiSkinHelp);
00284		GuiSkinCombo.SetFont(F_Normal);
00285		GuiSkinCombo.SetEditable(False);
00286		ControlOffset += 25;
00287		i=0;
00288		GetPlayerOwner().GetNextIntDesc("UWindowLookAndFeel", 0, NextLook, NextDesc);
00289		while( (NextLook != "") && (i < 32) )
00290		{
00291			GuiSkinCombo.AddItem(NextDesc, NextLook);
00292			i++;
00293			GetPlayerOwner().GetNextIntDesc("UWindowLookAndFeel", i, NextLook, NextDesc);
00294		}
00295		GuiSkinCombo.Sort();*/
00296	
00297		// Min Desired Framerate
00298		MinFramerateEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', CenterPos, ControlOffset, CenterWidth, 1));
00299		MinFramerateEdit.SetText(MinFramerateText);
00300		MinFramerateEdit.SetHelpText(MinFramerateHelp);
00301		MinFramerateEdit.SetFont(F_Normal);
00302		MinFramerateEdit.SetNumericOnly(True);
00303		MinFramerateEdit.SetMaxLength(3);
00304		MinFramerateEdit.Align = TA_Left;
00305		MinRate = int(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager MinDesiredFrameRate"));
00306		MinFramerateEdit.SetValue(string(MinRate));
00307		ControlOffset += 25;
00308	
00309		// Show Decals
00310		ShowDecalsCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1));
00311		ShowDecalsCheck.bChecked = bool(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager Decals"));
00312		ShowDecalsCheck.SetText(ShowDecalsText);
00313		ShowDecalsCheck.SetHelpText(ShowDecalsHelp);
00314		ShowDecalsCheck.SetFont(F_Normal);
00315		ShowDecalsCheck.Align = TA_Left;
00316		ControlOffset += 25;
00317	
00318		// Fractal Animation
00319		FractalCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1));
00320		FractalCheck.bChecked = bool(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager NoFractalAnim"));
00321		FractalCheck.bChecked = !FractalCheck.bChecked;
00322		FractalCheck.SetText(FractalText);
00323		FractalCheck.SetHelpText(FractalHelp);
00324		FractalCheck.SetFont(F_Normal);
00325		FractalCheck.Align = TA_Left;
00326		ControlOffset += 25;
00327	
00328		// Fractal Animation
00329		LightingCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1));
00330		LightingCheck.bChecked = bool(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager NoLighting"));
00331		LightingCheck.bChecked = !LightingCheck.bChecked;
00332		LightingCheck.SetText(LightingText);
00333		LightingCheck.SetHelpText(LightingHelp);
00334		LightingCheck.SetFont(F_Normal);
00335		LightingCheck.Align = TA_Left;
00336		ControlOffset += 25;
00337	
00338		// Dynamic Lights
00339		DynamicLightsCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1));
00340		DynamicLightsCheck.bChecked = bool(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager NoDynamicLights"));
00341		DynamicLightsCheck.bChecked = !DynamicLightsCheck.bChecked;
00342		DynamicLightsCheck.SetText(DynamicLightsText);
00343		DynamicLightsCheck.SetHelpText(DynamicLightsHelp);
00344		DynamicLightsCheck.SetFont(F_Normal);
00345		DynamicLightsCheck.Align = TA_Left;
00346		ControlOffset += 25;
00347	
00348		LoadAvailableSettings();
00349	}
00350	
00351	function AfterCreate()
00352	{
00353		Super.AfterCreate();
00354	
00355		DesiredWidth = 220;
00356		DesiredHeight = ControlOffset;
00357	}
00358	
00359	function LoadAvailableSettings()
00360	{
00361		local float Brightness;
00362		local int P;
00363		local string CurrentDepth;
00364		local string ParseString;
00365		local float temp;
00366		local string ResString;
00367		local float ResX, ResY;
00368		local int ResP;
00369	
00370		bInitialized = False;
00371	
00372		// Load available video drivers and current video driver here.
00373	
00374		ResolutionCombo.Clear();
00375		ParseString = GetPlayerOwner().ConsoleCommand("GetRes");
00376		P = InStr(ParseString, " ");
00377		while (P != -1) 
00378		{
00379	/*		ResString = Left(ParseString, P);
00380			ResP=InStr(ResString,"x");
00381			if (ResP != -1)
00382			{	// Validate resolution
00383				ResX = float(Left(ResString, ResP));
00384				ResY = float(Mid(ResString, ResP+1));
00385				if (ResY/ResX == 0.75 && ResX>=512)
00386				{
00387					ResolutionCombo.AddItem(Left(ParseString, P));
00388				}
00389				else
00390				{
00391					log("disallowing non 4:3 res:"@ResX@ResY@ResY/ResX);
00392				}
00393			}
00394			else
00395			{*/
00396				ResolutionCombo.AddItem(Left(ParseString, P));
00397	/*		}*/
00398	
00399			ParseString = Mid(ParseString, P+1);
00400			P = InStr(ParseString, " ");
00401		}
00402		ResolutionCombo.AddItem(ParseString);
00403		ResolutionCombo.SetValue(GetPlayerOwner().ConsoleCommand("GetCurrentRes"));
00404	
00405		ColorDepthCombo.Clear();
00406		ParseString = GetPlayerOwner().ConsoleCommand("GetColorDepths");
00407		P = InStr(ParseString, " ");
00408		while (P != -1) 
00409		{
00410			ColorDepthCombo.AddItem(Left(ParseString, P)@BitsText, Left(ParseString, P));
00411			ParseString = Mid(ParseString, P+1);
00412			P = InStr(ParseString, " ");
00413		}
00414		ColorDepthCombo.AddItem(ParseString@BitsText, ParseString);
00415		CurrentDepth = GetPlayerOwner().ConsoleCommand("GetCurrentColorDepth");
00416		ColorDepthCombo.SetValue(CurrentDepth@BitsText, CurrentDepth);
00417	
00418	//	GuiSkinCombo.SetSelectedIndex(Max(GuiSkinCombo.FindItemIndex2(Root.LookAndFeelClass, True), 0));
00419		OldTextureDetail = Max(0, TextureDetailCombo.FindItemIndex2(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager TextureDetail")));
00420		TextureDetailCombo.SetSelectedIndex(OldTextureDetail);
00421		OldSkinDetail = Max(0, SkinDetailCombo.FindItemIndex2(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager SkinDetail")));
00422		SkinDetailCombo.SetSelectedIndex(OldSkinDetail);
00423		Brightness = int(float(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager Brightness")) * 10);
00424		BrightnessSlider.SetValue(Brightness);
00425	//	MenuAlphaSlider.SetValue(Root.Console.MenuTranslucency*100);
00426	//	ParticleSlider.SetValue(class'GameInfo'.default.ParticlePercentage*100);
00427		P = int(float(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager LodPercentage"))*100);
00428		LodPercentSlider.SetValue(P);
00429		LodPercentSlider.SetText(LodPercentText$" ["$P$"%]:");
00430	//	P = int(float(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager FogDistPercentage"))*100);
00431	//	FogSlider.SetValue(P);
00432	//	FogSlider.SetText(FogText$" ["$P$"%]:");
00433	
00434		P = int(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager PlayerShadows"));
00435		switch(P)
00436		{
00437			case 1:
00438				RagnarShadowCombo.SetValue(ShadowTextBlob, "1");
00439				break;
00440			case 2:
00441				RagnarShadowCombo.SetValue(ShadowTextProjected, "2");
00442				break;
00443			case 0:
00444			default:
00445				RagnarShadowCombo.SetValue(ShadowTextNone, "0");
00446				break;
00447		}
00448	
00449		P = int(GetPlayerOwner().ConsoleCommand("get ini:Engine.Engine.ViewportManager ActorShadows"));
00450		switch(P)
00451		{
00452			case 1:
00453				ActorShadowCombo.SetValue(ShadowTextBlob, "1");
00454				break;
00455			case 2:
00456				ActorShadowCombo.SetValue(ShadowTextProjected, "2");
00457				break;
00458			case 0:
00459			default:
00460				ActorShadowCombo.SetValue(ShadowTextNone, "0");
00461				break;
00462		}
00463	
00464		bInitialized = True;
00465	}
00466	
00467	function ResolutionChanged(float W, float H)
00468	{
00469		Super.ResolutionChanged(H, H);
00470		if(GetPlayerOwner().ConsoleCommand("GetCurrentRes") != ResolutionCombo.GetValue())
00471			LoadAvailableSettings();
00472	}
00473	
00474	function BeforePaint(Canvas C, float X, float Y)
00475	{
00476		local int ControlWidth, ControlLeft, ControlRight;
00477		local int CenterWidth, CenterPos;
00478	
00479		Super.BeforePaint(C, X, Y);
00480	
00481		ControlWidth = WinWidth/2.5;
00482		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00483		ControlRight = WinWidth/2 + ControlLeft;
00484	
00485		CenterWidth = (WinWidth/4)*3;
00486		CenterPos = (WinWidth - CenterWidth)/2;
00487	
00488		DriverLabel.SetSize(CenterWidth-100, 1);
00489		DriverLabel.WinLeft = CenterPos;
00490	
00491		DriverDesc.SetSize(200, 1);
00492		DriverDesc.WinLeft = CenterPos + CenterWidth - 100;
00493	
00494		DriverButton.AutoWidth(C);
00495		DriverButton.WinLeft = CenterPos + CenterWidth - 100;
00496	
00497		ResolutionCombo.SetSize(CenterWidth, 1);
00498		ResolutionCombo.WinLeft = CenterPos;
00499		ResolutionCombo.EditBoxWidth = 100;
00500	
00501		ColorDepthCombo.SetSize(CenterWidth, 1);
00502		ColorDepthCombo.WinLeft = CenterPos;
00503		ColorDepthCombo.EditBoxWidth = 100;
00504	
00505		TextureDetailCombo.SetSize(CenterWidth, 1);
00506		TextureDetailCombo.WinLeft = CenterPos;
00507		TextureDetailCombo.EditBoxWidth = 100;
00508	
00509		SkinDetailCombo.SetSize(CenterWidth, 1);
00510		SkinDetailCombo.WinLeft = CenterPos;
00511		SkinDetailCombo.EditBoxWidth = 100;
00512	
00513		BrightnessSlider.SetSize(CenterWidth, 1);
00514		BrightnessSlider.SliderWidth = 100;
00515		BrightnessSlider.WinLeft = CenterPos;
00516	
00517	//	MenuAlphaSlider.SetSize(CenterWidth, 1);
00518	//	MenuAlphaSlider.SliderWidth = 100;
00519	//	MenuAlphaSlider.WinLeft = CenterPos;
00520	
00521	//	ParticleSlider.SetSize(CenterWidth, 1);
00522	//	ParticleSlider.SliderWidth = 100;
00523	//	ParticleSlider.WinLeft = CenterPos;
00524	
00525		LodPercentSlider.SetSize(CenterWidth, 1);
00526		LodPercentSlider.SliderWidth = 100;
00527		LodPercentSlider.WinLeft = CenterPos;
00528	
00529	//	FogSlider.SetSize(CenterWidth, 1);
00530	//	FogSlider.SliderWidth = 100;
00531	//	FogSlider.WinLeft = CenterPos;
00532	
00533		RagnarShadowCombo.SetSize(CenterWidth, 1);
00534		RagnarShadowCombo.WinLeft = CenterPos;
00535		RagnarShadowCombo.EditBoxWidth = 100;
00536	
00537		ActorShadowCombo.SetSize(CenterWidth, 1);
00538		ActorShadowCombo.WinLeft = CenterPos;
00539		ActorShadowCombo.EditBoxWidth = 100;
00540	
00541	//	GuiSkinCombo.SetSize(CenterWidth, 1);
00542	//	GuiSkinCombo.WinLeft = CenterPos;
00543	//	GuiSkinCombo.EditBoxWidth = 100;
00544	
00545		ShowDecalsCheck.SetSize(CenterWidth-100+16, 1);
00546		ShowDecalsCheck.WinLeft = CenterPos;
00547	
00548		FractalCheck.SetSize(CenterWidth-100+16, 1);
00549		FractalCheck.WinLeft = CenterPos;
00550	
00551		LightingCheck.SetSize(CenterWidth-100+16, 1);
00552		LightingCheck.WinLeft = CenterPos;
00553	
00554		DynamicLightsCheck.SetSize(CenterWidth-100+16, 1);
00555		DynamicLightsCheck.WinLeft = CenterPos;
00556	
00557		MinFramerateEdit.SetSize(CenterWidth-100+30, 1);
00558		MinFramerateEdit.WinLeft = CenterPos;
00559		MinFramerateEdit.EditBoxWidth = 30;
00560	}
00561	
00562	function Notify(UWindowDialogControl C, byte E)
00563	{
00564		Super.Notify(C, E);
00565	
00566		switch(E)
00567		{
00568		case DE_Click:
00569			switch(C)
00570			{
00571			case DriverButton:
00572				DriverChange();
00573				break;
00574			}
00575			break;
00576		case DE_Change:
00577			switch(C)
00578			{
00579			case ResolutionCombo:
00580			case ColorDepthCombo:
00581				SettingsChanged();
00582				break;
00583			case TextureDetailCombo:
00584				TextureDetailChanged();
00585				break;
00586			case SkinDetailCombo:
00587				SkinDetailChanged();
00588				break;
00589			case BrightnessSlider:
00590				BrightnessChanged();
00591				break;
00592	//		case MenuAlphaSlider:
00593	//			MenuAlphaChanged();
00594	//			break;
00595	//		case ParticleSlider:
00596	//			ParticlesChanged();
00597	//			break;
00598			case LodPercentSlider:
00599				LodPercentChanged();
00600				break;
00601	//		case FogSlider:
00602	//			FogChanged();
00603	//			break;
00604			case RagnarShadowCombo:
00605				RagnarShadowChanged();
00606				break;
00607			case ActorShadowCombo:
00608				ActorShadowChanged();
00609				break;
00610			case ShowDecalsCheck:
00611				DecalsChanged();
00612				break;
00613			case FractalCheck:
00614				FractalChanged();
00615				break;
00616			case LightingCheck:
00617				LightingChanged();
00618				break;
00619			case DynamicLightsCheck:
00620				DynamicChanged();
00621				break;
00622			case MinFramerateEdit:
00623				MinFramerateChanged();
00624				break;
00625			}
00626			break;
00627		}
00628	}
00629	
00630	/*
00631	 * Message Crackers
00632	 */
00633	
00634	
00635	function DriverChange()
00636	{
00637		ConfirmDriver = MessageBox(ConfirmDriverTitle, ConfirmDriverText, MB_YesNo, MR_No);
00638	}
00639	
00640	function SettingsChanged()
00641	{
00642		local string NewSettings;
00643	
00644		if(bInitialized)
00645		{
00646			OldSettings = GetPlayerOwner().ConsoleCommand("GetCurrentRes")$"x"$GetPlayerOwner().ConsoleCommand("GetCurrentColorDepth");
00647			NewSettings = ResolutionCombo.GetValue()$"x"$ColorDepthCombo.GetValue2();
00648	
00649			if(NewSettings != OldSettings)
00650			{
00651				GetPlayerOwner().ConsoleCommand("SetRes "$NewSettings);
00652				LoadAvailableSettings();
00653				ConfirmSettings = MessageBox(ConfirmSettingsTitle, ConfirmSettingsText, MB_YesNo, MR_No, MR_None, 10);
00654			}
00655		}
00656	}
00657	
00658	function MessageBoxDone(UWindowMessageBox W, MessageBoxResult Result)
00659	{
00660		if(W == ConfirmSettings)
00661		{
00662			ConfirmSettings = None;
00663			if(Result != MR_Yes)
00664			{
00665				GetPlayerOwner().ConsoleCommand("SetRes "$OldSettings);
00666				LoadAvailableSettings();			
00667				MessageBox(ConfirmSettingsCancelTitle, ConfirmSettingsCancelText, MB_OK, MR_OK, MR_OK);
00668			}
00669		}
00670		else
00671		if(W == ConfirmDriver)
00672		{
00673			ConfirmDriver = None;
00674			if(Result == MR_Yes)
00675			{
00676				GetParent(class'UWindowFramedWindow').Close();
00677				Root.Console.CloseUWindow();
00678				GetPlayerOwner().ConsoleCommand("RELAUNCH -changevideo");
00679			}
00680		}
00681		if(W == ConfirmSkinTextureDetail)
00682		{
00683			if(Result == MR_Yes)
00684				OldSkinDetail = SkinDetailCombo.GetSelectedIndex();
00685			else
00686				SkinDetailCombo.SetSelectedIndex(OldSkinDetail);
00687		}
00688		if(W == ConfirmWorldTextureDetail)
00689		{
00690			if(Result == MR_Yes)
00691				OldTextureDetail = TextureDetailCombo.GetSelectedIndex();
00692			else
00693				TextureDetailCombo.SetSelectedIndex(OldTextureDetail);
00694		}
00695	}
00696	
00697	function TextureDetailChanged()
00698	{
00699		if(bInitialized)
00700		{
00701			TextureDetailSet();
00702			if( TextureDetailCombo.GetSelectedIndex() < OldTextureDetail )
00703				ConfirmWorldTextureDetail = MessageBox(ConfirmTextureDetailTitle, ConfirmTextureDetailText, MB_YesNo, MR_No, MR_None);	
00704			else
00705				OldTextureDetail = TextureDetailCombo.GetSelectedIndex();
00706		}
00707	}
00708	
00709	function TextureDetailSet()
00710	{
00711		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager TextureDetail "$TextureDetailCombo.GetValue2());
00712	}
00713	
00714	function SkinDetailChanged()
00715	{
00716		local int D;
00717		if(bInitialized)
00718		{
00719			SkinDetailSet();
00720			if( SkinDetailCombo.GetSelectedIndex() < OldSkinDetail )
00721				ConfirmSkinTextureDetail = MessageBox(ConfirmTextureDetailTitle, ConfirmTextureDetailText, MB_YesNo, MR_No, MR_None);	
00722			else
00723				OldSkinDetail = SkinDetailCombo.GetSelectedIndex();
00724		}
00725	}
00726	
00727	function SkinDetailSet()
00728	{
00729		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager SkinDetail "$SkinDetailCombo.GetValue2());
00730	}
00731	
00732	function BrightnessChanged()
00733	{
00734		if(bInitialized)
00735		{
00736			GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager Brightness "$(BrightnessSlider.Value / 10));
00737			GetPlayerOwner().ConsoleCommand("FLUSH");
00738		}
00739	}
00740	
00741	//function MenuAlphaChanged()
00742	//{
00743	//	Root.Console.MenuTranslucency = MenuAlphaSlider.Value*0.01;
00744	//}
00745	
00746	function DecalsChanged()
00747	{
00748		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager Decals "$ShowDecalsCheck.bChecked);
00749	}
00750	
00751	function FractalChanged()
00752	{
00753		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager NoFractalAnim "$!FractalCheck.bChecked);
00754		GetPlayerOwner().ConsoleCommand("FLUSH");
00755	}
00756	
00757	function LightingChanged()
00758	{
00759		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager NoLighting "$!LightingCheck.bChecked);
00760	}
00761	
00762	function DynamicChanged()
00763	{
00764		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager NoDynamicLights "$!DynamicLightsCheck.bChecked);
00765	}
00766	
00767	function MinFramerateChanged()
00768	{
00769		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager MinDesiredFrameRate "$MinFramerateEdit.EditBox.Value);
00770	}
00771	
00772	/*function ParticlesChanged()
00773	{
00774		if (GetLevel().Game != None)
00775		{
00776			GetLevel().Game.ParticlePercentage = ParticleSlider.Value*0.01;
00777		}
00778	
00779		class'GameInfo'.default.ParticlePercentage = ParticleSlider.Value*0.01;
00780	}*/
00781	
00782	function LodPercentChanged()
00783	{
00784		local int value;
00785		local float f;
00786		value = LodPercentSlider.GetValue();
00787		LodPercentSlider.SetText(LodPercentText$" ["$value$"%]:");
00788		f = float(value)*0.01;
00789		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager LodPercentage"@f);
00790	}
00791	
00792	/*function FogChanged()
00793	{
00794		local int value;
00795		local float f;
00796		value = FogSlider.GetValue();
00797		FogSlider.SetText(FogText$" ["$value$"%]:");
00798		f = float(value)*0.01;
00799		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager FogDistPercentage"@f);
00800	}*/
00801	
00802	function RagnarShadowChanged()
00803	{
00804		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager PlayerShadows"@RagnarShadowCombo.GetValue2());
00805	}
00806	
00807	function ActorShadowChanged()
00808	{
00809		GetPlayerOwner().ConsoleCommand("set ini:Engine.Engine.ViewportManager ActorShadows"@ActorShadowCombo.GetValue2());
00810	}
00811	
00812	function SaveConfigs()
00813	{
00814		GetPlayerOwner().SaveConfig();
00815		Root.Console.SaveConfig();
00816		Super.SaveConfigs();
00817	//	if(GuiSkinCombo.GetValue2() != Root.LookAndFeelClass)
00818	//		Root.ChangeLookAndFeel(GuiSkinCombo.GetValue2());
00819	}
00820	
00821	defaultproperties
00822	{
00823	     DriverText="Video Driver"
00824	     DriverHelp="This is the current video driver.  Use the Change button to change video drivers."
00825	     DriverButtonText="Change"
00826	     DriverButtonHelp="Press this button to change your video driver."
00827	     ResolutionText="Resolution"
00828	     ResolutionHelp="Select a new screen resolution."
00829	     ColorDepthText="Color Depth"
00830	     ColorDepthHelp="Select a new color depth."
00831	     BitsText="bit"
00832	     TextureDetailText="World Texture Detail"
00833	     TextureDetailHelp="Change the texture detail of world geometry.  Use a lower texture detail to improve game performance."
00834	     Details(0)="High"
00835	     Details(1)="Medium"
00836	     Details(2)="Low"
00837	     SkinDetailText="Skin Detail"
00838	     SkinDetailHelp="Change the detail of player skins.  Use a lower skin detail to improve game performance."
00839	     BrightnessText="Brightness"
00840	     BrightnessHelp="Adjust display brightness."
00841	     ControlOffset=20.000000
00842	     ConfirmSettingsTitle="Confirm Video Settings Change"
00843	     ConfirmSettingsText="Are you sure you wish to keep these new video settings?"
00844	     ConfirmSettingsCancelTitle="Video Settings Change"
00845	     ConfirmSettingsCancelText="Your previous video settings have been restored."
00846	     ConfirmTextureDetailTitle="Confirm Texture Detail"
00847	     ConfirmTextureDetailText="Increasing texture detail above its default value may degrade performance on some machines.\n\nAre you sure you want to make this change?"
00848	     ConfirmDriverTitle="Change Video Driver"
00849	     ConfirmDriverText="This option will restart Rune now, and enable you to change your video driver.  Do you want to do this?"
00850	     ShowDecalsText="Show Decals"
00851	     ShowDecalsHelp="If checked, impact and gore decals will be used in game."
00852	     FractalText="Fractal Animation"
00853	     FractalHelp="If checked, fractal textures will animate."
00854	     LightingText="World lighting"
00855	     LightingHelp="If checked, world will be lit."
00856	     MinFramerateText="Min Desired Framerate"
00857	     MinFramerateHelp="If your framerate falls below this value, Rune will reduce special effects to increase your framerate."
00858	     DynamicLightsText="Use Dynamic Lighting"
00859	     DynamicLightsHelp="If checked, dynamic lighting will be used in game."
00860	     LodPercentText="Mesh Complexity"
00861	     LodPercentHelp="Percentage of maximum mesh complexity"
00862	     ShadowTextNone="None"
00863	     ShadowTextBlob="Blob"
00864	     ShadowTextProjected="Projected"
00865	     RagnarShadowText="Player Shadow"
00866	     RagnarShadowHelp="Type of shadow on players"
00867	     ActorShadowText="Actor Shadows"
00868	     ActorShadowHelp="Type of shadow on non-players"
00869	}

End Source Code