UMenu
Class UMenuMutatorCW

source: e:\games\UnrealTournament\UMenu\Classes\UMenuMutatorCW.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UMenu.UMenuDialogClientWindow
                  |
                  +--UMenu.UMenuMutatorCW
Direct Known Subclasses:None

class UMenuMutatorCW
extends UMenu.UMenuDialogClientWindow


Variables
 UMenuBotmatchClientWindow BotmatchParent
 UMenuMutatorExclude Exclude
 string ExcludeCaption
 string ExcludeHelp
 UMenuMutatorFrameCW FrameExclude
 UMenuMutatorFrameCW FrameInclude
 UMenuMutatorInclude Include
 string IncludeCaption
 string IncludeHelp
 UWindowCheckbox KeepCheck
 string KeepHelp
 string KeepText
 string MutatorBaseClass
 UWindowHSplitter Splitter


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



Source Code


00001	class UMenuMutatorCW expands UMenuDialogClientWindow;
00002	
00003	var UMenuBotmatchClientWindow BotmatchParent;
00004	var UWindowHSplitter Splitter;
00005	
00006	var UMenuMutatorExclude Exclude;
00007	var UMenuMutatorInclude Include;
00008	
00009	var localized string ExcludeCaption;
00010	var localized string ExcludeHelp;
00011	var localized string IncludeCaption;
00012	var localized string IncludeHelp;
00013	
00014	var UWindowCheckbox KeepCheck;
00015	var localized string KeepText;
00016	var localized string KeepHelp;
00017	
00018	var UMenuMutatorFrameCW FrameExclude;
00019	var UMenuMutatorFrameCW FrameInclude;
00020	
00021	var string MutatorBaseClass;
00022	
00023	function Created()
00024	{
00025		Super.Created();
00026		
00027		BotmatchParent = UMenuBotmatchClientWindow(OwnerWindow);
00028	
00029		KeepCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', 10, 2, 190, 1));
00030		KeepCheck.SetText(KeepText);
00031		KeepCheck.SetHelpText(KeepHelp);
00032		KeepCheck.SetFont(F_Normal);
00033		KeepCheck.bChecked = BotmatchParent.bKeepMutators;
00034		KeepCheck.Align = TA_Right;
00035	
00036		Splitter = UWindowHSplitter(CreateWindow(class'UWindowHSplitter', 0, 0, WinWidth, WinHeight));
00037	
00038		FrameExclude = UMenuMutatorFrameCW(Splitter.CreateWindow(class'UMenuMutatorFrameCW', 0, 0, 100, 100));
00039		FrameInclude = UMenuMutatorFrameCW(Splitter.CreateWindow(class'UMenuMutatorFrameCW', 0, 0, 100, 100));
00040	
00041		Splitter.LeftClientWindow  = FrameExclude;
00042		Splitter.RightClientWindow = FrameInclude;
00043	
00044		Exclude = UMenuMutatorExclude(CreateWindow(class'UMenuMutatorExclude', 0, 0, 100, 100, Self));
00045		FrameExclude.Frame.SetFrame(Exclude);
00046		Include = UMenuMutatorInclude(CreateWindow(class'UMenuMutatorInclude', 0, 0, 100, 100, Self));
00047		FrameInclude.Frame.SetFrame(Include);
00048	
00049		Exclude.Register(Self);
00050		Include.Register(Self);
00051	
00052		Exclude.SetHelpText(ExcludeHelp);
00053		Include.SetHelpText(IncludeHelp);
00054	
00055		Include.DoubleClickList = Exclude;
00056		Exclude.DoubleClickList = Include;
00057	
00058		Splitter.bSizable = False;
00059		Splitter.bRightGrow = True;
00060		Splitter.SplitPos = WinWidth/2;
00061	
00062		LoadMutators();
00063	}
00064	
00065	function Paint(Canvas C, float X, float Y)
00066	{
00067		Super.Paint(C, X, Y);
00068	
00069		DrawUpBevel( C, 0, 20, WinWidth, 15, GetLookAndFeelTexture());
00070	
00071		C.Font = Root.Fonts[F_Normal];
00072		C.DrawColor.R = 0;
00073		C.DrawColor.G = 0;
00074		C.DrawColor.B = 0;
00075	
00076		ClipText(C, 10, 23, ExcludeCaption, True);
00077		ClipText(C, WinWidth/2 + 10, 23, IncludeCaption, True);
00078	}
00079	
00080	function Resized()
00081	{
00082		Super.Resized();
00083	
00084		Splitter.WinTop = 35;
00085		Splitter.SetSize(WinWidth, WinHeight-35);
00086		Splitter.SplitPos = WinWidth/2;
00087	}
00088	
00089	function LoadMutators()
00090	{
00091		local int NumMutatorClasses;
00092		local string NextMutator, NextDesc;
00093		local UMenuMutatorList I;
00094		local string MutatorList;
00095		local int j;
00096		local int k;
00097	
00098		GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, 0, NextMutator, NextDesc);
00099		while( (NextMutator != "") && (NumMutatorClasses < 200) )
00100		{
00101			I = UMenuMutatorList(Exclude.Items.Append(class'UMenuMutatorList'));
00102			I.MutatorClass = NextMutator;
00103	
00104			k = InStr(NextDesc, ",");
00105			if(k == -1)
00106			{
00107				I.MutatorName = NextDesc;
00108				I.HelpText = "";
00109			}
00110			else
00111			{
00112				I.MutatorName = Left(NextDesc, k);
00113				I.HelpText = Mid(NextDesc, k+1);
00114			}
00115	
00116			NumMutatorClasses++;
00117			GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, NumMutatorClasses, NextMutator, NextDesc);
00118		}
00119	
00120		MutatorList = BotmatchParent.MutatorList;
00121	
00122		while(MutatorList != "")
00123		{
00124			j = InStr(MutatorList, ",");
00125			if(j == -1)
00126			{
00127				NextMutator = MutatorList;
00128				MutatorList = "";
00129			}
00130			else
00131			{
00132				NextMutator = Left(MutatorList, j);
00133				MutatorList = Mid(MutatorList, j+1);
00134			}
00135			
00136			I = UMenuMutatorList(Exclude.Items).FindMutator(NextMutator);
00137			if(I != None)
00138			{
00139				I.Remove();
00140				Include.Items.AppendItem(I);
00141			}
00142			else
00143				Log("Unknown mutator in mutator list: "$NextMutator);
00144		}
00145	
00146		Exclude.Sort();
00147	}
00148	
00149	function SaveConfigs()
00150	{
00151		local UMenuMutatorList I;
00152		local string MutatorList;
00153	
00154		Super.SaveConfigs();
00155		
00156		for(I = UMenuMutatorList(Include.Items.Next); I != None; I = UMenuMutatorList(I.Next))
00157		{
00158			if(MutatorList == "")
00159				MutatorList = I.MutatorClass;
00160			else
00161				MutatorList = MutatorList $ "," $I.MutatorClass;
00162		}
00163		BotmatchParent.MutatorList = MutatorList;
00164	}
00165	
00166	function Notify(UWindowDialogControl C, byte E)
00167	{
00168		Super.Notify(C, E);
00169	
00170		switch(E)
00171		{
00172		case DE_Change:
00173			switch(C)
00174			{
00175			case KeepCheck:
00176				BotmatchParent.bKeepMutators = KeepCheck.bChecked;
00177				break;
00178			}
00179			break;
00180		}
00181	}
00182	
00183	defaultproperties
00184	{
00185	     ExcludeCaption="Mutators not Used"
00186	     ExcludeHelp="Click and drag a mutator to the right hand column to include that mutator in this game."
00187	     IncludeCaption="Mutators Used"
00188	     IncludeHelp="Click and drag a mutator to the left hand column to remove it from the mutator list, or drag it up or down to re-order it in the mutator list."
00189	     KeepText="Always use this Mutator configuration"
00190	     KeepHelp="If checked, these Mutators will always be used when starting games."
00191	     MutatorBaseClass="Engine.Mutator"
00192	}

End Source Code