XIDInterf
Class XIIIMenuBotChallengeSetupClient

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

class XIIIMenuBotChallengeSetupClient
extends XIDInterf.XIIIMenuMultiBase

//=========================================================================== // Bot challenge game setup / one player only / on PC //===========================================================================
Variables
 TimeLimit, DefaultConfig
 XIIICheckBoxControl FriendlyCheck
 Array GameNbPlayers
 int GameTypeIndex
 bool Initialized
 string Map
 GameCombo, MapCombo
 Array MapsUNRList
 int MaxScore
 MaxGames, NbMaps
 TeamBot[7], NivBot[7]
 BotsButton, OKButton
 BotsText, OKText
 MaxPlayerValue, PointsLimitFactor
 FragEdit, TimeEdit
 string URL
 sBackground[7], sHighlight
 tBackGround[7], tHighlight


Function Summary
 void AfterCreate()
 void Created()
 void FragChanged()
 void GameChanged()
 string GetPageParameters()
     
// if subclassed, this parent function must always be called first
 void GotoBotSetup()
 bool InternalOnKeyEvent(out byte, out byte, float delta)
 void IterateGames()
 void IterateMaps()
 void MapChanged()
 void Paint(Canvas C, float X, float Y)
 void SaveConfigs()
 void SetPageParameters(string PageParameters)
     
// if GetPageParameters() is subclassed, you'd better have this one too !
 void ShowWindow()
 void StartPressed()
 void TimeChanged()



Source Code


