UMenu
Class UMenuBotmatchClientWindow

source: e:\games\UnrealTournament\UMenu\Classes\UMenuBotmatchClientWindow.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UMenu.UMenuBotmatchClientWindow
Direct Known Subclasses:UMenuStartGameClientWindow, UTMenuBotmatchCW

class UMenuBotmatchClientWindow
extends UWindow.UWindowDialogClientWindow


Variables
 SettingsTab, BotConfigTab
 UWindowSmallCloseButton CloseButton
 class GameClass
 string GameType
 string Map
 string MutatorList
 UMenuPageControl Pages
 UMenuScreenshotCW ScreenshotWindow
 UWindowHSplitter Splitter
 UWindowSmallButton StartButton
 string StartText
 bool bKeepMutators
 bool bNetworkGame


Function Summary
 void CreatePages()
 void Created()
 void GameChanged()
 void Notify(UWindowDialogControl C, byte E)
 void Paint(Canvas C, float X, float Y)
 void Resized()
 void SaveConfigs()
 void StartPressed()



Source Code


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	}

End Source Code