## 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