UTMenu
Class UTConsole

source: e:\games\UnrealTournament\UTMenu\Classes\UTConsole.uc
Core.Object
   |
   +--Engine.Console
      |
      +--UWindow.WindowConsole
         |
         +--UMenu.UnrealConsole
            |
            +--Botpack.TournamentConsole
               |
               +--UTMenu.UTConsole
Direct Known Subclasses:None

class UTConsole
extends Botpack.TournamentConsole


Variables
 string InterimObjectType
 string ManagerWindowClass
 MessageWindow MessageWindow
 string SavedPasswords[10]
 string SlotWindowType
 byte SpeechKey
 SpeechWindow SpeechWindow
 string UTLadderASClass
 string UTLadderCTFClass
 string UTLadderChalClass
 string UTLadderDMClass
 string UTLadderDMTestClass
 string UTLadderDOMClass
 string UTLadderDOMTestClass
 bool bTimeDemoIsEntry
 bShowMessage, bWasShowingMessage

States
Typing, UWindow
State Typing Function Summary
 void PrintTimeDemoResult()
 void TimeDemoRender(Canvas C)
 void StartTimeDemo()
 void MenuCmd(int Menu, int Item)
 void ConnectWithPassword(string URL, string Password)
 void ShowObjectives()
 void AddMessage(string NewMessage)
 void HideMessage()
 void ShowMessage()
 void CreateMessage()
     
/*
 * Tutorial Message Interface
 */
 void HideSpeech()
 void ShowSpeech()
 void CreateSpeech()
     
/*
 * Speech
 */
 void NotifyLevelChange()
 void LoadGame()
 void StartNewGame()
 void EvaluateMatch(int PendingChange, bool Evaluate)
 void CreateRootWindow(Canvas Canvas)
 void CloseUWindow()
 void LaunchUWindow()
 void MenuCmd(int Menu, int Item)


State UWindow Function Summary
 void MenuCmd(int Menu, int Item)



Source Code


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	}

End Source Code