rott/kf_sources/KFGui/Classes/KFInvClassConfig.uc
2026-07-14 20:27:09 +07:00

170 lines
3.8 KiB
Ucode

//==============================================================================
// KFInvClassConfig
//==============================================================================
class KFInvClassConfig extends GUICustomPropertyPage;
var automated GUIImage i_Background;
var automated GUIMultiOptionListBox lb_Waves;
var GUIMultiOptionList li_waves;
var array<string> MonsterClasses;
var array<moEditBox> MTxtBoxes;
var localized string MonsterClassConfigTitle;
function string GetResult()
{
return "";
}
function InitActiveClasses()
{
local int i,l;
// Init monster table
l = Class'KFGameType'.Default.MonsterClasses.Length;
MonsterClasses.Length = l;
For( i=0; i<l; i++ )
MonsterClasses[i] = Class'KFGameType'.Default.MonsterClasses[i].MClassName;
}
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.InitComponent(MyController, MyOwner);
li_Waves = lb_Waves.List;
li_Waves.OnChange = InternalOnChange;
li_Waves.bDrawSelectionBorder = False;
li_Waves.ItemPadding=0.15;
li_Waves.ColumnWidth=0.95;
li_Waves.bHotTrackSound = False;
sb_Main.ManageComponent(lb_Waves);
sb_Main.LeftPadding=0;
sb_Main.RightPadding=0;
sb_Main.TopPadding=0.05;
sb_Main.BottomPadding=0.05;
sb_Main.SetPosition(0.030234,0.075000,0.851640,0.565624);
}
function SetOwner( GUIComponent NewOwner )
{
Super.SetOwner(NewOwner);
t_WindowTitle.Caption = MonsterClassConfigTitle;
InitActiveClasses();
InitializeList();
}
function InitializeList()
{
local int i;
local moEditBox ch;
MTxtBoxes.Length = Max(MonsterClasses.Length,30);
For( i=0; i<MTxtBoxes.Length; i++ )
{
ch = moEditBox(li_Waves.AddItem( "XInterface.moEditBox",, "Monster"@GetIDName(i)));
if ( ch != None )
{
MTxtBoxes[i] = ch;
if( i<MonsterClasses.Length )
ch.SetComponentValue(MonsterClasses[i],True);
else ch.SetComponentValue("<Empty>",True);
ch.bAutoSizeCaption = True;
}
}
}
function string GetIDName( int Num )
{
if( Num<26 )
Return Chr(65+Num); // A-Z
else Return Chr(71+Num); // a-z
}
function string GetDataString()
{
return "";
}
function InternalOnChange(GUIComponent Sender)
{
local GUIMenuOption mo;
local int i;
if ( Sender == li_Waves )
{
mo = li_Waves.Get();
if ( moEditBox(mo)!=None )
{
for( i=0; i<MTxtBoxes.Length; i++ )
{
if( MTxtBoxes[i]==mo )
{
MonsterClasses[i] = MTxtBoxes[i].GetComponentValue();
Break;
}
}
}
}
}
event Closed( GUIComponent Sender, bool bCancelled )
{
local int i;
if( bCancelled )
Return;
for( i=0; i<MonsterClasses.Length; i++ )
{
if( Len(MonsterClasses[i])==0 || MonsterClasses[i]=="<Empty>" || Class<Monster>(DynamicLoadObject(MonsterClasses[i],Class'Class'))==None )
{
MonsterClasses.Remove(i,1);
i--;
}
}
Class'KFGameType'.Default.MonsterClasses.Length = MonsterClasses.Length;
for( i=0; i<MonsterClasses.Length; i++ )
{
Class'KFGameType'.Default.MonsterClasses[i].MClassName = MonsterClasses[i];
Class'KFGameType'.Default.MonsterClasses[i].MID = GetIDName(i);
}
Class'KFGameType'.Static.StaticSaveConfig();
}
DefaultProperties
{
Begin Object Class=GUIMultiOptionListBox Name=WavesList
NumColumns=1
OnChange=InternalOnChange
WinWidth=0.983750
WinHeight=0.698149
WinLeft=0.007500
WinTop=0.150608
TabOrder=1
bVisibleWhenEmpty=True
bBoundToParent=True
bScaleToParent=True
// StyleName="ServerBrowserGrid"
End Object
lb_Waves=WavesList
MonsterClassConfigTitle="Killing Floor Monster Classlist config page"
bDrawFocusedLast=False
WinWidth=0.9
WinHeight=0.7
WinLeft=0.05
WinTop=0.15
DefaultWidth=0.9
DefaultHeight=0.7
DefaultLeft=0.05
DefaultTop=0.15
}