Core.Object | +--UWindow.UWindowBase | +--UWindow.UWindowWindow | +--UWindow.UWindowDialogControl | +--UWindow.UWindowListControl | +--UWindow.UWindowMenuBar | +--UMenu.UMenuMenuBar
string
GameHelp
GameName
GameUMenuDefault
Tool,
Help
HelpHelp
HelpName
UMenuHelpWindow
HelpWindow
ModHelp
HelpItem,
ModItem
UMenuModMenuList
ModItems
ModMenuClass
ModName
UMenuModMenu
Mods
MultiplayerHelp
MultiplayerName
MultiplayerUMenuDefault
UWindowMenuBarItem
OldHelpItem
OldSelected
UMenuOptionsMenu
Options
OptionsHelp
OptionsName
OptionsUMenuDefault
bool
ShowHelp
StatsHelp
StatsName
ToolHelp
ToolName
VersionName
VersionText
bShowMenu
void
BeforePaint(Canvas C, float X, float Y)
CloseUp()
Created()
DrawItem(Canvas C, UWindowList Item, float X, float Y, float W, float H)
DrawMenuBar(Canvas C)
HideWindow()
LMouseDown(float X, float Y)
LoadMods()
MenuCmd(int Menu, int Item)
NotifyAfterLevelChange()
NotifyBeforeLevelChange()
NotifyQuitUnreal()
Select(UWindowMenuBarItem I)
SetHelp(string NewHelpText)
ShowHelpItem(UWindowMenuBarItem I)
ShowWindow()
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 }