XIDInterf
Class XIIIMenuVideoClientWindow

source: C:\XIII\XIDInterf\Classes\XIIIMenuVideoClientWindow.uc
Core.Object
   |
   +--GUI.GUI
      |
      +--GUI.GUIComponent
         |
         +--GUI.GUIMultiComponent
            |
            +--GUI.GUIPage
               |
               +--XIDInterf.XIIIWindow
                  |
                  +--XIDInterf.XIIIMenuVideoClientWindow
Direct Known Subclasses:None

class XIIIMenuVideoClientWindow
extends XIDInterf.XIIIWindow

//=========================================================================== // Video Options //===========================================================================
Variables
 DecalX, DecalY
           better be moved to LevelInfo
 XIIIButton DefaultButton
           , DepthCombo;
 ContrastText, DefaultText
           , DepthCombo;
 ResText, DepthText
           , DepthCombo;
 OldGamma, OldContrast
           better be moved to LevelInfo
 string OldSettings
           better be moved to LevelInfo
 XIIIComboControl ResCombo
           , DepthCombo;
 UserContrast, UserGamma
           better be moved to LevelInfo
 HCenterSlider, VCenterSlider
 bool bInitialized
           better be moved to LevelInfo
 oldDecalX, oldDecalY
           , DepthCombo;
 sBackground[4], sCenter
           , DepthCombo;
 tCenter, tHighlight
           , DepthCombo;


Function Summary
 void BrightnessChanged(GUIComponent Sender)
 void ConfirmSettings()
 void ContrastChanged(GUIComponent Sender)
 void Created()
 void GammaChanged(GUIComponent Sender)
 bool InternalOnKeyEvent(out byte, out byte, float delta)
 void Paint(Canvas C, float X, float Y)
 void ShowWindow()



Source Code


