UMenu
Class UMenuMenuBar

source: e:\games\UnrealTournament\UMenu\Classes\UMenuMenuBar.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowDialogControl
            |
            +--UWindow.UWindowListControl
               |
               +--UWindow.UWindowMenuBar
                  |
                  +--UMenu.UMenuMenuBar
Direct Known Subclasses:None

class UMenuMenuBar
extends UWindow.UWindowMenuBar


Variables
 string GameHelp
 string GameName
 string GameUMenuDefault
 Tool, Help
 string HelpHelp
 string HelpName
 UMenuHelpWindow HelpWindow
 string ModHelp
 HelpItem, ModItem
 UMenuModMenuList ModItems
 string ModMenuClass
 string ModName
 UMenuModMenu Mods
 string MultiplayerHelp
 string MultiplayerName
 string MultiplayerUMenuDefault
 UWindowMenuBarItem OldHelpItem
 UWindowMenuBarItem OldSelected
 UMenuOptionsMenu Options
 string OptionsHelp
 string OptionsName
 string OptionsUMenuDefault
 bool ShowHelp
 string StatsHelp
 string StatsName
 string ToolHelp
 string ToolName
 string VersionName
 string VersionText
 bool bShowMenu


Function Summary
 void BeforePaint(Canvas C, float X, float Y)
 void CloseUp()
 void Created()
 void DrawItem(Canvas C, UWindowList Item, float X, float Y, float W, float H)
 void DrawMenuBar(Canvas C)
 void HideWindow()
 void LMouseDown(float X, float Y)
 bool LoadMods()
 void MenuCmd(int Menu, int Item)
 void NotifyAfterLevelChange()
 void NotifyBeforeLevelChange()
 void NotifyQuitUnreal()
 void Select(UWindowMenuBarItem I)
 void SetHelp(string NewHelpText)
 void ShowHelpItem(UWindowMenuBarItem I)
 void ShowWindow()



Source Code


