00001 class XIIIMenuPlayersSetupClient extends XIIIMenuMultiBase;
00002
00003 var int OnCombo, OnMenu;
00004
00005 var XIIIButton PlayerButton[4];
00006 var XIIIComboControl PlayerClassButton[4];
00007 var XIIICheckBoxControl PlayerTeamButton[4];
00008
00009 var localized string ClassText, TeamText, BlueTeam, RedTeam, PlayerText;
00010
00011 var string URL, Map;
00012 var int PC[4], PT[4], NbClasses;
00013 var int GameTypeIndex, IPC, N, MaxBots, FragLimit, TimeLimit, BotNumber, TeamBot[7], NivBot[7], FriendlyFire, DefaultConfig;
00014
00015 var string sBackground, sHighlight;
00016 var texture tBackground, tHighlight;
00017
00018
00019 //------------------------------------------------------------------------
00020 event HandleParameters(string Param1, string Param2)
00021 {
00022 if ( Param1!="" )
00023 {
00024 URL = Param1;
00025 log("Param1="$URL);
00026 Map = localParseOption ( URL, "Map", "");
00027 GameTypeIndex = int(localParseOption ( URL, "GameTypeIndex", "0"));
00028 IPC = int( localParseOption( URL,"IP", "0") );
00029 N = int( localParseOption( URL,"NP", "0") );
00030 FriendlyFire = int( localParseOption( URL,"FF", "0") );
00031 FragLimit = int( localParseOption( URL,"FR", "0") );
00032 TimeLimit = int( localParseOption( URL,"TI", "0") );
00033 DefaultConfig = int( localParseOption( URL,"DC", "0") );
00034 BotNumber = int( localParseOption( URL,"NBots", "0") );
00035 TeamBot[0] = int( localParseOption( URL,"TB0", "1") );
00036 NivBot[0] = int( localParseOption( URL,"NB0", "1") );
00037 TeamBot[1] = int( localParseOption( URL,"TB1", "0") );
00038 NivBot[1] = int( localParseOption( URL,"NB1", "2") );
00039 TeamBot[2] = int( localParseOption( URL,"TB2", "1") );
00040 NivBot[2] = int( localParseOption( URL,"NB2", "2") );
00041 TeamBot[3] = int( localParseOption( URL,"TB3", "0") );
00042 NivBot[3] = int( localParseOption( URL,"NB3", "0") );
00043 TeamBot[4] = int( localParseOption( URL,"TB4", "1") );
00044 NivBot[4] = int( localParseOption( URL,"NB4", "0") );
00045 TeamBot[5] = int( localParseOption( URL,"TB5", "0") );
00046 NivBot[5] = int( localParseOption( URL,"NB5", "3") );
00047 TeamBot[6] = int( localParseOption( URL,"TB6", "1") );
00048 NivBot[6] = int( localParseOption( URL,"NB6", "3") );
00049 PC[0] = int( localParseOption( URL,"PC0", "0") );
00050 PC[1] = int( localParseOption( URL,"PC1", "0") );
00051 PC[2] = int( localParseOption( URL,"PC2", "1") );
00052 PC[3] = int( localParseOption( URL,"PC3", "1") );
00053 PT[0] = int( localParseOption( URL,"PT0", "0") );
00054 PT[1] = int( localParseOption( URL,"PT1", "1") );
00055 PT[2] = int( localParseOption( URL,"PT2", "0") );
00056 PT[3] = int( localParseOption( URL,"PT3", "1") );
00057
00058 log(self@"---> Classes :"@PC[0]@PC[1]@PC[2]@PC[3]);
00059 log(self@"---> Teams :"@PT[0]@PT[1]@PT[2]@PT[3]);
00060 }
00061 }
00062
00063
00064 function Created()
00065 {
00066 local int i,j, MyClassIndex;
00067
00068 Super.Created();
00069
00070 tBackGround = texture(DynamicLoadObject(sBackGround, class'Texture'));
00071 tHighlight = texture(DynamicLoadObject(sHighlight, class'Texture'));
00072
00073 NbClasses = class'MPClassList'.default.ClassListInfo.Length;
00074 log("NbClasses="$NbClasses);
00075 for (i=0;i<4;i++)
00076 {
00077 PlayerTeamButton[i] = XIIICheckboxControl(CreateControl(class'XIIICheckboxControl', 190, (50 + 100*i)*fScaleTo, 400, 25));
00078 PlayerTeamButton[i].Text = TeamText;
00079 PlayerTeamButton[i].sYes = BlueTeam;
00080 PlayerTeamButton[i].sNo = RedTeam;
00081 PlayerTeamButton[i].bWhiteColorOnlyWhenFocused = true;
00082 PlayerTeamButton[i].bChecked = bool(PT[i]);
00083
00084 PlayerClassButton[i] = XIIIComboControl(CreateControl(class'XIIIComboControl', 190, (90 + 100*i)*fScaleTo, 410, 25));
00085 PlayerClassButton[i].Text = ClassText;
00086 PlayerClassButton[i].bArrows = true;
00087 PlayerClassButton[i].bCalculateSize = false;
00088 PlayerClassButton[i].FirstBoxWidth = 230;
00089 for (j=0;j<NbClasses;j++)
00090 {
00091 PlayerClassButton[i].AddItem(class'MPClassList'.default.ClassListInfo[j].ReadableName);
00092 if ( PC[i] == j )
00093 MyClassIndex = j;
00094 }
00095 PlayerClassButton[i].SetSelectedIndex(MyClassIndex);
00096
00097 PlayerButton[i] = XIIIButton(CreateControl(class'XIIIButton', 35, (50 + 100*i)*fScaleTo, 130, 25));
00098 PlayerButton[i].Text = PlayerText@(i + 1);
00099 PlayerButton[i].bNeverFocus = true;
00100 PlayerButton[i].bVisible = true;
00101
00102 Controls[2*i] = PlayerTeamButton[i];
00103 Controls[2*i + 1] = PlayerClassButton[i];
00104 Controls[8 + i] = PlayerButton[i];
00105
00106 }
00107
00108 AfterCreate();
00109 }
00110
00111 function AfterCreate()
00112 {
00113 local int i,j, NbPads;
00114
00115 //NbPads = GetPlayerOwner().GetPadNumber();
00116 NbPads = 4;
00117
00118 if ( N > NbPads )
00119 N = NbPads;
00120
00121 for (i=0;i<4;i++)
00122 {
00123 if ( i<N )
00124 {
00125 PlayerClassButton[i].bNeverFocus = false;
00126 PlayerClassButton[i].bVisible = true;
00127 PlayerTeamButton[i].bNeverFocus = false;
00128 PlayerTeamButton[i].bVisible = true;
00129 PlayerButton[i].bVisible = true;
00130
00131 }
00132 else
00133 {
00134 PlayerClassButton[i].bNeverFocus = true;
00135 PlayerClassButton[i].bVisible = false;
00136 PlayerTeamButton[i].bNeverFocus = true;
00137 PlayerTeamButton[i].bVisible = false;
00138 PlayerButton[i].bVisible = false;
00139 }
00140
00141 // no sabotage class if we are not in sabotage mode
00142 if ( GameTypeIndex != SabotageIndex )
00143 {
00144 PlayerClassButton[i].bNeverFocus = true;
00145 PlayerClassButton[i].bVisible = false;
00146 }
00147 }
00148 }
00149
00150
00151 function ShowWindow()
00152 {
00153 Super.ShowWindow();
00154
00155 bShowBCK = true;
00156 bShowACC = true;
00157 }
00158
00159
00160 function Paint(Canvas C, float X, float Y)
00161 {
00162 local float W, H;
00163
00164 local array<string> MsgArray;
00165 local int v;
00166 local int Length;
00167 local int TextWith;
00168
00169
00170 Super.Paint(C, X, Y);
00171
00172 DrawStretchedTexture(C, 28*fRatioX, 28*fScaleTo*fRatioY, 584*fRatioX, 406*fRatioY*fScaleTo, myRoot.tFondNoir);
00173 DrawStretchedTexture(C, 30*fRatioX, 30*fScaleTo*fRatioY, 580*fRatioX, 402*fScaleTo*fRatioY, tBackGround);
00174
00175 OnMenu = FindComponentIndex(FocusedControl);
00176 C.Style = 5;
00177 C.DrawColor.A = 128;
00178 if (OnMenu%2 == 0)
00179 {
00180 DrawStretchedTexture(C, 175*fRatioX, (40 + 50*OnMenu)*fScaleTo*fRatioY, 420*fRatioX, 45*fScaleTo*fRatioY, tHighlight);
00181 }
00182 else
00183 {
00184 DrawStretchedTexture(C, 175*fRatioX, (80 + 50*(OnMenu - 1))*fScaleTo*fRatioY, 420*fRatioX, 45*fScaleTo*fRatioY, tHighlight);
00185 }
00186 C.Style = 1;
00187 C.DrawColor.A = 255;
00188 }
00189
00190
00191 function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
00192 {
00193 if (State==1)// IST_Press // to avoid auto-repeat
00194 {
00195 if (Key==0x0D/*IK_Enter*/)
00196 {
00197 URL =
00198 "?Map="$Map$
00199 "?IP="$IPC$
00200 "?NP="$N$
00201 "?FF="$FriendlyFire$
00202 "?FR="$FragLimit$
00203 "?TI="$TimeLimit$
00204 "?NBots="$BotNumber$
00205 "?DC="$DefaultConfig$
00206 "?TB0="$TeamBot[0]$
00207 "?NB0="$NivBot[0]$
00208 "?TB1="$TeamBot[1]$
00209 "?NB1="$NivBot[1]$
00210 "?TB2="$TeamBot[2]$
00211 "?NB2="$NivBot[2]$
00212 "?TB3="$TeamBot[3]$
00213 "?NB3="$NivBot[3]$
00214 "?TB4="$TeamBot[4]$
00215 "?NB4="$NivBot[4]$
00216 "?TB5="$TeamBot[5]$
00217 "?NB5="$NivBot[5]$
00218 "?TB6="$TeamBot[6]$
00219 "?NB6="$NivBot[6]$
00220 "?PC0="$PC[0]$
00221 "?PC1="$PC[1]$
00222 "?PC2="$PC[2]$
00223 "?PC3="$PC[3]$
00224 "?PT0="$PT[0]$
00225 "?PT1="$PT[1]$
00226 "?PT2="$PT[2]$
00227 "?PT3="$PT[3];
00228
00229 //log(URL);
00230
00231 myRoot.CloseMenu(true, URL);
00232 return true;
00233 }
00234 if ((Key==0x08/*IK_Backspace*/)|| (Key==0x1B))
00235 {
00236 myRoot.CloseMenu(true, URL);
00237 return true;
00238 }
00239 if (Key==0x26/*IK_Up*/)
00240 {
00241 PrevControl(FocusedControl);
00242 return true;
00243 }
00244 if (Key==0x28/*IK_Down*/)
00245 {
00246 NextControl(FocusedControl);
00247 return true;
00248 }
00249 if ((Key==0x25) || (Key==0x27))
00250 {
00251 OnMenu = FindComponentIndex(FocusedControl);
00252 if (OnMenu%2 == 0)
00253 {
00254 if (Key==0x25) XIIICheckBoxControl(FocusedControl).bChecked = true;
00255 else if (Key==0x27) XIIICheckBoxControl(FocusedControl).bChecked = false;
00256 PT[int( 0.5*OnMenu )] = int(XIIICheckBoxControl(FocusedControl).bChecked);
00257 }
00258 else if (OnMenu%2 == 1)
00259 {
00260 OnCombo = XIIIComboControl(FocusedControl).GetSelectedIndex();
00261 if (Key==0x25) OnCombo--;
00262 if (Key==0x27) OnCombo++;
00263 OnCombo = Clamp(OnCombo,0,( NbClasses - 1 ));
00264 XIIIComboControl(FocusedControl).SetSelectedIndex(OnCombo);
00265 PC[int( 0.5*( OnMenu - 1 ))] = OnCombo;
00266 }
00267 return true;
00268 }
00269 }
00270 return super.InternalOnKeyEvent(Key, state, delta);
00271 }
00272
00273
00274
00275
00276 defaultproperties
00277 {
00278 TitleText="Select your profile"
00279 ProfileText="Existing profile(s)"
00280 NewProfileText="New profile"
00281 CreateText="Create new profile"
00282 ConfirmCreateText="Save profile"
00283 ProfileFailureText="This profile already exists. Please enter a new profile."
00284 ConfirmQuitText="Do you really want to quit ?"
00285 ConfirmQuitTitle="Quit game"
00286 ProfileErrorTitle="Error with profile"
00287 ProfileErrorText="FAILED to use profile %name%"
00288 NoProfileText="Continue without profile ?|saving game will not be possible"
00289 ProfileInitText="FAILED to read profiles"
00290 sBackground(0)="XIIIMenuStart.Profile.Profilefond1"
00291 sBackground(1)="XIIIMenuStart.Profile.Profilefond2"
00292 sBackground(2)="XIIIMenuStart.Profile.Profilefond3"
00293 sBackground(3)="XIIIMenuStart.Profile.Profilefond4"
00294 bForceHelp=True
00295 Background=None
00296 bAllowedAsLast=True
00297 }
|