RMenu
Class RuneMenuMutatorClientWindow

source: c:\runehov\RMenu\Classes\RuneMenuMutatorClientWindow.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UWindow.UWindowPageWindow
                  |
                  +--RMenu.RuneMenuPageWindow
                     |
                     +--RMenu.RuneMenuMutatorClientWindow
Direct Known Subclasses:None

class RuneMenuMutatorClientWindow
extends RMenu.RuneMenuPageWindow


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

End Source Code