Core.Object | +--Engine.Console | +--UWindow.WindowConsole | +--UMenu.UnrealConsole | +--Botpack.TournamentConsole | +--UTMenu.UTConsole
string
InterimObjectType
ManagerWindowClass
MessageWindow
SavedPasswords[10]
SlotWindowType
byte
SpeechKey
SpeechWindow
UTLadderASClass
UTLadderCTFClass
UTLadderChalClass
UTLadderDMClass
UTLadderDMTestClass
UTLadderDOMClass
UTLadderDOMTestClass
bool
bTimeDemoIsEntry
bShowMessage,
bWasShowingMessage
void
PrintTimeDemoResult()
TimeDemoRender(Canvas C)
StartTimeDemo()
MenuCmd(int Menu, int Item)
ConnectWithPassword(string URL, string Password)
ShowObjectives()
AddMessage(string NewMessage)
HideMessage()
ShowMessage()
CreateMessage()
/* * Tutorial Message Interface */
HideSpeech()
ShowSpeech()
CreateSpeech()
/* * Speech */
NotifyLevelChange()
LoadGame()
StartNewGame()
EvaluateMatch(int PendingChange, bool Evaluate)
CreateRootWindow(Canvas Canvas)
CloseUWindow()
LaunchUWindow()
00001 class UTConsole extends TournamentConsole; 00002 00003 // Speech 00004 var SpeechWindow SpeechWindow; 00005 var globalconfig byte SpeechKey; 00006 00007 // Timedemo 00008 var bool bTimeDemoIsEntry; 00009 00010 // Message 00011 var bool bShowMessage, bWasShowingMessage; 00012 var MessageWindow MessageWindow; 00013 00014 var string ManagerWindowClass; 00015 var string UTLadderDMClass; 00016 var string UTLadderCTFClass; 00017 var string UTLadderDOMClass; 00018 var string UTLadderASClass; 00019 var string UTLadderChalClass; 00020 00021 var string UTLadderDMTestClass; 00022 var string UTLadderDOMTestClass; 00023 00024 var string InterimObjectType; 00025 var string SlotWindowType; 00026 00027 var config string SavedPasswords[10]; 00028 00029 event PostRender( canvas Canvas ) 00030 { 00031 Super.PostRender(Canvas); 00032 00033 if(bShowSpeech || bShowMessage) 00034 RenderUWindow( Canvas ); 00035 } 00036 00037 event bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta ) 00038 { 00039 local ManagerWindowStub ManagerMenu; 00040 00041 if( Action!=IST_Press ) 00042 return false; 00043 00044 if( Key==SpeechKey ) 00045 { 00046 if ( !bShowSpeech && !bTyping ) 00047 { 00048 ShowSpeech(); 00049 bQuickKeyEnable = True; 00050 LaunchUWindow(); 00051 } 00052 return true; 00053 } 00054 00055 if( Key == IK_Escape ) 00056 { 00057 if ( (Viewport.Actor.Level.NetMode == NM_Standalone) 00058 && Viewport.Actor.Level.Game.IsA('TrophyGame') ) 00059 { 00060 bQuickKeyEnable = False; 00061 LaunchUWindow(); 00062 bLocked = True; 00063 UMenuRootWindow(Root).MenuBar.HideWindow(); 00064 ManagerMenu = ManagerWindowStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(ManagerWindowClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00065 return true; 00066 } 00067 } 00068 return Super.KeyEvent(Key, Action, Delta ); 00069 } 00070 00071 event Tick( float Delta ) 00072 { 00073 Super.Tick( Delta ); 00074 00075 if ( (Root != None) && bShowMessage ) 00076 Root.DoTick( Delta ); 00077 } 00078 00079 state UWindow 00080 { 00081 event bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta ) 00082 { 00083 if(Action==IST_Release && Key==SpeechKey) 00084 { 00085 if (bShowSpeech) 00086 HideSpeech(); 00087 return True; 00088 } 00089 00090 if ( bShowSpeech && (SpeechWindow != None) ) 00091 { 00092 00093 //forward input to speech window 00094 if ( SpeechWindow.KeyEvent(Key, Action, Delta) ) 00095 return true; 00096 } 00097 00098 return Super.KeyEvent(Key, Action, Delta); 00099 } 00100 00101 event Tick( float Delta ) 00102 { 00103 local Music MenuSong; 00104 00105 Super.Tick( Delta ); 00106 if (Root == None) 00107 return; 00108 if (Root.GetPlayerOwner().Song == None) 00109 { 00110 MenuSong = Music(DynamicLoadObject("utmenu23.utmenu23", class'Music')); 00111 Root.GetPlayerOwner().ClientSetMusic( MenuSong, 0, 0, MTRAN_Fade ); 00112 } 00113 } 00114 exec function MenuCmd(int Menu, int Item) 00115 { 00116 } 00117 } 00118 00119 state Typing 00120 { 00121 exec function MenuCmd(int Menu, int Item) 00122 { 00123 } 00124 } 00125 00126 function LaunchUWindow() 00127 { 00128 Super.LaunchUWindow(); 00129 00130 if( !bQuickKeyEnable && 00131 ( Left(Viewport.Actor.Level.GetLocalURL(), 9) ~= "cityintro" || 00132 Left(Viewport.Actor.Level.GetLocalURL(), 9) ~= "utcredits") ) 00133 Viewport.Actor.ClientTravel( "?entry", TRAVEL_Absolute, False ); 00134 00135 if (bShowMessage) 00136 { 00137 bWasShowingMessage = True; 00138 HideMessage(); 00139 } 00140 } 00141 00142 function CloseUWindow() 00143 { 00144 Super.CloseUWindow(); 00145 00146 if (bWasShowingMessage) 00147 ShowMessage(); 00148 } 00149 00150 function CreateRootWindow(Canvas Canvas) 00151 { 00152 Super.CreateRootWindow(Canvas); 00153 00154 // Create the speech window. 00155 CreateSpeech(); 00156 00157 // Create the message window. 00158 CreateMessage(); 00159 } 00160 00161 function EvaluateMatch(int PendingChange, bool Evaluate) 00162 { 00163 local UTLadderStub LadderMenu; 00164 local ManagerWindowStub ManagerMenu; 00165 00166 LaunchUWindow(); 00167 bNoDrawWorld = True; 00168 bLocked = True; 00169 UMenuRootWindow(Root).MenuBar.HideWindow(); 00170 00171 switch (PendingChange) 00172 { 00173 case 0: 00174 ManagerMenu = ManagerWindowStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(ManagerWindowClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00175 break; 00176 case 1: 00177 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderDMClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00178 if (Evaluate) 00179 LadderMenu.EvaluateMatch(); 00180 break; 00181 case 2: 00182 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderCTFClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00183 if (Evaluate) 00184 LadderMenu.EvaluateMatch(); 00185 break; 00186 case 3: 00187 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderDOMClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00188 if (Evaluate) 00189 LadderMenu.EvaluateMatch(); 00190 break; 00191 case 4: 00192 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderASClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00193 if (Evaluate) 00194 LadderMenu.EvaluateMatch(); 00195 break; 00196 case 5: 00197 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderChalClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00198 if (Evaluate) 00199 LadderMenu.EvaluateMatch(); 00200 break; 00201 case 6: 00202 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderDMTestClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00203 if (Evaluate) 00204 LadderMenu.EvaluateMatch(); 00205 break; 00206 case 7: 00207 LadderMenu = UTLadderStub(Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject(UTLadderDOMTestClass, Class'Class')), 100, 100, 200, 200, Root, True)); 00208 if (Evaluate) 00209 LadderMenu.EvaluateMatch(); 00210 break; 00211 } 00212 } 00213 00214 function StartNewGame() 00215 { 00216 local class<Info> InterimObjectClass; 00217 local Info InterimObject; 00218 00219 Log("Starting a new game..."); 00220 InterimObjectClass = Class<Info>(DynamicLoadObject(InterimObjectType, Class'Class')); 00221 InterimObject = Root.GetPlayerOwner().Spawn(InterimObjectClass, Root.GetPlayerOwner()); 00222 } 00223 00224 function LoadGame() 00225 { 00226 // Clear all slots. 00227 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_None, 0.1); 00228 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_Misc, 0.1); 00229 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_Pain, 0.1); 00230 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_Interact, 0.1); 00231 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_Talk, 0.1); 00232 Root.GetPlayerOwner().PlaySound(sound'LadderSounds.ladvance', SLOT_Interface, 0.1); 00233 00234 // Create load game dialog. 00235 bNoDrawWorld = True; 00236 bLocked = True; 00237 UMenuRootWindow(Root).MenuBar.HideWindow(); 00238 00239 // Go to the slot window. 00240 Root.CreateWindow(Class<UWindowWindow>(DynamicLoadObject(SlotWindowType, class'Class')), 100, 100, 200, 200, Root, True); 00241 } 00242 00243 function NotifyLevelChange() 00244 { 00245 Super.NotifyLevelChange(); 00246 00247 bWasShowingMessage = False; 00248 HideMessage(); 00249 } 00250 00251 /* 00252 * Speech 00253 */ 00254 00255 function CreateSpeech() 00256 { 00257 SpeechWindow = SpeechWindow(Root.CreateWindow(Class'SpeechWindow', 100, 100, 200, 200)); 00258 SpeechWindow.bLeaveOnScreen = True; 00259 if(bShowSpeech) 00260 { 00261 Root.SetMousePos(0, 132.0/768 * Root.WinWidth); 00262 SpeechWindow.HideWindow(); 00263 SpeechWindow.SlideInWindow(); 00264 } 00265 else 00266 SpeechWindow.HideWindow(); 00267 } 00268 00269 function ShowSpeech() 00270 { 00271 if ( bUWindowActive ) 00272 return; 00273 bShowSpeech = True; 00274 if(!bCreatedRoot) 00275 CreateRootWindow(None); 00276 00277 Root.SetMousePos(0, 132.0/768 * Root.WinWidth); 00278 SpeechWindow.SlideInWindow(); 00279 if ( ChallengeHUD(Viewport.Actor.myHUD) != None ) 00280 ChallengeHUD(Viewport.Actor.myHUD).bHideCenterMessages = true; 00281 } 00282 00283 function HideSpeech() 00284 { 00285 bShowSpeech = False; 00286 if ( ChallengeHUD(Viewport.Actor.myHUD) != None ) 00287 ChallengeHUD(Viewport.Actor.myHUD).bHideCenterMessages = false; 00288 00289 if (SpeechWindow != None) 00290 SpeechWindow.SlideOutWindow(); 00291 } 00292 00293 /* 00294 * Tutorial Message Interface 00295 */ 00296 00297 function CreateMessage() 00298 { 00299 MessageWindow = MessageWindow(Root.CreateWindow(Class'MessageWindow', 100, 100, 200, 200)); 00300 MessageWindow.bLeaveOnScreen = True; 00301 MessageWindow.HideWindow(); 00302 } 00303 00304 function ShowMessage() 00305 { 00306 if (MessageWindow != None) 00307 { 00308 bWasShowingMessage = False; 00309 bShowMessage = True; 00310 MessageWindow.ShowWindow(); 00311 } 00312 } 00313 00314 function HideMessage() 00315 { 00316 if (MessageWindow != None) 00317 { 00318 bShowMessage = False; 00319 MessageWindow.HideWindow(); 00320 } 00321 } 00322 00323 function AddMessage( string NewMessage ) 00324 { 00325 MessageWindow.AddMessage( NewMessage ); 00326 } 00327 00328 exec function ShowObjectives() 00329 { 00330 local GameReplicationInfo GRI; 00331 local class<GameInfo> AssaultClass, GameClass; 00332 00333 if(!bCreatedRoot) 00334 CreateRootWindow(None); 00335 00336 AssaultClass = class<GameInfo>(DynamicLoadObject("Botpack.Assault", class'Class')); 00337 00338 foreach Root.GetPlayerOwner().AllActors(class'GameReplicationInfo', GRI) 00339 { 00340 GameClass = class<GameInfo>(DynamicLoadObject(GRI.GameClass, class'Class')); 00341 if ( ClassIsChildOf(GameClass, AssaultClass) ) 00342 { 00343 bLocked = True; 00344 bNoDrawWorld = True; 00345 UMenuRootWindow(Root).MenuBar.HideWindow(); 00346 LaunchUWindow(); 00347 Root.CreateWindow(class<UWindowWindow>(DynamicLoadObject("UTMenu.InGameObjectives", class'Class')), 100, 100, 100, 100); 00348 } 00349 } 00350 } 00351 00352 event ConnectFailure( string FailCode, string URL ) 00353 { 00354 local int i, j; 00355 local string Server; 00356 local UTPasswordWindow W; 00357 00358 if(FailCode == "NEEDPW") 00359 { 00360 Server = Left(URL, InStr(URL, "/")); 00361 for(i=0; i<10; i++) 00362 { 00363 j = InStr(SavedPasswords[i], "="); 00364 if(Left(SavedPasswords[i], j) == Server) 00365 { 00366 Viewport.Actor.ClearProgressMessages(); 00367 Viewport.Actor.ClientTravel(URL$"?password="$Mid(SavedPasswords[i], j+1), TRAVEL_Absolute, false); 00368 return; 00369 } 00370 } 00371 } 00372 00373 if(FailCode == "NEEDPW" || FailCode == "WRONGPW") 00374 { 00375 if(FailCode=="NEEDPW") 00376 Viewport.Actor.ClearProgressMessages(); 00377 CloseUWindow(); 00378 bQuickKeyEnable = True; 00379 LaunchUWindow(); 00380 W = UTPasswordWindow(Root.CreateWindow(class'UTPasswordWindow', 100, 100, 100, 100)); 00381 UTPasswordCW(W.ClientArea).URL = URL; 00382 } 00383 } 00384 00385 function ConnectWithPassword(string URL, string Password) 00386 { 00387 local int i; 00388 local string Server; 00389 local bool bFound; 00390 00391 Viewport.Actor.ClearProgressMessages(); 00392 00393 if(Password == "") 00394 { 00395 Viewport.Actor.ClientTravel(URL, TRAVEL_Absolute, false); 00396 return; 00397 } 00398 00399 bFound = False; 00400 Server = Left(URL, InStr(URL, "/")); 00401 for(i=0; i<10; i++) 00402 { 00403 if(Left(SavedPasswords[i], InStr(SavedPasswords[i], "=")) == Server) 00404 { 00405 SavedPasswords[i] = Server$"="$Password; 00406 bFound = True; 00407 break; 00408 } 00409 } 00410 if(!bFound) 00411 { 00412 for(i=9; i>0; i--) 00413 SavedPasswords[i] = SavedPasswords[i-1]; 00414 SavedPasswords[0] = Server$"="$Password; 00415 } 00416 SaveConfig(); 00417 Viewport.Actor.ClientTravel(URL$"?password="$Password, TRAVEL_Absolute, false); 00418 } 00419 00420 exec function MenuCmd(int Menu, int Item) 00421 { 00422 if (bLocked) 00423 return; 00424 00425 bQuickKeyEnable = False; 00426 LaunchUWindow(); 00427 if(!bCreatedRoot) 00428 CreateRootWindow(None); 00429 UMenuRootWindow(Root).MenuBar.MenuCmd(Menu, Item); 00430 } 00431 00432 function StartTimeDemo() 00433 { 00434 TimeDemoFont = None; 00435 Super.StartTimeDemo(); 00436 bTimeDemoIsEntry = Viewport.Actor.Level.Game != None 00437 && Viewport.Actor.Level.Game.IsA('UTIntro') 00438 && !(Left(Viewport.Actor.Level.GetLocalURL(), 9) ~= "cityintro"); 00439 } 00440 00441 function TimeDemoRender( Canvas C ) 00442 { 00443 if( TimeDemoFont == None ) 00444 TimeDemoFont = class'FontInfo'.Static.GetStaticSmallFont(C.ClipX); 00445 00446 if( !bTimeDemoIsEntry ) 00447 Super.TimeDemoRender(C); 00448 else 00449 { 00450 if( Viewport.Actor.Level.Game == None || 00451 !Viewport.Actor.Level.Game.IsA('UTIntro') || 00452 (Left(Viewport.Actor.Level.GetLocalURL(), 9) ~= "cityintro") 00453 ) 00454 { 00455 bTimeDemoIsEntry = False; 00456 Super.TimeDemoRender(C); 00457 } 00458 } 00459 } 00460 00461 function PrintTimeDemoResult() 00462 { 00463 if( !bTimeDemoIsEntry ) 00464 Super.PrintTimeDemoResult(); 00465 } 00466 00467 defaultproperties 00468 { 00469 SpeechKey=86 00470 ManagerWindowClass="UTMenu.ManagerWindow" 00471 UTLadderDMClass="UTMenu.UTLadderDM" 00472 UTLadderCTFClass="UTMenu.UTLadderCTF" 00473 UTLadderDOMClass="UTMenu.UTLadderDOM" 00474 UTLadderASClass="UTMenu.UTLadderAS" 00475 UTLadderChalClass="UTMenu.UTLadderChal" 00476 UTLadderDMTestClass="UTMenu.UTLadderDMTest" 00477 UTLadderDOMTestClass="UTMenu.UTLadderDOMTest" 00478 InterimObjectType="UTMenu.NewGameInterimObject" 00479 SlotWindowType="UTMenu.SlotWindow" 00480 }