00001	//===========================================================================
00002	// Bot challenge game setup / one player only / on PC
00003	//===========================================================================
00004	class XIIIMenuBotChallengeSetupClient extends XIIIMenuMultiBase;
00005	
00006	
00007	var config string Map;
00008	VAR config int GameTypeIndex;
00009	
00010	var XIIIComboControl GameCombo, MapCombo;
00011	var XIIICheckboxControl FriendlyCheck;
00012	var XIIIValueControl FragEdit, TimeEdit;
00013	var XIIIButton BotsButton, OKButton;
00014	
00015	var int MaxGames, NbMaps;
00016	
00017	var localized string TitleText, GameText, MapText, FriendlyText, FragText, TimeText, BotsText, OKText;
00018	VAR Array<string> MapsUNRList;
00019	
00020	var texture tBackGround[7], tHighlight;
00021	var string sBackground[7], sHighlight;
00022	
00023	var bool Initialized;
00024	
00025	var int OnGame, OnMap, OnFrag, OnTime, MaxPlayerValue, PointsLimitFactor;
00026	
00027	var int WinningScore, MaxTime, NbBots, IdealPC, N, FriendlyFire, FragLimit, TimeLimit, DefaultConfig;
00028	var int MaxScore;
00029	
00030	var int TeamBot[7], NivBot[7];
00031	
00032	var Array<int> GameNbPlayers;
00033	
00034	var string URL;
00035	
00036	
00037	//===========================================================================
00038	event HandleParameters(string Param1, string Param2)
00039	{
00040		if ( Param1 != "" )
00041		{
00042			URL = Param1;
00043			log("Param1="$URL);
00044			Map = LocalParseOption ( URL, "Map", "");
00045			// GameTypeIndex = int( localParseOption ( URL, "GameType", "0"));
00046			IdealPC = int( localParseOption( URL,"IP", "0") );
00047			N = int( localParseOption( URL,"NP", "0") );
00048			FriendlyFire = int( localParseOption( URL,"FF", "0") );
00049			FragLimit = int( localParseOption( URL,"FR", "0") );
00050			TimeLimit = int( localParseOption( URL,"TI", "0") );
00051			DefaultConfig = int( localParseOption( URL,"DC", "0") );
00052			NbBots = int( localParseOption( URL,"NBots", "0") );
00053			TeamBot[0] = int( localParseOption( URL,"TB0", "1") );
00054			NivBot[0] = int( localParseOption( URL,"NB0", "1") );
00055			TeamBot[1] = int( localParseOption( URL,"TB1", "0") );
00056			NivBot[1] = int( localParseOption( URL,"NB1", "2") );
00057			TeamBot[2] = int( localParseOption( URL,"TB2", "1") );
00058			NivBot[2] = int( localParseOption( URL,"NB2", "2") );
00059			TeamBot[3] = int( localParseOption( URL,"TB3", "0") );
00060			NivBot[3] = int( localParseOption( URL,"NB3", "0") );
00061			TeamBot[4] = int( localParseOption( URL,"TB4", "1") );
00062			NivBot[4] = int( localParseOption( URL,"NB4", "0") );
00063			TeamBot[5] = int( localParseOption( URL,"TB5", "0") );
00064			NivBot[5] = int( localParseOption( URL,"NB5", "3") );
00065			TeamBot[6] = int( localParseOption( URL,"TB6", "1") );
00066			NivBot[6] = int( localParseOption( URL,"NB6", "3") );
00067	
00068			//MaxBots = IPC - N;
00069			//log(self@"---> DONNEES"@Map@GameType@IdealPC@N@FragLimit@TimeLimit@NbBots);
00070			//log(self@"---> NIVEAUX BOTS"@NivBot[0]@NivBot[1]@NivBot[2]@NivBot[3]@NivBot[4]@NivBot[5]@NivBot[6]);
00071		}
00072	}
00073	
00074	function Created()
00075	{
00076		local int i;
00077		
00078		Super.Created();
00079		
00080		AllowedGameTypeIndex[0]=DeathmatchIndex;
00081		AllowedGameTypeIndex[1]=TeamDeathmatchIndex;
00082		AllowedGameTypeIndex[2]=CaptureTheFlagIndex;
00083		AllowedGameTypeIndex[3]=TheHuntIndex;
00084		AllowedGameTypeIndex[4]=SabotageIndex;
00085		AllowedGameTypeIndex[5]=PowerUpIndex;
00086	
00087		for (i=0; i<7; i++)
00088			tBackGround[i] = texture(DynamicLoadObject(sBackGround[i], class'Texture'));
00089		
00090		tHighlight = texture(DynamicLoadObject(sHighlight, class'Texture'));
00091		
00092		// Game Type
00093		GameCombo = XIIIComboControl(CreateControl(class'XIIIComboControl', 288, 96*fScaleTo, 300, 28));
00094		GameCombo.Text = GameText;
00095		//GameCombo.bSmallFont = true;
00096		GameCombo.bArrows = true;
00097		GameCombo.bCalculateSize = false;
00098		GameCombo.FirstBoxWidth = 150;
00099		
00100		// Map
00101		MapCombo = XIIIComboControl(CreateControl(class'XIIIComboControl', 288, 141*fScaleTo, 300, 28));
00102		MapCombo.Text = MapText;
00103		MapCombo.bArrows = true;
00104		MapCombo.bCalculateSize = false;
00105		MapCombo.FirstBoxWidth = 160;
00106		
00107		// Frag Limit
00108		FragEdit = XIIIValueControl(CreateControl(class'XIIIValueControl', 288, 186*fScaleTo, 300, 28));
00109		FragEdit.Text = FragText;
00110		FragEdit.bCalculateSize = false;
00111		FragEdit.FirstBoxWidth = 200;
00112		//FragEdit.SetRange(0,500);
00113		
00114		// Time Limit
00115		TimeEdit = XIIIValueControl(CreateControl(class'XIIIValueControl', 288, 231*fScaleTo, 300, 28));
00116		TimeEdit.Text = TimeText;
00117		TimeEdit.bCalculateSize = false;
00118		TimeEdit.FirstBoxWidth = 175;
00119		TimeEdit.SetRange(0,60);
00120	
00121		// Bots setup
00122		BotsButton = XIIIbutton(CreateControl(class'XIIIbutton', 340, 276*fScaleTo, 180, 28));
00123		BotsButton.Text = BotsText;
00124		BotsButton.bUseBorder = true;
00125		
00126		// friendly fire
00127		FriendlyCheck = XIIICheckboxControl(CreateControl(class'XIIICheckboxControl', 288, 321*fScaleTo, 300, 28));
00128		FriendlyCheck.Text = FriendlyText;
00129		FriendlyCheck.bWhiteColorOnlyWhenFocused = true;
00130	
00131		// OK go
00132		OKButton = XIIIbutton(CreateControl(class'XIIIbutton', 360, 366*fScaleTo, 139, 28));
00133		OKButton.Text = OKText;
00134		OKButton.bUseBorder = true;
00135	
00136	
00137		Controls[0] = GameCombo;
00138		Controls[1] = MapCombo;
00139		Controls[2] = FragEdit;
00140		Controls[3] = TimeEdit;
00141		Controls[4] = BotsButton;
00142		Controls[5] = FriendlyCheck;
00143		Controls[6] = OKButton;
00144	
00145	    IterateGames();
00146	
00147	    AfterCreate();
00148	
00149		GotoState('ReinitMusic');
00150	}
00151	
00152	
00153	FUNCTION IterateGames()
00154	{
00155		local int i;
00156	
00157		for (i=0;i<AllowedGameTypeIndex.Length;i++)
00158		{
00159			GameCombo.AddItem(GetGameTypeText(i));
00160		}		
00161	
00162		MaxGames = AllowedGameTypeIndex.Length;
00163	
00164		OnGame = 0;
00165		GameCombo.SetSelectedIndex(0);
00166	
00167		Initialized = true;
00168		GameChanged();
00169	}
00170	
00171	FUNCTION IterateMaps()
00172	{
00173		LOCAL Array<string> MapDescList;
00174		LOCAL int i;
00175	
00176		GetMapArray( OnGame, MapDescList, MapsUNRList );
00177	
00178		MapCombo.Clear();
00179		GameNbPlayers.Length = 0;
00180		for( i=0; i<MapDescList.Length; i++ )
00181		{
00182			MapCombo.AddItem( MapDescList[i] );
00183			GameNbPlayers[ i ] = NbPlayers[ GameMapsIndex[ i ] ];
00184		}
00185	
00186		OnMap = 0;
00187		MapCombo.SetSelectedIndex(0);
00188	}
00189	
00190	function AfterCreate()
00191	{
00192		OnMenu = 0;
00193		
00194	/*	OnFrag = WinningScore;
00195		FragEdit.SetValue(OnFrag);
00196		if (OnFrag == 0)
00197			FragEdit.sValue ="-";*/
00198		
00199		OnTime = MaxTime;
00200		TimeEdit.SetValue(OnTime);
00201		if (OnTime == 0)
00202			TimeEdit.sValue ="-";
00203		else
00204			TimeEdit.sValue = TimeEdit.sValue@"Min.";
00205	}
00206	
00207	
00208	function Paint(canvas C, float X, float Y)
00209	{
00210	     local float fScale, fHeight, W, H;
00211	
00212	     Super.Paint(C,X,Y);
00213	
00214	     DrawStretchedTexture(C, 253*fRatioX, 54*fRatioY, 353*fRatioX, 377*fScaleTo*fRatioY, myRoot.tFondNoir);
00215	
00216	     fHeight = (373 / 192) * 64 * fScaleTo; // (sum_back.height/sum_tex.height) * tex_height
00217	     DrawStretchedTexture(C, 255*fRatioX, 56*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[0]);
00218	     DrawStretchedTexture(C, 255*fRatioX, (56+fHeight)*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[1]);
00219	     DrawStretchedTexture(C, 255*fRatioX, (56+2*fHeight)*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[2]);
00220	
00221	     OnMenu = FindComponentIndex(FocusedControl);
00222	     C.Style = 5;
00223		 C.DrawColor.A = 180;
00224	     DrawStretchedTexture(C, 255*fRatioX, ((91+OnMenu*45)*fScaleTo)*fRatioY, 349*fRatioX, 40*fRatioY, tHighlight);//OnMenu]);
00225	     C.DrawColor.A = 255;
00226	     DrawStretchedTexture(C, 41*fRatioX, 68*fRatioY, 242*fRatioX, 180*fScaleTo*fRatioY, tBackGround[5]);
00227	     DrawStretchedTexture(C, 41*fRatioX, (68+180*fScaleTo)*fRatioY, 242*fRatioX, 180*fScaleTo*fRatioY, tBackGround[6]);
00228	     C.Style = 1;
00229	
00230		 C.bUseBorder = true;
00231		 DrawStretchedTexture(C, 140*fRatioX, 20*fRatioY, 180*fRatioX, 40*fRatioY, myRoot.FondMenu);
00232		 C.TextSize(TitleText, W, H);
00233		 C.DrawColor = BlackColor;
00234		 C.SetPos((150 + (160-W)/2)*fRatioX, (40-H/2)*fRatioY);
00235		 C.DrawText(TitleText, false);
00236		 C.bUseBorder = false;
00237		 C.DrawColor = WhiteColor;
00238	
00239	}
00240	
00241	
00242	function ShowWindow()
00243	{
00244	     Super.ShowWindow();
00245	
00246	     bShowBCK = true;
00247	     bShowSEL = true;
00248	}
00249	
00250	
00251	function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
00252	{
00253		local int OldOnGame;
00254		
00255		if ((State==1) || (state==2))// IST_Press // to avoid auto-repeat
00256		{
00257			if (Key==0x0D/*IK_Enter*/ || Key==1)
00258			{
00259				if (FocusedControl == BotsButton)
00260					GotoBotSetup();
00261				if (FocusedControl == Controls[6])
00262					StartPressed();
00263				return true;
00264			}
00265			if ((Key==0x08/*IK_Backspace*/)|| (Key==0x1B))
00266			{
00267				myRoot.CloseMenu(true);
00268				return true;
00269			}
00270			if (Key==0x26/*IK_Up*/)
00271			{
00272				PrevControl(FocusedControl);
00273				return true;
00274			}
00275			if (Key==0x28/*IK_Down*/)
00276			{
00277				NextControl(FocusedControl);
00278				return true;
00279			}
00280			if ((Key==0x25) || (Key==0x27))
00281			{
00282				OnMenu = FindComponentIndex(FocusedControl);
00283				if (OnMenu == 0)
00284				{
00285					OldOnGame = OnGame;
00286					if (Key==0x25) OnGame--;
00287					if (Key==0x27) OnGame++;
00288					OnGame = Clamp(OnGame,0,MaxGames - 1);
00289					if ( OldOnGame != OnGame )
00290					{
00291						GameCombo.SetSelectedIndex(OnGame);
00292						GameChanged();
00293					}
00294				}
00295				if ( FocusedControl==MapCombo)
00296				{
00297					if (Key==0x25) OnMap--;
00298					if (Key==0x27) OnMap++;
00299					OnMap = Clamp(OnMap,0,MapsUNRList.Length - 1);
00300					MapCombo.SetSelectedIndex(OnMap);
00301				}
00302				if (OnMenu == 2)
00303				{
00304					if ( Key==0x25 )
00305						OnFrag -= PointsLimitFactor;
00306					if ( Key==0x27 )
00307						OnFrag += PointsLimitFactor;
00308					OnFrag = Clamp(OnFrag,0,MaxScore*PointsLimitFactor);
00309					FragEdit.SetValue(OnFrag);
00310					if (OnFrag == 0) FragEdit.sValue ="-";
00311				}
00312				if (OnMenu == 3)
00313				{
00314					if (Key==0x25) OnTime -= 5;
00315					if (Key==0x27) OnTime += 5;
00316					OnTime = Clamp(OnTime,0,60);
00317					TimeEdit.SetValue(OnTime);
00318					if (OnTime == 0)
00319						TimeEdit.sValue ="-";
00320					else
00321						TimeEdit.sValue = TimeEdit.sValue@"Min."; 
00322				}
00323				if (OnMenu == 5)
00324				{
00325					if (Key==0x25)
00326						FriendlyCheck.bChecked = true;
00327					else
00328						if (Key==0x27)
00329							FriendlyCheck.bChecked = false;
00330				}
00331				return true;
00332			}
00333		}
00334		return super.InternalOnKeyEvent(Key, state, delta);
00335	}
00336	
00337	
00338	function GameChanged()
00339	{
00340		local int CurrentGame, i;
00341	
00342		if (Initialized)
00343		{
00344			OnMap = 0;
00345			Initialized=false;
00346	
00347			CurrentGame = GameCombo.GetSelectedIndex();
00348	
00349			OnFrag = GetDefaultGameTypeValue( OnGame );
00350			PointsLimitFactor = GetPointsLimitFactor( OnGame );
00351			FragEdit.SetValue(OnFrag);
00352			FragEdit.SetRange(0,MaxScore*PointsLimitFactor);
00353	
00354			if (MapCombo != None)
00355				IterateMaps();
00356			
00357			// friendly fire is visible in Team Deathmatch, Capture The Flag and Sabotage modes
00358			if ( HasFriendlyFire( OnGame ) )
00359			{
00360				FriendlyCheck.bNeverFocus = false;
00361				FriendlyCheck.bVisible = true;
00362			}
00363			else
00364			{
00365				FriendlyCheck.bNeverFocus = true;
00366				FriendlyCheck.bVisible = false;
00367			}
00368	
00369			// time limit and points limit are not visible in Sabotage mode
00370			if ( HasTimeAndFragLimits( OnGame ) )
00371			{
00372				TimeEdit.bNeverFocus = false;
00373				TimeEdit.bVisible = true;
00374				FragEdit.bNeverFocus = false;
00375				FragEdit.bVisible = true;
00376			}
00377			else
00378			{
00379				TimeEdit.bNeverFocus = true;
00380				TimeEdit.bVisible = false;			
00381				FragEdit.bNeverFocus = true;
00382				FragEdit.bVisible = false;
00383			}
00384	
00385			Initialized = true;
00386		}
00387	}
00388	
00389	
00390	function MapChanged()
00391	{
00392	     if (Initialized)
00393	     {
00394			 Map = MapsUNRList[OnMap];
00395	     }
00396	}
00397	
00398	
00399	function FragChanged()
00400	{
00401	     if (Initialized)
00402	     {
00403	          FragEdit.SetValue(OnFrag);
00404			  if (OnFrag == 0)
00405				  FragEdit.sValue ="-";
00406	     }
00407	}
00408	
00409	
00410	function TimeChanged()
00411	{
00412	     if (Initialized)
00413	     {
00414	          TimeEdit.SetValue(OnTime);
00415			  if (OnTime == 0)
00416				  TimeEdit.sValue ="-";
00417			  else
00418				  TimeEdit.sValue = TimeEdit.sValue@"Min.";
00419	     }
00420	}
00421	
00422	
00423	function GotoBotSetup()
00424	{
00425	    local string URL;
00426	    local int N,  FriendlyFire;
00427	
00428	    N = 1;
00429	
00430		IdealPC = GameNbPlayers[ MapCombo.GetSelectedIndex( ) ]; //int( Mid( MapCombo.GetValue(), 1 ) );
00431	
00432		NbBots = Min(NbBots,IdealPC - N);
00433	
00434		FriendlyFire = int(FriendlyCheck.bChecked);
00435	
00436	    MapChanged();
00437	    TimeChanged();
00438		FragChanged();
00439	
00440		URL =
00441			"?Map="$Map$
00442			"?GameTypeIndex="$AllowedGameTypeIndex[OnGame]$
00443			"?IP="$IdealPC$
00444			"?NP="$N$
00445			"?FF="$FriendlyFire$
00446			"?FR="$OnFrag$
00447			"?TI="$OnTime$
00448			"?NBots="$NbBots$
00449			"?DC="$DefaultConfig$
00450			"?TB0="$TeamBot[0]$
00451			"?NB0="$NivBot[0]$
00452			"?TB1="$TeamBot[1]$
00453			"?NB1="$NivBot[1]$
00454			"?TB2="$TeamBot[2]$
00455			"?NB2="$NivBot[2]$
00456			"?TB3="$TeamBot[3]$
00457			"?NB3="$NivBot[3]$
00458			"?TB4="$TeamBot[4]$
00459			"?NB4="$NivBot[4]$
00460			"?TB5="$TeamBot[5]$
00461			"?NB5="$NivBot[5]$
00462			"?TB6="$TeamBot[6]$
00463			"?NB6="$NivBot[6];
00464	
00465	    //log(URL);
00466	    myRoot.OpenMenu("XIDInterf.XIIIMenuBotsSetupClient", false, URL);
00467	}
00468	
00469	
00470	function StartPressed()
00471	{
00472		LOCAL string URL, MyName, MyClass, SkinCode, Mutator;
00473		LOCAL int i, N, IdealPC, FriendlyFire;
00474	
00475		N = 1;
00476	
00477		IdealPC = GameNbPlayers[ MapCombo.GetSelectedIndex( ) ]; //int( Mid( MapCombo.GetValue(), 1 ) );
00478		//IdealPC = 8;
00479	
00480		NbBots = Min(NbBots,IdealPC - N);
00481	
00482		FriendlyFire = int(FriendlyCheck.bChecked);
00483	
00484	    GetPlayerOwner().ConsoleCommand("SetViewPortNumberForNextMap "$N);
00485	
00486		MapChanged();
00487		TimeChanged();
00488		FragChanged();
00489	
00490		if (( NbBots == 0 ) && ( DefaultConfig == 0 ))
00491		{
00492			URL =
00493				/*"?Map="$*/Map$
00494				"?Game="$GetGameInfoText(OnGame)$
00495				"?IP="$IdealPC$
00496				"?NP="$N$
00497				"?FF="$FriendlyFire$
00498				"?FR="$OnFrag$
00499				"?TI="$OnTime$
00500				"?NBots="$(IdealPC - N)$
00501				"?TB0="$1$
00502				"?NB0="$1$
00503				"?TB1="$0$
00504				"?NB1="$2$
00505				"?TB2="$1$
00506				"?NB2="$2$
00507				"?TB3="$0$
00508				"?NB3="$0$
00509				"?TB4="$1$
00510				"?NB4="$0$
00511				"?TB5="$0$
00512				"?NB5="$3$
00513				"?TB6="$1$
00514				"?NB6="$3;
00515		}
00516		else
00517		{
00518			URL =
00519				/*"?Map="$*/Map$
00520				"?Game="$GetGameInfoText(OnGame)$
00521				"?IP="$IdealPC$
00522				"?NP="$N$
00523				"?FF="$FriendlyFire$
00524				"?FR="$OnFrag$
00525				"?TI="$OnTime$
00526				"?NBots="$NbBots$
00527				"?TB0="$TeamBot[0]$
00528				"?NB0="$NivBot[0]$
00529				"?TB1="$TeamBot[1]$
00530				"?NB1="$NivBot[1]$
00531				"?TB2="$TeamBot[2]$
00532				"?NB2="$NivBot[2]$
00533				"?TB3="$TeamBot[3]$
00534				"?NB3="$NivBot[3]$
00535				"?TB4="$TeamBot[4]$
00536				"?NB4="$NivBot[4]$
00537				"?TB5="$TeamBot[5]$
00538				"?NB5="$NivBot[5]$
00539				"?TB6="$TeamBot[6]$
00540				"?NB6="$NivBot[6];
00541		}
00542	
00543		Mutator = GetMutatorText( OnGame );
00544		if ( Mutator!="" )
00545			URL = URL$"?Mutator="$Mutator;
00546	
00547		// skin selection
00548		MyClass = GetPlayerOwner().GetDefaultURL("Class");
00549		SkinCode = class'MeshSkinList'.default.MeshSkinListInfo[0].SkinCode;
00550		for (i=0;i<class'MeshSkinList'.default.MeshSkinListInfo.Length;i++)
00551		{
00552			if ( MyClass == class'MeshSkinList'.default.MeshSkinListInfo[i].SkinName )
00553			{
00554				SkinCode = class'MeshSkinList'.default.MeshSkinListInfo[i].SkinCode;
00555				break;
00556			}
00557		}
00558		URL = URL$"?SK="$SkinCode;
00559	
00560		// name selection
00561		MyName = GetPlayerOwner().GetDefaultURL("Name");
00562		URL = URL$"?Name="$MyName;
00563	
00564		SaveConfigs();
00565	
00566	    myRoot.CloseAll(true);
00567	    myRoot.GotoState('');
00568	    myRoot.bProfileMenu = false;
00569	    GetPlayerOwner().AttribPadToViewport();
00570	    log("TRAVELLING w/URL: "$URL);
00571	    GetPlayerOwner().ClientTravel(URL, TRAVEL_Absolute, false);
00572	}
00573	
00574	
00575	// if subclassed, this parent function must always be called first
00576	function string GetPageParameters()
00577	{
00578	    return Super.GetPageParameters()$"?GameType="$GameCombo.GetSelectedIndex()$"?MapName="$MapCombo.GetSelectedIndex()$"?FragLimit="$FragEdit.GetValue()$"?TimeLimit="$TimeEdit.GetValue()$"?Friendly="$FriendlyCheck.bChecked$"?DC="$DefaultConfig$"?NBots="$NbBots$"?TB0="$TeamBot[0]$"?NB0="$NivBot[0]$"?TB1="$TeamBot[1]$"?NB1="$NivBot[1]$"?TB2="$TeamBot[2]$"?NB2="$NivBot[2]$"?TB3="$TeamBot[3]$"?NB3="$NivBot[3]$"?TB4="$TeamBot[4]$"?NB4="$NivBot[4]$"?TB5="$TeamBot[5]$"?NB5="$NivBot[5]$"?TB6="$TeamBot[6]$"?NB6="$NivBot[6];
00579	}
00580	
00581	// if GetPageParameters() is subclassed, you'd better have this one too !
00582	function SetPageParameters(string PageParameters)
00583	{
00584	    log("SetPageParameters("$PageParameters$") called for "$self);
00585	
00586	    OnGame = int(localParseOption(PageParameters, "GameType", "0"));
00587	    GameCombo.SetSelectedIndex(OnGame);
00588	    GameChanged();
00589	
00590	    OnMap = int(localParseOption(PageParameters, "MapName", "0"));
00591	    MapCombo.SetSelectedIndex(OnMap);
00592	    MapChanged();
00593	
00594	    OnFrag = int(localParseOption(PageParameters, "FragLimit", "0"));
00595	    FragChanged();
00596	
00597	    OnTime = int(localParseOption(PageParameters, "TimeLimit", "0"));
00598	    TimeChanged();
00599	
00600	    FriendlyCheck.bChecked = (Caps(localParseOption(PageParameters, "Friendly", "")) == "TRUE");
00601	
00602		DefaultConfig = int( localParseOption( PageParameters,"DC", "0") );
00603	
00604		NbBots = int( localParseOption( PageParameters,"NBots", "0") );
00605	
00606		TeamBot[0] = int( localParseOption( PageParameters,"TB0", "1") );
00607		NivBot[0] = int( localParseOption( PageParameters,"NB0", "1") );
00608		TeamBot[1] = int( localParseOption( PageParameters,"TB1", "0") );
00609		NivBot[1] = int( localParseOption( PageParameters,"NB1", "2") );
00610		TeamBot[2] = int( localParseOption( PageParameters,"TB2", "1") );
00611		NivBot[2] = int( localParseOption( PageParameters,"NB2", "2") );
00612		TeamBot[3] = int( localParseOption( PageParameters,"TB3", "0") );
00613		NivBot[3] = int( localParseOption( PageParameters,"NB3", "0") );
00614		TeamBot[4] = int( localParseOption( PageParameters,"TB4", "1") );
00615		NivBot[4] = int( localParseOption( PageParameters,"NB4", "0") );
00616		TeamBot[5] = int( localParseOption( PageParameters,"TB5", "0") );
00617		NivBot[5] = int( localParseOption( PageParameters,"NB5", "3") );
00618		TeamBot[6] = int( localParseOption( PageParameters,"TB6", "1") );
00619		NivBot[6] = int( localParseOption( PageParameters,"NB6", "3") );
00620	}
00621	
00622	
00623	function SaveConfigs()
00624	{
00625	     SaveConfig();
00626	     GetPlayerOwner().SaveConfig();
00627	     GetPlayerOwner().PlayerReplicationInfo.SaveConfig();
00628	}
00629	
00630	
00631	

End Source Code