Core.Object | +--UWindow.UWindowBase | +--UWindow.UWindowWindow | +--UWindow.UWindowClientWindow | +--UWindow.UWindowDialogClientWindow | +--UMenu.UMenuBotmatchClientWindow
SettingsTab,
BotConfigTab
UWindowSmallCloseButton
CloseButton
class
GameClass
string
GameType
Map
MutatorList
UMenuPageControl
Pages
UMenuScreenshotCW
ScreenshotWindow
UWindowHSplitter
Splitter
UWindowSmallButton
StartButton
StartText
bool
bKeepMutators
bNetworkGame
void
CreatePages()
Created()
GameChanged()
Notify(UWindowDialogControl C, byte E)
Paint(Canvas C, float X, float Y)
Resized()
SaveConfigs()
StartPressed()
00001 class UMenuBotmatchClientWindow extends UWindowDialogClientWindow; 00002 00003 // Game Information 00004 var config string Map; 00005 var config string GameType; 00006 var class<GameInfo> GameClass; 00007 00008 var bool bNetworkGame; 00009 00010 // Window 00011 var UMenuPageControl Pages; 00012 var UWindowSmallCloseButton CloseButton; 00013 var UWindowSmallButton StartButton; 00014 var UMenuScreenshotCW ScreenshotWindow; 00015 var UWindowHSplitter Splitter; 00016 00017 var localized string StartMatchTab, RulesTab, SettingsTab, BotConfigTab; 00018 var localized string StartText; 00019 00020 var config string MutatorList; 00021 var config bool bKeepMutators; 00022 00023 function Created() 00024 { 00025 if(!bKeepMutators) 00026 MutatorList = ""; 00027 00028 Splitter = UWindowHSplitter(CreateWindow(class'UWindowHSplitter', 0, 0, WinWidth, WinHeight)); 00029 Splitter.SplitPos = 280; 00030 Splitter.MaxSplitPos = 280; 00031 Splitter.bRightGrow = True; 00032 00033 ScreenshotWindow = UMenuScreenshotCW(Splitter.CreateWindow(class'UMenuScreenshotCW', 0, 0, WinWidth, WinHeight)); 00034 00035 CreatePages(); 00036 00037 Splitter.LeftClientWindow = Pages; 00038 Splitter.RightClientWindow = ScreenshotWindow; 00039 00040 CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); 00041 StartButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-106, WinHeight-24, 48, 16)); 00042 StartButton.SetText(StartText); 00043 00044 Super.Created(); 00045 } 00046 00047 function CreatePages() 00048 { 00049 local class<UWindowPageWindow> PageClass; 00050 00051 Pages = UMenuPageControl(Splitter.CreateWindow(class'UMenuPageControl', 0, 0, WinWidth, WinHeight)); 00052 Pages.SetMultiLine(True); 00053 Pages.AddPage(StartMatchTab, class'UMenuStartMatchScrollClient'); 00054 00055 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.RulesMenuType, class'Class')); 00056 if(PageClass != None) 00057 Pages.AddPage(RulesTab, PageClass); 00058 00059 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.SettingsMenuType, class'Class')); 00060 if(PageClass != None) 00061 Pages.AddPage(SettingsTab, PageClass); 00062 00063 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.BotMenuType, class'Class')); 00064 if(PageClass != None) 00065 Pages.AddPage(BotConfigTab, PageClass); 00066 } 00067 00068 function Resized() 00069 { 00070 if(ParentWindow.WinWidth == 520) 00071 { 00072 Splitter.bSizable = False; 00073 Splitter.MinWinWidth = 0; 00074 } 00075 else 00076 Splitter.MinWinWidth = 100; 00077 00078 Splitter.WinWidth = WinWidth; 00079 Splitter.WinHeight = WinHeight - 24; // OK, Cancel area 00080 00081 CloseButton.WinLeft = WinWidth-52; 00082 CloseButton.WinTop = WinHeight-20; 00083 StartButton.WinLeft = WinWidth-102; 00084 StartButton.WinTop = WinHeight-20; 00085 } 00086 00087 function Paint(Canvas C, float X, float Y) 00088 { 00089 local Texture T; 00090 00091 T = GetLookAndFeelTexture(); 00092 DrawUpBevel( C, 0, LookAndFeel.TabUnselectedM.H, WinWidth, WinHeight-LookAndFeel.TabUnselectedM.H, T); 00093 } 00094 00095 function Notify(UWindowDialogControl C, byte E) 00096 { 00097 Super.Notify(C, E); 00098 00099 switch(E) 00100 { 00101 case DE_Click: 00102 switch (C) 00103 { 00104 case StartButton: 00105 StartPressed(); 00106 break; 00107 } 00108 } 00109 } 00110 00111 function StartPressed() 00112 { 00113 local string URL; 00114 local GameInfo NewGame; 00115 00116 // Reset the game class. 00117 GameClass.Static.ResetGame(); 00118 00119 URL = Map $ "?Game="$GameType$"?Mutator="$MutatorList; 00120 00121 ParentWindow.Close(); 00122 Root.Console.CloseUWindow(); 00123 GetPlayerOwner().ClientTravel(URL, TRAVEL_Absolute, false); 00124 } 00125 00126 function GameChanged() 00127 { 00128 local UWindowPageControlPage RulesPage, SettingsPage, BotConfigPage; 00129 local class<UWindowPageWindow> PageClass; 00130 00131 // Change out the rules page... 00132 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.RulesMenuType, class'Class')); 00133 RulesPage = Pages.GetPage(RulesTab); 00134 if(PageClass != None) 00135 Pages.InsertPage(RulesPage, RulesTab, PageClass); 00136 Pages.DeletePage(RulesPage); 00137 00138 // Change out the settings page... 00139 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.SettingsMenuType, class'Class')); 00140 SettingsPage = Pages.GetPage(SettingsTab); 00141 if(PageClass != None) 00142 Pages.InsertPage(SettingsPage, SettingsTab, PageClass); 00143 Pages.DeletePage(SettingsPage); 00144 00145 // Change out the bots page... 00146 PageClass = class<UWindowPageWindow>(DynamicLoadObject(GameClass.Default.BotMenuType, class'Class')); 00147 BotConfigPage = Pages.GetPage(BotConfigTab); 00148 if(PageClass != None) 00149 Pages.InsertPage(BotConfigPage, BotConfigTab, PageClass); 00150 Pages.DeletePage(BotConfigPage); 00151 } 00152 00153 function SaveConfigs() 00154 { 00155 if (GameClass != None) 00156 GameClass.Static.StaticSaveConfig(); 00157 Super.SaveConfigs(); 00158 } 00159 00160 defaultproperties 00161 { 00162 GameType="UnrealShare.DeathMatchGame" 00163 StartMatchTab="Match" 00164 RulesTab="Rules" 00165 SettingsTab="Settings" 00166 BotConfigTab="Bots" 00167 StartText="Start" 00168 }