00001 //===========================================================================
00002 // Split-Screen multiplayer game setup
00003 //===========================================================================
00004 class XIIIMenuSplitSetupClient 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 PlayerCombo, FragEdit, TimeEdit;
00013 var XIIIButton BotsButton, PlayersButton, OkButton;
00014
00015 var string Games[6], Prefix[6], GameInfo[6], Mutator, RealGames[6], RealPrefix[6], RealGameInfo[6];
00016 var Array<string> MapsList, MapsUNRList;
00017
00018 var localized string TitleText, GameText, MapText, PlayerText, FriendlyText, FragText, TimeText, BotsText, PlayersText, OKText;
00019
00020 var texture tBackGround[7], tHighlight;
00021 var string sBackground[7], sHighlight;
00022
00023 var bool Initialized;
00024
00025 var int OnPlayer, OnGame, OnMap, OnFrag, OnTime, MaxPlayerValue;
00026
00027 var int MaxPlayers, WinningScore, MaxTime, NbBots, IdealPC, N, FriendlyFire, FragLimit, TimeLimit, DefaultConfig;
00028 var int TeamBot[7], NivBot[7], PC[4], PT[4];
00029
00030 var string URL;
00031
00032 var sound TempSound;
00033
00034
00035 event HandleParameters(string Param1, string Param2)
00036 {
00037 URL = Param1;
00038 log("Param1="$URL);
00039 Map = LocalParseOption ( URL, "Map", "");
00040 GameTypeIndex = int(localParseOption ( URL, "GameTypeIndex", "0"));
00041 IdealPC = int( localParseOption( URL,"IP", "0") );
00042 N = int( localParseOption( URL,"NP", "0") );
00043 //FriendlyFire = int( localParseOption( URL,"FF", "0") );
00044 FragLimit = int( localParseOption( URL,"FR", "0") );
00045 TimeLimit = int( localParseOption( URL,"TI", "0") );
00046 DefaultConfig = int( localParseOption( URL,"DC", "0") );
00047 NbBots = int( localParseOption( URL,"NBots", "0") );
00048 TeamBot[0] = int( localParseOption( URL,"TB0", "1") );
00049 NivBot[0] = int( localParseOption( URL,"NB0", "1") );
00050 TeamBot[1] = int( localParseOption( URL,"TB1", "0") );
00051 NivBot[1] = int( localParseOption( URL,"NB1", "2") );
00052 TeamBot[2] = int( localParseOption( URL,"TB2", "1") );
00053 NivBot[2] = int( localParseOption( URL,"NB2", "2") );
00054 TeamBot[3] = int( localParseOption( URL,"TB3", "0") );
00055 NivBot[3] = int( localParseOption( URL,"NB3", "0") );
00056 TeamBot[4] = int( localParseOption( URL,"TB4", "1") );
00057 NivBot[4] = int( localParseOption( URL,"NB4", "0") );
00058 TeamBot[5] = int( localParseOption( URL,"TB5", "0") );
00059 NivBot[5] = int( localParseOption( URL,"NB5", "3") );
00060 TeamBot[6] = int( localParseOption( URL,"TB6", "1") );
00061 NivBot[6] = int( localParseOption( URL,"NB6", "3") );
00062 PC[0] = int( localParseOption( URL,"PC0", "0") );
00063 PC[1] = int( localParseOption( URL,"PC1", "0") );
00064 PC[2] = int( localParseOption( URL,"PC2", "1") );
00065 PC[3] = int( localParseOption( URL,"PC3", "1") );
00066 PT[0] = int( localParseOption( URL,"PT0", "0") );
00067 PT[1] = int( localParseOption( URL,"PT1", "1") );
00068 PT[2] = int( localParseOption( URL,"PT2", "0") );
00069 PT[3] = int( localParseOption( URL,"PT3", "1") );
00070
00071 //log(self@"---> DONNEES"@Map@GameType@IdealPC@N@FragLimit@TimeLimit@NbBots);
00072 //log(self@"---> NIVEAUX BOTS"@NivBot[0]@NivBot[1]@NivBot[2]@NivBot[3]@NivBot[4]@NivBot[5]@NivBot[6]);
00073 //log(self@"---> TEAM PLAYERS"@PT[0]@PT[1]@PT[2]@PT[3]);
00074 }
00075
00076 function Created()
00077 {
00078 local int i;
00079
00080 Super.Created();
00081
00082 switch( myRoot.CurrentPF )
00083 {
00084 case 1: // PS2
00085 AllowedGameTypeIndex[0]=DeathmatchIndex;
00086 AllowedGameTypeIndex[1]=TeamDeathmatchIndex;
00087 AllowedGameTypeIndex[2]=CaptureTheFlagIndex;
00088 AllowedGameTypeIndex[3]=TheHuntIndex;
00089 AllowedGameTypeIndex[4]=PowerUpIndex;
00090 break;
00091 case 2: // XBox
00092 AllowedGameTypeIndex[0]=DeathmatchIndex;
00093 AllowedGameTypeIndex[1]=TeamDeathmatchIndex;
00094 AllowedGameTypeIndex[2]=CaptureTheFlagIndex;
00095 AllowedGameTypeIndex[3]=SabotageIndex;
00096 break;
00097 case 3: // CUBE
00098 AllowedGameTypeIndex[0]=DeathmatchIndex;
00099 AllowedGameTypeIndex[1]=TeamDeathmatchIndex;
00100 AllowedGameTypeIndex[2]=CaptureTheFlagIndex;
00101 AllowedGameTypeIndex[3]=TheHuntIndex;
00102 break;
00103 }
00104
00105 for (i=0; i<7; i++)
00106 tBackGround[i] = texture(DynamicLoadObject(sBackGround[i], class'Texture'));
00107
00108 tHighlight = texture(DynamicLoadObject(sHighlight, class'Texture'));
00109
00110 // Players
00111 PlayerCombo = XIIIValueControl(CreateControl(class'XIIIValueControl', 288, 70*fScaleTo, 300, 32));
00112 PlayerCombo.Text = PlayerText;
00113 PlayerCombo.bCalculateSize = false;
00114 PlayerCombo.FirstBoxWidth = 200;
00115
00116 // Game Type
00117 GameCombo = XIIIComboControl(CreateControl(class'XIIIComboControl', 288, 116*fScaleTo, 300, 32));
00118 GameCombo.Text = GameText;
00119 //GameCombo.bSmallFont = true;
00120 GameCombo.bArrows = true;
00121
00122 // Map
00123 MapCombo = XIIIComboControl(CreateControl(class'XIIIComboControl', 288, 162*fScaleTo, 300, 32));
00124 MapCombo.Text = MapText;
00125 MapCombo.bArrows = true;
00126 MapCombo.bCalculateSize = false;
00127 MapCombo.FirstBoxWidth = 160;
00128
00129 // Frag Limit
00130 FragEdit = XIIIValueControl(CreateControl(class'XIIIValueControl', 288, 208*fScaleTo, 300, 32));
00131 FragEdit.Text = FragText;
00132 FragEdit.bCalculateSize = false;
00133 FragEdit.FirstBoxWidth = 200;
00134 FragEdit.SetRange(0,500);
00135
00136 // Time Limit
00137 TimeEdit = XIIIValueControl(CreateControl(class'XIIIValueControl', 288, 254*fScaleTo, 300, 32));
00138 TimeEdit.Text = TimeText;
00139 TimeEdit.bCalculateSize = false;
00140 TimeEdit.FirstBoxWidth = 175;
00141 TimeEdit.SetRange(0,60);
00142
00143 // Bots setup
00144 BotsButton = XIIIbutton(CreateControl(class'XIIIbutton', 320, 300*fScaleTo, 220, 32));
00145 BotsButton.Text = BotsText;
00146 BotsButton.bUseBorder = true;
00147
00148 // friendly fire
00149 //FriendlyCheck = XIIICheckboxControl(CreateControl(class'XIIICheckboxControl', 288, 389*fScaleTo, 300, 29));
00150 //FriendlyCheck.Text = FriendlyText;
00151 //FriendlyCheck.bWhiteColorOnlyWhenFocused = true;
00152
00153 // Players setup
00154 PlayersButton = XIIIbutton(CreateControl(class'XIIIbutton', 320, 346*fScaleTo, 220, 32));
00155 PlayersButton.Text = PlayersText;
00156 PlayersButton.bUseBorder = true;
00157
00158 // OK go
00159 OKButton = XIIIbutton(CreateControl(class'XIIIbutton', 360, 392*fScaleTo, 139, 32));
00160 OKButton.Text = OKText;
00161 OKButton.bUseBorder = true;
00162
00163 Controls[0] = PlayerCombo;
00164 Controls[1] = GameCombo;
00165 Controls[2] = MapCombo;
00166 Controls[3] = FragEdit;
00167 Controls[4] = TimeEdit;
00168 Controls[5] = BotsButton;
00169 //Controls[6] = FriendlyCheck;
00170 Controls[6] = PlayersButton;
00171 Controls[7] = OKButton;
00172
00173
00174 // real names of maps
00175
00176 IterateGames();
00177
00178 AfterCreate();
00179
00180 if (myRoot.CurrentPF == 3 )
00181 hSoundMenu2 = TempSound;
00182
00183 GotoState('ReinitMusic');
00184 }
00185
00186
00187 FUNCTION IterateGames()
00188 {
00189 local int i;
00190
00191 for (i=0;i<AllowedGameTypeIndex.Length;i++)
00192 {
00193 GameCombo.AddItem(GetGameTypeText(i));
00194 }
00195
00196 OnGame = 0;
00197 GameCombo.SetSelectedIndex(0);
00198
00199 Initialized = true;
00200 GameChanged();
00201 }
00202
00203
00204 function IterateMaps()
00205 {
00206 LOCAL Array<string> MapDescList;
00207 LOCAL int i;
00208
00209 GetMapArray( OnGame, MapDescList, MapsUNRList );
00210
00211 MapCombo.Clear();
00212 for( i=0; i<MapDescList.Length; i++ )
00213 MapCombo.AddItem( MapDescList[i] );
00214
00215 OnMap = 0;
00216 MapCombo.SetSelectedIndex(0);
00217 }
00218
00219
00220 function AfterCreate()
00221 {
00222 OnMenu = 0;
00223
00224 PlayerCombo.SetRange(1,int(Mid(MapCombo.GetValue(),1)));
00225 OnPlayer = Max(GetPlayerOwner().GetPadNumber(), MaxPlayers);
00226 PlayerCombo.SetValue(OnPlayer);
00227
00228 OnFrag = WinningScore;
00229 FragEdit.SetValue(OnFrag);
00230 if (OnFrag == 0)
00231 FragEdit.sValue ="-";
00232
00233 OnTime = MaxTime;
00234 TimeEdit.SetValue(OnTime);
00235 if (OnTime == 0)
00236 TimeEdit.sValue ="-";
00237 else
00238 TimeEdit.sValue = TimeEdit.sValue@"Min.";
00239 }
00240
00241
00242 function Paint(canvas C, float X, float Y)
00243 {
00244 local float fScale, fHeight, W, H;
00245
00246 Super.Paint(C,X,Y);
00247
00248 DrawStretchedTexture(C, 253*fRatioX, 54*fRatioY, 353*fRatioX, 377*fScaleTo*fRatioY, myRoot.tFondNoir);
00249
00250 fHeight = (373 / 192) * 64 * fScaleTo; // (sum_back.height/sum_tex.height) * tex_height
00251 DrawStretchedTexture(C, 255*fRatioX, 56*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[0]);
00252 DrawStretchedTexture(C, 255*fRatioX, (56+fHeight)*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[1]);
00253 DrawStretchedTexture(C, 255*fRatioX, (56+2*fHeight)*fRatioY, 349*fRatioX, fHeight*fRatioY, tBackGround[2]);
00254
00255 OnMenu = FindComponentIndex(FocusedControl);
00256 C.Style = 5;
00257 C.DrawColor.A = 180;
00258 DrawStretchedTexture(C, 255*fRatioX, ((65+OnMenu*46)*fScaleTo)*fRatioY, 349*fRatioX, 40*fRatioY, tHighlight);//OnMenu]);
00259 C.DrawColor.A = 255;
00260 DrawStretchedTexture(C, 41*fRatioX, 88*fRatioY, 242*fRatioX, 170*fScaleTo*fRatioY, tBackGround[5]);
00261 DrawStretchedTexture(C, 41*fRatioX, (88+170*fScaleTo)*fRatioY, 242*fRatioX, 170*fScaleTo*fRatioY, tBackGround[6]);
00262 C.Style = 1;
00263
00264 C.bUseBorder = true;
00265 DrawStretchedTexture(C, 100*fRatioX, 40*fRatioY, 180*fRatioX, 40*fRatioY, myRoot.FondMenu);
00266 C.TextSize(TitleText, W, H);
00267 C.DrawColor = BlackColor;
00268 C.SetPos((110 + (160-W)/2)*fRatioX, (60-H/2)*fRatioY);
00269 C.DrawText(TitleText, false);
00270 C.bUseBorder = false;
00271 C.DrawColor = WhiteColor;
00272 }
00273
00274
00275 event Tick(float dt)
00276 {
00277 // pads number detection
00278 if ( GetPlayerOwner().GetPadNumber() != 0 )
00279 {
00280 OnPlayer = Clamp(OnPlayer,1,GetPlayerOwner().GetPadNumber());
00281 PlayerCombo.SetRange(1,GetPlayerOwner().GetPadNumber());
00282 PlayerCombo.SetValue(OnPlayer);
00283 }
00284 else
00285 {
00286 OnPlayer = 0;
00287 PlayerCombo.SetRange(0,0);
00288 PlayerCombo.SetValue(OnPlayer);
00289 }
00290 }
00291
00292
00293 function ShowWindow()
00294 {
00295 Super.ShowWindow();
00296
00297 bShowBCK = true;
00298 bShowSEL = true;
00299 }
00300
00301
00302 function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
00303 {
00304 local int OldOnGame;
00305
00306 if ((State==1) || (state==2))// IST_Press // to avoid auto-repeat
00307 {
00308 if (Key==0x0D/*IK_Enter*/)
00309 {
00310 if (FocusedControl == BotsButton)
00311 GotoBotSetup();
00312 if (FocusedControl == PlayersButton)
00313 GotoPlayersSetup();
00314 if (FocusedControl == OKButton)
00315 StartPressed();
00316 return true;
00317 }
00318 if ((Key==0x08/*IK_Backspace*/)|| (Key==0x1B))
00319 {
00320 myRoot.CloseMenu(true);
00321 return true;
00322 }
00323 if (Key==0x26/*IK_Up*/)
00324 {
00325 PrevControl(FocusedControl);
00326 return true;
00327 }
00328 if (Key==0x28/*IK_Down*/)
00329 {
00330 NextControl(FocusedControl);
00331 return true;
00332 }
00333 if ((Key==0x25) || (Key==0x27))
00334 {
00335 OnMenu = FindComponentIndex(FocusedControl);
00336 if (OnMenu == 0)
00337 {
00338 if (Key==0x25) OnPlayer--;
00339 if (Key==0x27) OnPlayer++;
00340 OnPlayer = Clamp(OnPlayer,1,GetPlayerOwner().GetPadNumber());
00341 PlayerCombo.SetValue(OnPlayer);
00342 }
00343 else if (OnMenu == 1)
00344 {
00345 OldOnGame = OnGame;
00346 if (Key==0x25) OnGame--;
00347 if (Key==0x27) OnGame++;
00348 OnGame = Clamp(OnGame,0,AllowedGameTypeIndex.Length - 1);
00349 if ( OldOnGame != OnGame )
00350 {
00351 GameCombo.SetSelectedIndex(OnGame);
00352 GameChanged();
00353 }
00354 }
00355 else if (OnMenu == 2)
00356 {
00357 if (Key==0x25) OnMap--;
00358 if (Key==0x27) OnMap++;
00359 OnMap = Clamp(OnMap,0,MapsUNRList.Length - 1);
00360 MapCombo.SetSelectedIndex(OnMap);
00361 }
00362 if (OnMenu == 3)
00363 {
00364 if (Key==0x25)
00365 if ( OnFrag <= 100 )
00366 OnFrag -= 10;
00367 else
00368 OnFrag -= 50;
00369 if (Key==0x27)
00370 if ( OnFrag >= 100 )
00371 OnFrag += 50;
00372 else
00373 OnFrag += 10;
00374 OnFrag = Clamp(OnFrag,0,500);
00375 FragEdit.SetValue(OnFrag);
00376 if (OnFrag == 0) FragEdit.sValue ="-";
00377 }
00378 else if (OnMenu == 4)
00379 {
00380 if (Key==0x25) OnTime -= 5;
00381 if (Key==0x27) OnTime += 5;
00382 OnTime = Clamp(OnTime,0,60);
00383 TimeEdit.SetValue(OnTime);
00384 if (OnTime == 0)
00385 TimeEdit.sValue ="-";
00386 else
00387 TimeEdit.sValue = TimeEdit.sValue@"Min.";
00388 }
00389 /* else if (OnMenu == 6)
00390 {
00391 if (Key==0x25)
00392 FriendlyCheck.bChecked = true;
00393 else
00394 if (Key==0x27)
00395 FriendlyCheck.bChecked = false;
00396 }*/
00397 return true;
00398 }
00399 }
00400 return super.InternalOnKeyEvent(Key, state, delta);
00401 }
00402
00403
00404 function GameChanged()
00405 {
00406 local int CurrentGame, i;
00407
00408 if (Initialized)
00409 {
00410 OnMap = 0;
00411 Initialized=false;
00412
00413 CurrentGame = GameCombo.GetSelectedIndex();
00414
00415 if (MapCombo != None)
00416 IterateMaps();
00417
00418 // time limit and points limit are not visible in Sabotage mode
00419 if ( HasTimeAndFragLimits( OnGame ) )
00420 {
00421 TimeEdit.bNeverFocus = false;
00422 TimeEdit.bVisible = true;
00423 FragEdit.bNeverFocus = false;
00424 FragEdit.bVisible = true;
00425 }
00426 else
00427 {
00428 TimeEdit.bNeverFocus = true;
00429 TimeEdit.bVisible = false;
00430 FragEdit.bNeverFocus = true;
00431 FragEdit.bVisible = false;
00432 }
00433
00434 // players setup bouton is available if we are in TDM, CTF or sabotage mode
00435 if ( HasFriendlyFire( OnGame ) )
00436 {
00437 PlayersButton.bNeverFocus = false;
00438 PlayersButton.bVisible = true;
00439 }
00440 else
00441 {
00442 PlayersButton.bNeverFocus = true;
00443 PlayersButton.bVisible = false;
00444 }
00445
00446 Initialized = true;
00447 }
00448 }
00449
00450
00451 function MapChanged()
00452 {
00453 if (Initialized)
00454 {
00455 Map = MapsUNRList[OnMap];
00456 }
00457 }
00458
00459
00460 function FragChanged()
00461 {
00462 if (Initialized)
00463 {
00464 FragEdit.SetValue(OnFrag);
00465 if (OnFrag == 0)
00466 FragEdit.sValue ="-";
00467 }
00468 }
00469
00470
00471 function TimeChanged()
00472 {
00473 if (Initialized)
00474 {
00475 TimeEdit.SetValue(OnTime);
00476 if (OnTime == 0)
00477 TimeEdit.sValue ="-";
00478 else
00479 TimeEdit.sValue = TimeEdit.sValue@"Min.";
00480 }
00481 }
00482
00483
00484 function GotoBotSetup()
00485 {
00486 local string URL;
00487 local int N, IdealPC, FriendlyFire;
00488
00489 N = PlayerCombo.GetValue();
00490 IdealPC = int( Mid( MapCombo.GetValue(), 1 ) );
00491 NbBots = Min(NbBots,IdealPC - N);
00492
00493 //FriendlyFire = int(FriendlyCheck.bChecked);
00494
00495 MapChanged();
00496 TimeChanged();
00497 FragChanged();
00498
00499 URL =
00500 "?Map="$Map$
00501 "?GameTypeIndex="$AllowedGameTypeIndex[OnGame]$
00502 "?IP="$IdealPC$
00503 "?NP="$N$
00504 "?FR="$OnFrag$
00505 "?TI="$OnTime$
00506 "?NBots="$NbBots$
00507 "?DC="$DefaultConfig$
00508 "?TB0="$TeamBot[0]$
00509 "?NB0="$NivBot[0]$
00510 "?TB1="$TeamBot[1]$
00511 "?NB1="$NivBot[1]$
00512 "?TB2="$TeamBot[2]$
00513 "?NB2="$NivBot[2]$
00514 "?TB3="$TeamBot[3]$
00515 "?NB3="$NivBot[3]$
00516 "?TB4="$TeamBot[4]$
00517 "?NB4="$NivBot[4]$
00518 "?TB5="$TeamBot[5]$
00519 "?NB5="$NivBot[5]$
00520 "?TB6="$TeamBot[6]$
00521 "?NB6="$NivBot[6]$
00522 "?PC0="$PC[0]$
00523 "?PC1="$PC[1]$
00524 "?PC2="$PC[2]$
00525 "?PC3="$PC[3]$
00526 "?PT0="$PT[0]$
00527 "?PT1="$PT[1]$
00528 "?PT2="$PT[2]$
00529 "?PT3="$PT[3];
00530
00531 log("Go to bots setup :"@URL);
00532 myRoot.OpenMenu("XIDInterf.XIIIMenuBotsSetupClient", false, URL);
00533 }
00534
00535
00536 function GotoPlayersSetup()
00537 {
00538 local string URL;
00539 local int N, IdealPC, FriendlyFire;
00540
00541 N = PlayerCombo.GetValue();
00542 IdealPC = int( Mid( MapCombo.GetValue(), 1 ) );
00543 NbBots = Min(NbBots,IdealPC - N);
00544
00545 //FriendlyFire = int(FriendlyCheck.bChecked);
00546
00547 MapChanged();
00548 TimeChanged();
00549 FragChanged();
00550
00551 URL =
00552 "?Map="$Map$
00553 "?GameTypeIndex="$AllowedGameTypeIndex[OnGame]$
00554 "?IP="$IdealPC$
00555 "?NP="$N$
00556 "?FR="$OnFrag$
00557 "?TI="$OnTime$
00558 "?NBots="$NbBots$
00559 "?DC="$DefaultConfig$
00560 "?TB0="$TeamBot[0]$
00561 "?NB0="$NivBot[0]$
00562 "?TB1="$TeamBot[1]$
00563 "?NB1="$NivBot[1]$
00564 "?TB2="$TeamBot[2]$
00565 "?NB2="$NivBot[2]$
00566 "?TB3="$TeamBot[3]$
00567 "?NB3="$NivBot[3]$
00568 "?TB4="$TeamBot[4]$
00569 "?NB4="$NivBot[4]$
00570 "?TB5="$TeamBot[5]$
00571 "?NB5="$NivBot[5]$
00572 "?TB6="$TeamBot[6]$
00573 "?NB6="$NivBot[6]$
00574 "?PC0="$PC[0]$
00575 "?PC1="$PC[1]$
00576 "?PC2="$PC[2]$
00577 "?PC3="$PC[3]$
00578 "?PT0="$PT[0]$
00579 "?PT1="$PT[1]$
00580 "?PT2="$PT[2]$
00581 "?PT3="$PT[3];
00582
00583 log("Go to players setup :"@URL);
00584 myRoot.OpenMenu("XIDInterf.XIIIMenuPlayersSetupClient", false, URL);
00585 }
00586
00587 function StartPressed()
00588 {
00589 local string URL, MyClass, SkinCode, MyName, Mutator;
00590 local int i, N, IdealPC, FriendlyFire, NbTeam0, NbTeam1;
00591 local int TeamBalanceBot[4];
00592
00593 N = PlayerCombo.GetValue();
00594 IdealPC = int( Mid( MapCombo.GetValue(), 1 ) );
00595 NbBots = Min(NbBots,IdealPC - N);
00596
00597 //FriendlyFire = int(FriendlyCheck.bChecked);
00598
00599 GetPlayerOwner().ConsoleCommand("SetViewPortNumberForNextMap "$N);
00600
00601 MapChanged();
00602 TimeChanged();
00603 FragChanged();
00604
00605 TeamBalanceBot[0] = 1;
00606 TeamBalanceBot[1] = 0;
00607 TeamBalanceBot[2] = 1;
00608 TeamBalanceBot[3] = 0;
00609
00610 if (( NbBots == 0 ) && ( DefaultConfig == 0 ))
00611 {
00612 for (i=0;i<N;i++)
00613 {
00614 if ( PT[i] == 0 )
00615 NbTeam0 ++;
00616 else
00617 NbTeam1 ++;
00618 }
00619
00620 i = 0;
00621 while ( NbTeam0 != NbTeam1 )
00622 {
00623 if ( NbTeam0 < NbTeam1 )
00624 {
00625 TeamBalanceBot[i] = 0;
00626 NbTeam0 ++;
00627 }
00628 else
00629 {
00630 TeamBalanceBot[i] = 1;
00631 NbTeam1 ++;
00632 }
00633 i++;
00634 }
00635
00636 URL =
00637 /*"?Map="$*/Map$
00638 "?Game="$GetGameInfoText(OnGame)$
00639 "?IP="$IdealPC$
00640 "?NP="$N$
00641 "?FR="$OnFrag$
00642 "?TI="$OnTime$
00643 "?NBots="$(IdealPC - N)$
00644 "?TB0="$TeamBalanceBot[0]$
00645 "?NB0="$1$
00646 "?TB1="$TeamBalanceBot[1]$
00647 "?NB1="$2$
00648 "?TB2="$TeamBalanceBot[2]$
00649 "?NB2="$2$
00650 "?TB3="$TeamBalanceBot[3]$
00651 "?NB3="$0$
00652 "?TB4="$1$
00653 "?NB4="$0$
00654 "?TB5="$0$
00655 "?NB5="$3$
00656 "?TB6="$1$
00657 "?NB6="$3$
00658 "?PC0="$PC[0]$
00659 "?PC1="$PC[1]$
00660 "?PC2="$PC[2]$
00661 "?PC3="$PC[3]$
00662 "?PT0="$PT[0]$
00663 "?PT1="$PT[1]$
00664 "?PT2="$PT[2]$
00665 "?PT3="$PT[3];
00666 }
00667 else
00668 {
00669 URL =
00670 /*"?Map="$*/Map$
00671 "?Game="$GetGameInfoText(OnGame)$
00672 "?IP="$IdealPC$
00673 "?NP="$N$
00674 "?FR="$OnFrag$
00675 "?TI="$OnTime$
00676 "?NBots="$NbBots$
00677 "?TB0="$TeamBot[0]$
00678 "?NB0="$NivBot[0]$
00679 "?TB1="$TeamBot[1]$
00680 "?NB1="$NivBot[1]$
00681 "?TB2="$TeamBot[2]$
00682 "?NB2="$NivBot[2]$
00683 "?TB3="$TeamBot[3]$
00684 "?NB3="$NivBot[3]$
00685 "?TB4="$TeamBot[4]$
00686 "?NB4="$NivBot[4]$
00687 "?TB5="$TeamBot[5]$
00688 "?NB5="$NivBot[5]$
00689 "?TB6="$TeamBot[6]$
00690 "?NB6="$NivBot[6]$
00691 "?PC0="$PC[0]$
00692 "?PC1="$PC[1]$
00693 "?PC2="$PC[2]$
00694 "?PC3="$PC[3]$
00695 "?PT0="$PT[0]$
00696 "?PT1="$PT[1]$
00697 "?PT2="$PT[2]$
00698 "?PT3="$PT[3];
00699 }
00700
00701 Mutator = GetMutatorText( OnGame );
00702 if ( Mutator!="" )
00703 URL = URL$"?Mutator="$Mutator;
00704
00705 // skin selection
00706 MyClass = GetPlayerOwner().GetDefaultURL("Class");
00707 SkinCode = class'MeshSkinList'.default.MeshSkinListInfo[0].SkinCode;
00708 for (i=0;i<class'MeshSkinList'.default.MeshSkinListInfo.Length;i++)
00709 {
00710 if ( MyClass == class'MeshSkinList'.default.MeshSkinListInfo[i].SkinName )
00711 {
00712 SkinCode = class'MeshSkinList'.default.MeshSkinListInfo[i].SkinCode;
00713 break;
00714 }
00715 }
00716 URL = URL$"?SK="$SkinCode;
00717
00718 // name selection
00719 MyName = GetPlayerOwner().GetDefaultURL("Name");
00720 URL = URL$"?Name="$MyName;
00721
00722 myRoot.CloseAll(true);
00723 myRoot.GotoState('');
00724 myRoot.bProfileMenu = false;
00725 myRoot.DefaultUserConfig = GetPlayerOwner().UserPadConfig;
00726 GetPlayerOwner().AttribPadToViewport();
00727 log("TRAVELLING w/URL: "$URL);
00728 GetPlayerOwner().ClientTravel(URL, TRAVEL_Absolute, false);
00729 }
00730
00731
00732 // if subclassed, this parent function must always be called first
00733 function string GetPageParameters()
00734 {
00735 return Super.GetPageParameters()$"?GameType="$GameCombo.GetSelectedIndex()$"?MapName="$MapCombo.GetSelectedIndex()$"?FragLimit="$FragEdit.GetValue()$"?TimeLimit="$TimeEdit.GetValue()$"?NP="$PlayerCombo.GetValue()$"?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]$"?PC0="$PC[0]$"?PC1="$PC[1]$"?PC2="$PC[2]$"?PC3="$PC[3]$"?PT0="$PT[0]$"?PT1="$PT[1]$"?PT2="$PT[2]$"?PT3="$PT[3]$"?CFG="$GetPlayerOwner().UserPadConfig;
00736 }
00737
00738 // if GetPageParameters() is subclassed, you'd better have this one too !
00739 function SetPageParameters(string PageParameters)
00740 {
00741 local int CFG;
00742
00743 log("SetPageParameters("$PageParameters$") called for "$self);
00744
00745 OnGame = int(localParseOption(PageParameters, "GameType", "0"));
00746 GameCombo.SetSelectedIndex(OnGame);
00747 GameChanged();
00748
00749 OnMap = int(localParseOption(PageParameters, "MapName", "0"));
00750 MapCombo.SetSelectedIndex(OnMap);
00751 MapChanged();
00752
00753 OnFrag = int(localParseOption(PageParameters, "FragLimit", "0"));
00754 FragChanged();
00755
00756 OnTime = int(localParseOption(PageParameters, "TimeLimit", "0"));
00757 TimeChanged();
00758
00759 OnPlayer = int( localParseOption( PageParameters,"NP", "0") );
00760 PlayerCombo.SetValue(OnPlayer);
00761
00762 DefaultConfig = int( localParseOption( PageParameters,"DC", "0") );
00763
00764 NbBots = int( localParseOption( PageParameters,"NBots", "0") );
00765
00766 TeamBot[0] = int( localParseOption( PageParameters,"TB0", "1") );
00767 NivBot[0] = int( localParseOption( PageParameters,"NB0", "1") );
00768 TeamBot[1] = int( localParseOption( PageParameters,"TB1", "0") );
00769 NivBot[1] = int( localParseOption( PageParameters,"NB1", "2") );
00770 TeamBot[2] = int( localParseOption( PageParameters,"TB2", "1") );
00771 NivBot[2] = int( localParseOption( PageParameters,"NB2", "2") );
00772 TeamBot[3] = int( localParseOption( PageParameters,"TB3", "0") );
00773 NivBot[3] = int( localParseOption( PageParameters,"NB3", "0") );
00774 TeamBot[4] = int( localParseOption( PageParameters,"TB4", "1") );
00775 NivBot[4] = int( localParseOption( PageParameters,"NB4", "0") );
00776 TeamBot[5] = int( localParseOption( PageParameters,"TB5", "0") );
00777 NivBot[5] = int( localParseOption( PageParameters,"NB5", "3") );
00778 TeamBot[6] = int( localParseOption( PageParameters,"TB6", "1") );
00779 NivBot[6] = int( localParseOption( PageParameters,"NB6", "3") );
00780 PC[0] = int( localParseOption( PageParameters,"PC0", "0") );
00781 PC[1] = int( localParseOption( PageParameters,"PC1", "0") );
00782 PC[2] = int( localParseOption( PageParameters,"PC2", "1") );
00783 PC[3] = int( localParseOption( PageParameters,"PC3", "1") );
00784 PT[0] = int( localParseOption( PageParameters,"PT0", "0") );
00785 PT[1] = int( localParseOption( PageParameters,"PT1", "1") );
00786 PT[2] = int( localParseOption( PageParameters,"PT2", "0") );
00787 PT[3] = int( localParseOption( PageParameters,"PT3", "1") );
00788
00789 CFG = int( localParseOption( PageParameters,"CFG","0") );
00790
00791 // reinit controls
00792 if ( myRoot.CurrentPF == 1 )
00793 {
00794 switch ( CFG )
00795 {
00796 case 0:
00797 // specific inputs for classic
00798 GetPlayerOwner().ConsoleCommand("SET XIIIPlayerController ConfigType CT_StrafeLookNotSameAxis");
00799 GetPlayerOwner().ConsoleCommand("SET Input JoyX Axis aStrafe SpeedBase=1.0 DeadZone=0.4");
00800 GetPlayerOwner().ConsoleCommand("SET Input JoyU Axis aTurn SpeedBase=1.0 DeadZone=0.4");
00801 break;
00802 case 1:
00803 // specific inputs for goofy
00804 GetPlayerOwner().ConsoleCommand("SET XIIIPlayerController ConfigType CT_StrafeLookSameAxis");
00805 GetPlayerOwner().ConsoleCommand("SET Input JoyX Axis aTurn SpeedBase=1.0 DeadZone=0.4");
00806 GetPlayerOwner().ConsoleCommand("SET Input JoyU Axis aStrafe SpeedBase=1.0 DeadZone=0.4");
00807 break;
00808 }
00809 }
00810 else if ( myRoot.CurrentPF == 2 )
00811 {
00812
00813 }
00814 /* else if ( myRoot.CurrentPF == 3 )
00815 {
00816 switch ( CFG )
00817 {
00818 case 0:
00819 // specific inputs for classic
00820 GetPlayerOwner().ConsoleCommand("set XIIIPlayerController ConfigType CT_StrafeLookNotSameAxis");
00821 GetPlayerOwner().ConsoleCommand("SET Input JoyX Axis aStrafe SpeedBase=1.0 DeadZone=0.0");
00822 GetPlayerOwner().ConsoleCommand("SET Input JoyU Axis aTurn SpeedBase=1.0 DeadZone=0.0");
00823 break;
00824 case 1:
00825 // specific inputs for goofy
00826 GetPlayerOwner().ConsoleCommand("set XIIIPlayerController ConfigType CT_StrafeLookSameAxis");
00827 GetPlayerOwner().ConsoleCommand("SET Input JoyX Axis aTurn SpeedBase=1.0 DeadZone=0.0");
00828 GetPlayerOwner().ConsoleCommand("SET Input JoyU Axis aStrafe SpeedBase=1.0 DeadZone=0.0");
00829 break;
00830 }
00831 }*/
00832 }
00833
00834
00835
00836
00837
00838 defaultproperties
00839 {
00840 TitleText="Split Screen Game"
00841 GameText="Game Type"
00842 MapText="Map Name"
00843 PlayerText="Number of Player(s)"
00844 FriendlyText="Friendly Fire"
00845 FragText="Points Limit"
00846 TimeText="Time Limit"
00847 BotsText="Bots Setup"
00848 PlayersText="Players Setup"
00849 OKText="Create"
00850 sBackground(0)="XIIIMenuStart.multi_Bg01"
00851 sBackground(1)="XIIIMenuStart.multi_Bg02"
00852 sBackground(2)="XIIIMenuStart.multi_Bg03"
00853 sBackground(5)="XIIIMenuStart.Characters01"
00854 sBackground(6)="XIIIMenuStart.Characters02"
00855 sHighlight="XIIIMenuStart.barreselectmenuoptadv"
00856 WinningScore=10
00857 MaxTime=5
00858 TeamBot(0)=1
00859 TeamBot(2)=1
00860 TeamBot(4)=1
00861 TeamBot(6)=1
00862 NivBot(0)=1
00863 NivBot(1)=2
00864 NivBot(2)=2
00865 NivBot(5)=3
00866 NivBot(6)=3
00867 TempSound=Sound'XIIIsound.Interface__AmbianceMenu.AmbianceMenu__hMulti2'
00868 bUseDefaultBackground=False
00869 bForceHelp=True
00870 }
|