00001	//===========================================================================
00002	// Video Options
00003	//===========================================================================
00004	class XIIIMenuVideoClientWindow extends XIIIWindow
00005		config(user);
00006	
00007	// Brightness, Gamma, Contrast
00008	VAR XIIIHSliderControl BrightnessSlider, GammaSlider, ContrastSlider, HCenterSlider, VCenterSlider;
00009	VAR XIIIComboControl ResCombo;//, DepthCombo;
00010	VAR XIIIButton DefaultButton;
00011	var localized string TitleText, BrightnessText, GammaText, ContrastText, DefaultText;
00012	var localized string CenterText, HCenterText, VCenterText, ResText, DepthText;
00013	
00014	var texture tBackground[4], tCenter, tHighlight;
00015	var string sBackground[4], sCenter;
00016	
00017	var int  OnBright, OnGamma, OnContrast, OnRes, YOrg, LineSpace, oldDecalX, oldDecalY;
00018	var config int DecalX, DecalY;         // better be moved to LevelInfo
00019	var config float UserBrightness, UserContrast, UserGamma;
00020	var float  OldBright, OldGamma, OldContrast;
00021	var bool       bInitialized;
00022	var string     OldSettings;
00023	
00024	
00025	function Created()
00026	{
00027		LOCAL int i, MinRate, temp, CtrlIndex, nbItems;
00028		LOCAL string NextLook, NextDesc, NewVideoMode;
00029		LOCAL array<levelinfo.resinfo> videomodes;
00030	
00031		Super.Created();
00032	
00033		switch ( myRoot.CurrentPF )
00034		{
00035		case 0: // PC
00036			nbItems=5; // Brightness, Gamma, Contrast & Resolution + Default
00037			break;
00038		case 2: // XBox
00039			nbItems=4; //  Brightness, Gamma & Contrast + Default
00040			break;
00041		case 1: // PS2
00042		case 3: // GCube
00043			oldDecalX = DecalX;
00044			oldDecalY = DecalY;
00045	//		myRoot.GetLevel().DecalScreen(0, DecalX);
00046	//		myRoot.GetLevel().DecalScreen(1, DecalY);
00047			nbItems=2; // centrage X & Y
00048			break;
00049		}
00050	
00051		LineSpace=29+(370-(nbItems*29))/(nbItems+1);
00052		YOrg=27+LineSpace;
00053	
00054		tHighlight = texture(DynamicLoadObject("XIIIMenuStart.barreselectmenuoptadv", class'Texture'));
00055	
00056		tBackGround[0] = texture(DynamicLoadObject(sBackGround[0], class'Texture'));
00057		tBackGround[1] = texture(DynamicLoadObject(sBackGround[1], class'Texture'));
00058		tBackGround[2] = texture(DynamicLoadObject(sBackGround[2], class'Texture'));
00059		tBackGround[3] = texture(DynamicLoadObject(sBackGround[3], class'Texture'));
00060		tCenter = texture(DynamicLoadObject(sCenter, class'Texture'));
00061	
00062		if ( myRoot.CurrentPF==0 || myRoot.CurrentPF==2 ) // PC ou XBox
00063		{
00064			 // Brightness
00065			BrightnessSlider = XIIIHSliderControl(CreateControl(class'XIIIHSliderControl', 308, YOrg*fScaleTo, 300, 29*fScaleTo));
00066			BrightnessSlider.SetRange(0, 10, 1, 150);
00067			OnBright = int( UserBrightness * 10 );
00068			BrightnessSlider.SetValue(OnBright);
00069			BrightnessSlider.Text = BrightnessText;
00070			BrightnessSlider.OnChange = BrightnessChanged;
00071			Controls[CtrlIndex] = BrightnessSlider;
00072			CtrlIndex++;
00073	
00074			// Gamma
00075			GammaSlider = XIIIHSliderControl(CreateControl(class'XIIIHSliderControl', 308, (YOrg+LineSpace)*fScaleTo, 300, 29*fScaleTo));
00076			GammaSlider.SetRange(5, 15, 1, 150);
00077			OnGamma = int( UserGamma * 10);
00078			GammaSlider.SetValue(OnGamma);
00079			GammaSlider.Text = GammaText;
00080			GammaSlider.OnChange = GammaChanged;
00081			Controls[CtrlIndex] = GammaSlider;
00082			CtrlIndex++;
00083	
00084			// Contrast
00085			ContrastSlider = XIIIHSliderControl(CreateControl(class'XIIIHSliderControl', 308, (YOrg+LineSpace*CtrlIndex)*fScaleTo, 300, 29*fScaleTo));
00086			ContrastSlider.SetRange(0, 10, 1, 150);
00087			OnContrast = int( UserContrast * 10);
00088			ContrastSlider.SetValue(OnContrast);
00089			ContrastSlider.Text = ContrastText;
00090			ContrastSlider.OnChange = ContrastChanged;
00091			Controls[CtrlIndex] = ContrastSlider;
00092			CtrlIndex++;
00093	
00094			if ( myRoot.CurrentPF==0 ) // PC Only
00095			{
00096				ResCombo = XIIIComboControl(CreateControl(class'XIIIComboControl', 308, (YOrg+LineSpace*3)*fScaleTo, 300, 29*fScaleTo));
00097	
00098				myRoot.Getlevel().GETAVAILABLERES(videomodes);
00099				for (i=0; i<videomodes.length; i++)
00100				{
00101					NewVideoMode=string(videomodes[i].PixelWidth)$"x"$string(videomodes[i].PixelHeight);
00102					ResCombo.AddItem(NewVideoMode);
00103					log ("===>"@NewVideoMode );
00104				}
00105				OnRes = ResCombo.FindItemIndex(myRoot.GetPlayerOwner().ConsoleCommand( "GETCURRENTRES" ));
00106				ResCombo.SetSelectedIndex(OnRes);
00107				ResCombo.Text = ResText;
00108				ResCombo.bArrows = true;
00109				Controls[CtrlIndex] = ResCombo;
00110				CtrlIndex++;
00111			}
00112	
00113			// Default button
00114			DefaultButton = XIIIbutton( CreateControl(class'XIIIbutton', 408, (YOrg+LineSpace*CtrlIndex)*fScaleTo, 100, 29) );
00115			DefaultButton.Text = DefaultText;
00116			DefaultButton.bUseBorder = true;
00117			Controls[CtrlIndex] = DefaultButton;
00118			CtrlIndex++;
00119		}
00120		else // PS2 && Cube
00121		{
00122			HCenterSlider = XIIIHSliderControl(CreateControl(class'XIIIHSliderControl', 308, (YOrg)*fScaleTo, 300, 29*fScaleTo));
00123			HCenterSlider.SetRange(-10, 10, 1, 150);
00124			HCenterSlider.Text = HCenterText;
00125			HCenterSlider.SetValue(DecalX);
00126			Controls[CtrlIndex] = HCenterSlider;
00127			CtrlIndex++;
00128	
00129			VCenterSlider = XIIIHSliderControl(CreateControl(class'XIIIHSliderControl', 308, (YOrg+LineSpace)*fScaleTo, 300, 29*fScaleTo));
00130			VCenterSlider.SetRange(-10, 10, 1, 150);
00131			VCenterSlider.Text = VCenterText;
00132			VCenterSlider.SetValue(DecalY);
00133			Controls[CtrlIndex] = VCenterSlider;
00134			CtrlIndex++;
00135		}
00136	}
00137	
00138	function ShowWindow()
00139	{
00140		OldBright = UserBrightness;
00141		OldGamma = UserGamma;
00142		OldContrast = UserContrast;
00143	
00144		BrightnessSlider.SetValue(OnBright);
00145		GammaSlider.SetValue(OnGamma);
00146		ContrastSlider.SetValue(OnContrast);
00147	
00148		if (myRoot.CurrentPF == 0)
00149		{
00150			OnRes = ResCombo.FindItemIndex(myRoot.GetPlayerOwner().ConsoleCommand( "GETCURRENTRES" ));
00151			ResCombo.SetSelectedIndex(OnRes);
00152		}
00153		Super.ShowWindow();
00154		bShowCCL = true;
00155		bShowACC = true;
00156	}
00157	
00158	
00159	function Paint(Canvas C, float X, float Y)
00160	{
00161		local float fScale, fHeight, W, H;
00162		
00163		Super.Paint(C, X, Y);
00164	
00165		CONST ImageW=350;
00166		CONST ImageH=370;
00167		
00168		fHeight = fScaleTo;//myRoot.ScreenHeight/480;
00169	    if (myRoot.CurrentPF > 0) fHeight = 0.95;
00170		fHeight= (fHeight*416) / 2;
00171		DrawStretchedTexture(C, (610-ImageW-2)*fRatioX, ( 425 - ImageH - 2 )*fScaleTo*fRatioY, (ImageW+4)*fRatioX, (ImageH+4)*fRatioY*fScaleTo, myRoot.tFondNoir);
00172	
00173		DrawStretchedTexture(C, (610-ImageW)*fRatioX, ( 425 - ImageH )*fScaleTo*fRatioY, ImageW*fRatioX, 370*fScaleTo*fRatioY, tBackGround[0]);
00174	
00175		OnMenu = FindComponentIndex(FocusedControl);
00176		C.Style = 5;
00177		C.DrawColor.A = 180;
00178		DrawStretchedTexture(C, (610-ImageW)*fRatioX, ((Yorg-5+OnMenu*LineSpace)*fScaleTo)*fRatioY, ImageW*fRatioX, 40*fRatioY, tHighlight);
00179		C.DrawColor.A = 255;	
00180	
00181		DrawStretchedTexture(C, (610-ImageW-130)*fRatioX, ( 448 - 192 )*fScaleTo*fRatioY, 192*fRatioX, 192*fScaleTo*fRatioY, tBackGround[2]);
00182		DrawStretchedTexture(C, (610-ImageW-130)*fRatioX, ( 448 - 192 - 192 )*fScaleTo*fRatioY, 192*fRatioX, 192*fScaleTo*fRatioY, tBackGround[1]);
00183		DrawStretchedTexture(C, (610-192-ImageW-130)*fRatioX, ( 448 - 192 )*fScaleTo*fRatioY, 192*fRatioX, 192*fScaleTo*fRatioY, tBackGround[3]);
00184	
00185		C.Style = 1;
00186	
00187		C.bUseBorder = true;
00188		DrawStretchedTexture(C, 150*fRatioX, 30*fRatioY, 170*fRatioX, 35*fRatioY, myRoot.FondMenu);
00189		C.TextSize(TitleText, W, H);
00190		C.DrawColor = BlackColor;
00191		C.SetPos((150 + (160-W)/2)*fRatioX, (47.5-H/2)*fRatioY);
00192		C.DrawText(TitleText, false);
00193		C.bUseBorder = false;
00194		C.DrawColor = WhiteColor;
00195	}
00196	
00197	
00198	function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
00199	{
00200		local int i;
00201	
00202		if ((State==1) || (State==2))// IST_Press // to avoid auto-repeat
00203		{
00204			if ( Key==0x0D || Key==0x01 )
00205			{
00206				if ( FocusedControl==DefaultButton)
00207				{
00208					BrightnessSlider.SetValue(5);
00209					GammaSlider.SetValue(10);
00210					ContrastSlider.SetValue(5);
00211					BrightnessChanged( BrightnessSlider );
00212					GammaChanged( GammaSlider );
00213					ContrastChanged( ContrastSlider );
00214					return true;
00215				}
00216			}
00217	
00218			if ( Key==0x0D/*IK_Enter*/ )
00219			{
00220				ConfirmSettings();
00221				if ( myRoot.CurrentPF == 0 )
00222					GetPlayerOwner().ConsoleCommand("SETRES"@ResCombo.GetValue());
00223	//			SaveConfigs();
00224				SaveConfig();
00225				myRoot.CloseMenu(false);
00226				Controller.FocusedControl.OnClick(Self);
00227				return true;
00228			}
00229			if ((Key==0x08/*IK_Backspace*/)|| (Key==0x1B))
00230			{
00231				GetPlayerOwner().ConsoleCommand("Brightness "$OldBright);
00232				GetPlayerOwner().ConsoleCommand("Gamma "$OldGamma);
00233				GetPlayerOwner().ConsoleCommand("Contrast "$OldContrast);
00234				if ( ( myRoot.CurrentPF == 1 ) || ( myRoot.CurrentPF == 3 ) )
00235				{
00236					myRoot.GetLevel().DecalScreen(0, oldDecalX-DecalX);
00237					myRoot.GetLevel().DecalScreen(1, oldDecalY-DecalY);
00238					DecalX = oldDecalX;
00239					DecalY = oldDecalY;
00240				}
00241				myRoot.CloseMenu(true);
00242	    		return true;
00243			}
00244			if (Key==0x26/*IK_Up*/)
00245			{
00246	  			PrevControl(FocusedControl);
00247	    		return true;
00248			}
00249			if (Key==0x28/*IK_Down*/)
00250			{
00251				NextControl(FocusedControl);
00252	    		return true;
00253			}
00254			if ((Key==0x25) || (Key==0x27))
00255			{
00256				if ( FocusedControl==BrightnessSlider )
00257				{
00258					BrightnessChanged( BrightnessSlider );
00259				}
00260				else if ( FocusedControl==GammaSlider )
00261				{
00262					GammaChanged( GammaSlider );
00263				}
00264				else if ( FocusedControl==ContrastSlider )
00265				{
00266					ContrastChanged( ContrastSlider );
00267				}
00268				else if ( FocusedControl == ResCombo )
00269				{
00270				   if ( Key==0x25 ) OnRes--;
00271				   if ( Key==0x27 ) OnRes++;
00272				   OnRes = Clamp( OnRes,0,ResCombo.Items.Length-1);
00273				   ResCombo.SetSelectedIndex(OnRes);
00274				}
00275				else if ( FocusedControl == HCenterSlider)
00276				{
00277					if (Key==0x25 && DecalX!=-10) { myRoot.GetLevel().DecalScreen(0, -1); DecalX--; }
00278					if (Key==0x27 && DecalX!=10) { myRoot.GetLevel().DecalScreen(0, 1); DecalX++; }
00279				}
00280				else if ( FocusedControl == VCenterSlider)
00281				{
00282					if (Key==0x25 && DecalY!=-10) { myRoot.GetLevel().DecalScreen(1, -1); DecalY--; }
00283					if (Key==0x27 && DecalY!=10) { myRoot.GetLevel().DecalScreen(1, 1); DecalY++; }
00284				}
00285				return true;
00286			}
00287		}
00288		return super.InternalOnKeyEvent(Key, state, delta);
00289	}
00290	
00291	
00292	function ConfirmSettings()
00293	{
00294		if ( myRoot.CurrentPF==0 || myRoot.CurrentPF==2 )
00295		{
00296			UserBrightness = BrightnessSlider.GetValue() * 0.1;
00297			UserGamma = GammaSlider.GetValue() * 0.1;
00298			UserContrast = ContrastSlider.GetValue() * 0.1;
00299			BrightnessChanged( BrightnessSlider );
00300			ContrastChanged( ContrastSlider );
00301			GammaChanged( GammaSlider );
00302		}
00303	}
00304	
00305	function BrightnessChanged( GUIComponent Sender )
00306	{
00307		LOCAL float tmp;
00308		tmp = BrightnessSlider.GetValue() * 0.1;
00309		GetPlayerOwner().ConsoleCommand("Brightness "$tmp );
00310	}
00311	
00312	function GammaChanged( GUIComponent Sender )
00313	{
00314		LOCAL float tmp;
00315		tmp = GammaSlider.GetValue() * 0.1;
00316		GetPlayerOwner().ConsoleCommand("Gamma "$tmp);
00317	}
00318	
00319	function ContrastChanged( GUIComponent Sender )
00320	{
00321		LOCAL float tmp;
00322		tmp = ContrastSlider.GetValue() * 0.1;
00323		GetPlayerOwner().ConsoleCommand("Contrast "$tmp);
00324	}
00325	
00326	
00327	
00328	
00329	
00330	defaultproperties
00331	{
00332	     TitleText="Video Options"
00333	     BrightnessText="Brightness"
00334	     GammaText="Gamma"
00335	     ContrastText="Contrast"
00336	     DefaultText="Default"
00337	     CenterText="CENTER"
00338	     HCenterText="Horizontal"
00339	     VCenterText="Vertical"
00340	     ResText="Resolution"
00341	     DepthText="Depth"
00342	     sBackground(0)="XIIIMenuStart.VideoDecor1"
00343	     sBackground(1)="XIIIMenuStart.VideoJones01A"
00344	     sBackground(2)="XIIIMenuStart.VideoJones02A"
00345	     sBackground(3)="XIIIMenuStart.VideoJones03A"
00346	     sCenter="XIIIMenuStart.Boutonvideo2"
00347	     UserBrightness=0.500000
00348	     UserContrast=0.500000
00349	     UserGamma=1.000000
00350	}

End Source Code