Core.Object | +--UWindow.UWindowBase | +--UWindow.UWindowWindow | +--UWindow.UWindowClientWindow | +--UWindow.UWindowDialogClientWindow | +--UMenu.UMenuDialogClientWindow | +--UMenu.UMenuMutatorCW
UMenuBotmatchClientWindow
BotmatchParent
UMenuMutatorExclude
Exclude
string
ExcludeCaption
ExcludeHelp
UMenuMutatorFrameCW
FrameExclude
FrameInclude
UMenuMutatorInclude
Include
IncludeCaption
IncludeHelp
UWindowCheckbox
KeepCheck
KeepHelp
KeepText
MutatorBaseClass
UWindowHSplitter
Splitter
void
Created()
LoadMutators()
Notify(UWindowDialogControl C, byte E)
Paint(Canvas C, float X, float Y)
Resized()
SaveConfigs()
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 }