00001	class UMenuMenuBar extends UWindowMenuBar;
00002	
00003	var UWindowPulldownMenu Game, Multiplayer, Stats, Tool, Help;
00004	var UMenuModMenu Mods;
00005	var UMenuOptionsMenu Options;
00006	
00007	var UWindowMenuBarItem GameItem, MultiplayerItem, OptionsItem, StatsItem, ToolItem, HelpItem, ModItem;
00008	
00009	var UWindowMenuBarItem OldHelpItem;
00010	
00011	var UMenuHelpWindow HelpWindow;
00012	var config bool ShowHelp;
00013	
00014	var UWindowMenuBarItem OldSelected;
00015	var string VersionText;
00016	var bool bShowMenu;
00017	
00018	var localized string GameName;
00019	var localized string GameHelp;
00020	var localized string MultiplayerName;
00021	var localized string MultiplayerHelp;
00022	var localized string OptionsName;
00023	var localized string OptionsHelp;
00024	var localized string StatsName;
00025	var localized string StatsHelp;
00026	var localized string ToolName;
00027	var localized string ToolHelp;
00028	var localized string HelpName;
00029	var localized string HelpHelp;
00030	var localized string VersionName;
00031	var localized string ModName;
00032	var localized string ModHelp;
00033	
00034	var UMenuModMenuList ModItems;
00035	
00036	var config string GameUMenuDefault;
00037	var config string MultiplayerUMenuDefault;
00038	var config string OptionsUMenuDefault;
00039	var config string ModMenuClass;
00040	
00041	function Created()
00042	{
00043		local Class<UWindowPulldownMenu> GameUMenuType;
00044		local Class<UWindowPulldownMenu> MultiplayerUMenuType;
00045		local Class<UWindowPulldownMenu> OptionsUMenuType;
00046	
00047		local string GameUMenuName;
00048		local string MultiplayerUMenuName;
00049		local string OptionsUMenuName;
00050	
00051		Super.Created();
00052	
00053		bAlwaysOnTop = True;
00054	
00055		GameItem = AddItem(GameName);
00056		if(GetLevel().Game != None)
00057			GameUMenuName = GetLevel().Game.Default.GameUMenuType;
00058		else
00059			GameUMenuName = GameUMenuDefault;				
00060		GameUMenuType = Class<UWindowPulldownMenu>(DynamicLoadObject(GameUMenuName, class'Class'));
00061		Game = GameItem.CreateMenu(GameUMenuType);
00062	
00063		MultiplayerItem = AddItem(MultiplayerName);
00064		if(GetLevel().Game != None)
00065			MultiplayerUMenuName = GetLevel().Game.Default.MultiplayerUMenuType;
00066		else
00067			MultiplayerUMenuName = MultiplayerUMenuDefault;
00068		MultiplayerUMenuType = Class<UWindowPulldownMenu>(DynamicLoadObject(MultiplayerUMenuName, class'Class'));
00069		Multiplayer = MultiplayerItem.CreateMenu(MultiplayerUMenuType);
00070	
00071		OptionsItem = AddItem(OptionsName);
00072		if(GetLevel().Game != None)
00073			OptionsUMenuName = GetLevel().Game.Default.GameOptionsMenuType;
00074		else
00075			OptionsUMenuName = OptionsUMenuDefault;
00076		OptionsUMenuType = Class<UWindowPulldownMenu>(DynamicLoadObject(OptionsUMenuName, class'Class'));
00077		Options = UMenuOptionsMenu(OptionsItem.CreateMenu(OptionsUMenuType));
00078	
00079		StatsItem = AddItem(StatsName);
00080		Stats = StatsItem.CreateMenu(class'UMenuStatsMenu');
00081	
00082		ToolItem = AddItem(ToolName);
00083		Tool = ToolItem.CreateMenu(class'UMenuToolsMenu');
00084	
00085		if(LoadMods())
00086		{
00087			ModItem = AddItem(ModName);
00088			Mods = UMenuModMenu(ModItem.CreateMenu(class<UMenuModMenu>(DynamicLoadObject(ModMenuClass, class'class'))));
00089			Mods.SetupMods(ModItems);
00090		}
00091	
00092		HelpItem = AddItem(HelpName);
00093		Help = HelpItem.CreateMenu(class'UMenuHelpMenu');
00094	
00095		UMenuHelpMenu(Help).Context.bChecked = ShowHelp;
00096		if (ShowHelp)
00097		{
00098			if(UMenuRootWindow(Root) != None)
00099				if(UMenuRootWindow(Root).StatusBar != None)
00100					UMenuRootWindow(Root).StatusBar.ShowWindow();
00101		}
00102	
00103		bShowMenu = True;
00104	
00105		Spacing = 12;
00106	}
00107	
00108	function SetHelp(string NewHelpText)
00109	{
00110		if(UMenuRootWindow(Root) != None)
00111			if(UMenuRootWindow(Root).StatusBar != None)
00112				UMenuRootWindow(Root).StatusBar.SetHelp(NewHelpText);
00113	}
00114	
00115	function CloseUp()
00116	{
00117		OldSelected = None;
00118		Super.CloseUp();
00119		ShowHelpItem(OldHelpItem);
00120	}
00121	
00122	function HideWindow()
00123	{
00124		if(UMenuRootWindow(Root) != None)
00125			if(UMenuRootWindow(Root).StatusBar != None)
00126				UMenuRootWindow(Root).StatusBar.HideWindow();
00127		Super.HideWindow();
00128	}
00129	
00130	function ShowWindow()
00131	{
00132		if (ShowHelp)
00133		{
00134			if(UMenuRootWindow(Root) != None)
00135				if(UMenuRootWindow(Root).StatusBar != None)
00136					UMenuRootWindow(Root).StatusBar.ShowWindow();
00137		}
00138		Super.ShowWindow();
00139	}
00140	
00141	
00142	function ShowHelpItem(UWindowMenuBarItem I)
00143	{
00144		switch(I)
00145		{
00146		case GameItem:
00147			SetHelp(GameHelp);
00148			break;	
00149		case MultiplayerItem:
00150			SetHelp(MultiplayerHelp);
00151			break;	
00152		case OptionsItem:
00153			SetHelp(OptionsHelp);
00154			break;	
00155		case StatsItem:
00156			SetHelp(StatsHelp);
00157			break;
00158		case ToolItem:
00159			SetHelp(ToolHelp);
00160			break;	
00161		case HelpItem:
00162			SetHelp(HelpHelp);
00163			break;	
00164		case ModItem:
00165			SetHelp(ModHelp);
00166		default:
00167			SetHelp("");
00168			break;	
00169		}
00170	}
00171	
00172	function Select(UWindowMenuBarItem I)
00173	{
00174		Super.Select(I);
00175		OldSelected = I;
00176	
00177		ShowHelpItem(I);
00178		Super.Select(I);
00179	}
00180	
00181	function BeforePaint(Canvas C, float X, float Y)
00182	{
00183		Super.BeforePaint(C, X, Y);
00184	
00185		if(Over != OldHelpItem)
00186		{
00187			OldHelpItem = Over;
00188			ShowHelpItem(Over);
00189		}
00190	
00191	
00192		if(bShowMenu)
00193		{
00194			// pull the game menu down first time menu is created
00195			Selected = GameItem;
00196			Selected.Select();
00197			Select(Selected);
00198			bShowMenu = False;
00199		}
00200	}
00201	
00202	function DrawItem(Canvas C, UWindowList Item, float X, float Y, float W, float H)
00203	{
00204		C.DrawColor.R = 255;
00205		C.DrawColor.G = 255;
00206		C.DrawColor.B = 255;
00207		
00208		if(UWindowMenuBarItem(Item).bHelp) W = W - 16;
00209	
00210		UWindowMenuBarItem(Item).ItemLeft = X;
00211		UWindowMenuBarItem(Item).ItemWidth = W;
00212	
00213		LookAndFeel.Menu_DrawMenuBarItem(Self, UWindowMenuBarItem(Item), X, Y, W, H, C);
00214	}
00215	
00216	function DrawMenuBar(Canvas C)
00217	{
00218		local float W, H;
00219	
00220		VersionText = VersionName@GetLevel().EngineVersion;
00221	
00222		LookAndFeel.Menu_DrawMenuBar(Self, C);
00223	
00224		C.Font = Root.Fonts[F_Normal];
00225		C.DrawColor.R = 0;
00226		C.DrawColor.G = 0;
00227		C.DrawColor.B = 0;
00228	
00229		TextSize(C, VersionText, W, H);
00230		ClipText(C, WinWidth - W - 20, 3, VersionText);
00231	}
00232	
00233	function LMouseDown(float X, float Y)
00234	{
00235		if(X > WinWidth - 13) GetPlayerOwner().ConsoleCommand("togglefullscreen");
00236		Super.LMouseDown(X, Y);
00237	}
00238	
00239	function bool LoadMods()
00240	{
00241		local int NumModClasses;
00242		local string NextModClass, NextModDesc;
00243		local int i;
00244		local UMenuModMenuList NewItem;
00245		local UMenuModMenuItem TempItem;
00246	
00247		GetPlayerOwner().GetNextIntDesc("UMenu.UMenuModMenuItem", 0, NextModClass, NextModDesc);
00248	
00249		if(NextModClass == "")
00250			return False;
00251	
00252		ModItems = New class'UMenuModMenuList';
00253		ModItems.SetupSentinel();
00254	
00255		while( (NextModClass != "") && (NumModClasses < 50) )
00256		{
00257			NewItem = UMenuModMenuList(ModItems.Append(class'UMenuModMenuList'));
00258			NewItem.MenuItemClassName = NextModClass;
00259			if(NextModDesc != "")
00260			{
00261				i = InStr(NextModDesc, ",");
00262				if(i==-1)
00263					NewItem.MenuCaption = NextModDesc;
00264				else
00265				{
00266					NewItem.MenuCaption = Left(NextModDesc, i);
00267					NewItem.MenuHelp= Mid(NextModDesc, i+1);
00268				}
00269			}
00270			else
00271			{
00272				TempItem = New class<UMenuModMenuItem>(DynamicLoadObject(NextModClass, class'Class'));
00273				TempItem.Setup();
00274				NewItem.MenuCaption = TempItem.MenuCaption;
00275				NewItem.MenuHelp = TempItem.MenuHelp;		
00276			}
00277	
00278			NumModClasses++;
00279			GetPlayerOwner().GetNextIntDesc("UMenu.UMenuModMenuItem", NumModClasses, NextModClass, NextModDesc);
00280		}
00281		
00282		return True;
00283	}
00284	
00285	function NotifyQuitUnreal()
00286	{
00287		local UWindowMenuBarItem I;
00288	
00289		for(I = UWindowMenuBarItem(Items.Next); I != None; I = UWindowMenuBarItem(I.Next))
00290			if(I.Menu != None)
00291				I.Menu.NotifyQuitUnreal();
00292	}
00293	
00294	function NotifyBeforeLevelChange()
00295	{
00296		local UWindowMenuBarItem I;
00297	
00298		for(I = UWindowMenuBarItem(Items.Next); I != None; I = UWindowMenuBarItem(I.Next))
00299			if(I.Menu != None)
00300				I.Menu.NotifyBeforeLevelChange();
00301	}
00302	
00303	function NotifyAfterLevelChange()
00304	{
00305		local UWindowMenuBarItem I;
00306	
00307		for(I = UWindowMenuBarItem(Items.Next); I != None; I = UWindowMenuBarItem(I.Next))
00308			if(I.Menu != None)
00309				I.Menu.NotifyAfterLevelChange();
00310	}
00311	
00312	function MenuCmd(int Menu, int Item)
00313	{
00314		bShowMenu = False;	
00315		Super.MenuCmd(Menu, Item);
00316	}
00317	
00318	defaultproperties
00319	{
00320	     ShowHelp=True
00321	     GameName="&Game"
00322	     GameHelp="Start a new game, load a game, or quit."
00323	     MultiplayerName="&Multiplayer"
00324	     MultiplayerHelp="Host or join a multiplayer game."
00325	     OptionsName="&Options"
00326	     OptionsHelp="Configure settings."
00327	     StatsName="&Stats"
00328	     StatsHelp="Manage your local and world stats."
00329	     ToolName="&Tools"
00330	     ToolHelp="Enable various system tools."
00331	     HelpName="&Help"
00332	     HelpHelp="Enable or disable help."
00333	     VersionName="Version"
00334	     ModName="M&od"
00335	     ModHelp="Configure user-created mods you have installed."
00336	     GameUMenuDefault="UTMenu.UTGameMenu"
00337	     MultiplayerUMenuDefault="UTMenu.UTMultiplayerMenu"
00338	     OptionsUMenuDefault="UTMenu.UTOptionsMenu"
00339	     ModMenuClass="UMenu.UMenuModMenu"
00340	}

End Source Code