//============================================================================== // This panel contains all custom filter items, such as mutators, etc. // // Created by Ron Prestenback // © 2003, Epic Games, Inc. All Rights Reserved //============================================================================== class UT2K4CustomRulesPanel extends GUIFilterPanel; var array MutRecords; function InitComponent(GUIController MyC, GUIComponent MyO) { class'CacheManager'.static.GetMutatorList(MutRecords); Super.InitComponent(MyC, MyO); lb_Rules.OnChange = InternalOnChange; } function Refresh() { if (p_Anchor.Index < 0) return; Super.Refresh(); } function LoadRules() { local int i; local moComboBox co; local bool bTempInit; if (p_Anchor.Index < 0) return; // Do not want notification from components when adding them bTempInit = Controller.bCurMenuInitialized; Controller.bCurMenuInitialized = False; for (i = 0; i < MutRecords.Length; i++) { co = moComboBox(li_Rules.AddItem("XInterface.moComboBox",,MutRecords[i].FriendlyName)); PopulateFilterTypes(co, False); } Super.LoadRules(); Controller.bCurMenuInitialized = bTempInit; } function UpdateRules() { local array Muts; local moComboBox co; local int i, idx, j; local bool bTemp; bTemp = Controller.bCurMenuInitialized; Controller.bCurMenuInitialized = False; Muts = FilterMaster.AllFilters[p_Anchor.Index].GetRuleSet("mutator"); for (i = 0; i < li_Rules.Elements.Length; i++) { co = moComboBox(li_Rules.GetItem(i)); for (j = 0; j < Muts.Length; j++) { if (Muts[i].Item.ItemName ~= co.Caption) { idx = co.FindIndex(class'CustomFilter'.static.GetQueryString(Muts[i].Item.FilterItem.QueryType), True, True); Assert(idx >= 0); co.SetIndex(idx); } } } Controller.bCurMenuInitialized = bTemp; } function ListOnCreateComponent(GUIComponent NewComp, GUIComponent Sender) { if (GUIMultiOptionListBox(Sender) != None) { if (GUIMultiOptionList(NewComp) != None) li_Rules = GUIMultiOptionList(NewComp); GUIMultiOptionListBox(Sender).InternalOnCreateComponent(NewComp,Sender); } } function InternalOnChange(GUIComponent Sender) { local moComboBox Changed; local int RuleIdx, Inner; local string ClsName, InnerStr, Str; if (GUIMultiOptionList(Sender) != None) { Changed = moComboBox(GUIMultiOptionList(Sender).Get()); if (Changed != None) { ClsName = GetMutClassName(Changed.Caption); if (ClsName != "") { Inner = FilterMaster.AllFilters[p_Anchor.Index].FindInnerIndex("mutator", ClsName); if (Inner != -1) InnerStr = string(Inner); RuleIdx = FilterMaster.AllFilters[p_Anchor.Index].FindRuleIndex("mutator", InnerStr); } Str = Changed.GetExtra(); } FilterMaster.SetRule(p_Anchor.Index, RuleIdx, Changed.Caption, "mutator", ClsName, "DT_Multiple", Str); } } function string GetMutClassName(string FriendlyName) { local int i; for (i = 0; i < MutRecords.Length; i++) if (MutRecords[i].FriendlyName ~= FriendlyName) return MutRecords[i].ClassName; return ""; } function string GetMutFriendlyName(string ClassName) { local int i; for (i = 0; i < MutRecords.Length; i++) if (MutRecords[i].ClassName ~= ClassName) return MutRecords[i].FriendlyName; return ""; } DefaultProperties { OnCreateComponent=InternalOnCreateComponent Begin Object Class=GUIMultiOptionListBox Name=CustomListBox bVisibleWhenEmpty=True WinWidth=0.9 WinHeight=1.0 WinLeft=0.05 OnCreateComponent=ListOnCreateComponent End Object lb_Rules=CustomListBox }