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

883 lines
26 KiB
Ucode

//====================================================================
// xVoting.MatchSetupPage
// MatchSetup page.
//
// Written by Bruce Bickar
// (c) 2003, Epic Games, Inc. All Rights Reserved
// ====================================================================
class MatchSetupPage extends VotingPage;
/*
var automated GUITreeListBox lb_TreeListBox;
var automated GUIButton b_SaveButton;
var automated GUIButton b_SubmitButton;
var automated GUIButton b_SaveAsDefault;
var automated GUIButton b_RestoreDefault;
var automated GUILabel l_OptionLabel;
var automated GUILabel l_Title;
var automated GUILabel l_AvailableMaps;
// Generic controls (initially hidden)
var automated GUIListBox lb_ListBoxA;
var automated GUIListBox lb_ListBoxB;
var automated MultiSelectListBox lb_MSListBox;
var automated moCheckbox ch_CheckBox;
var automated moComboBox co_ComboBox;
var automated moFloatEdit fl_FloatEdit;
var automated moNumericEdit nu_NumericEdit;
var automated moEditBox ed_EditBox;
var array<CacheManager.GameRecord> GameTypes;
//var array<CacheManager.MapRecord> Maps;
var array<string> Maps;
//var array<CacheManager.MutatorRecord> Mutators;
var array<VotingReplicationInfo.MutatorData> Mutators;
var int SelectedGameTypeIdx;
var string SelectedMapName;
var string SelectedMutators;
var string Parameters;
var bool bTournamentMode;
var string DemoRecFileName;
var PlayInfo PInfo;
var string SelectedOption;
var bool bCurrentSettingChanged;
var bool bInitialized;
// Localization
var localized string GameTypesCaption, MapNameCaption, MutatorsCaption,
lmsgMustBeAdmin, lmsgMatchSetupDisabled, ParametersCaption,
TournamentModeCaption, DemoRecCaption, MiscCaption, lmsgNotPermitted, lmsgMutator;
//------------------------------------------------------------------------------------------------
function InternalOnOpen()
{
if( MVRI == none || (MVRI != none && !MVRI.bMatchSetup) )
{
Controller.OpenMenu("GUI2K4.GUI2K4QuestionPage");
GUIQuestionPage(Controller.TopPage()).SetupQuestion(lmsgMatchSetupDisabled, QBTN_Ok, QBTN_Ok);
GUIQuestionPage(Controller.TopPage()).OnButtonClick = OnOkButtonClick;
return;
}
if(MVRI != none && !MVRI.bMatchSetupPermitted)
{
if( PlayerOwner().PlayerReplicationInfo.bAdmin )
MVRI.MatchSetupLogin("Admin", ""); // UserId and Password not checked for admins
else
Controller.OpenMenu("xVoting.MatchSetupLoginPage");
}
class'CacheManager'.static.GetGameTypeList(GameTypes);
//class'CacheManager'.static.GetMutatorList(Mutators);
setTimer(1,true); // wait for login validation
PInfo = new(None) class'Engine.PlayInfo';
}
//------------------------------------------------------------------------------------------------
function OnOkButtonClick(byte bButton) // triggered by th GUIQuestionPage Ok Button
{
Controller.CloseAll(true);
}
//------------------------------------------------------------------------------------------------
function Timer()
{
if( !bInitialized && MVRI != None && MVRI.bMatchSetupPermitted )
{
bInitialized = true;
MVRI.RequestMatchSettings(True);
}
if( !MVRI.bMatchSetupAccepted && !b_SubmitButton.bVisible)
b_SubmitButton.Show();
if( MVRI.bMatchSetupAccepted && b_SubmitButton.bVisible)
b_SubmitButton.Hide();
}
//------------------------------------------------------------------------------------------------
function AddGameType(string GameClassString)
{
local int i;
//log("____AddGameType", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
lb_TreeListBox.List.Clear(); // reload required when game type changed
PInfo.Clear();
for(i = 0; i < GameTypes.Length; i++)
{
if(GameTypes[i].ClassName ~= GameClassString)
{
SelectedGameTypeIdx = i;
break;
}
}
lb_TreeListBox.List.OnChange = OptionSelected;
bCurrentSettingChanged=false;
SelectedOption = "";
lb_TreeListBox.List.AddItem(GameTypesCaption, "GameType", "");
}
//------------------------------------------------------------------------------------------------
function AddMapName(string MapName)
{
//log("____AddMapName", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
lb_TreeListBox.List.AddItem(MapNameCaption, "MapName", "");
SelectedMapName = MapName;
lb_TreeListBox.List.OnChange = OptionSelected;
}
//------------------------------------------------------------------------------------------------
function AddMutators(string MutatorsString)
{
//log("____AddMutators", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
lb_TreeListBox.List.AddItem(MutatorsCaption, "Mutators", "");
SelectedMutators = MutatorsString;
lb_TreeListBox.List.OnChange = OptionSelected;
}
//------------------------------------------------------------------------------------------------
function AddParameters(string Value)
{
//log("____AddParameters", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
//lb_TreeListBox.List.AddItem(ParametersCaption, "", "");
lb_TreeListBox.List.AddItem(MiscCaption, "GameOptions", ParametersCaption);
lb_TreeListBox.List.OnChange = OptionSelected;
Parameters = Value;
}
//------------------------------------------------------------------------------------------------
function AddTournamentMode(string Value)
{
//log("____AddTournamentMode", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
lb_TreeListBox.List.AddItem(TournamentModeCaption, "Tournament", ParametersCaption);
lb_TreeListBox.List.OnChange = OptionSelected;
bTournamentMode = bool(Value);
}
//------------------------------------------------------------------------------------------------
function AddDemoRecFileName(string Value)
{
//log("____AddDemoRecFileName", 'MapVoteDebug');
lb_TreeListBox.List.OnChange = None;
lb_TreeListBox.List.AddItem(DemoRecCaption, "DemoRec", ParametersCaption);
lb_TreeListBox.List.OnChange = OptionSelected;
DemoRecFileName = Value;
}
//------------------------------------------------------------------------------------------------
function AddSetting(string SettingName, string ClassFrom, string Value)
{
local int i;
local class<Info> InfoClass;
Log("___AddSetting " $ SettingName $ ", " $ ClassFrom $ ", " $ Value, 'MapVoteDebug');
i = PInfo.FindIndex(SettingName);
if( i == -1 ) // setting not found, need to load it
{
InfoClass = class<Info>(DynamicLoadObject(ClassFrom,class'Class'));
if (InfoClass != None)
{
PInfo.AddClass(InfoClass);
InfoClass.static.FillPlayInfo(PInfo);
i = PInfo.FindIndex(SettingName);
if( i == -1 )
{
log("Failed to find PlayInfo Setting " $ SettingName);
return;
}
}
else
{
Log("Failed to load " $ ClassFrom);
return;
}
}
PInfo.StoreSetting( i, Value);
lb_TreeListBox.List.OnChange = None;
if( class<Mutator>(InfoClass) != none)
lb_TreeListBox.List.AddItem(PInfo.Settings[i].DisplayName, PInfo.Settings[i].SettingName, lmsgMutator);
else
lb_TreeListBox.List.AddItem(PInfo.Settings[i].DisplayName, PInfo.Settings[i].SettingName, PInfo.Settings[i].Grouping);
lb_TreeListBox.List.OnChange = OptionSelected;
}
//------------------------------------------------------------------------------------------------
function UpdateSetting(string SettingName, string NewSetting)
{
local int i,x;
//log("____UpdateSetting", 'MapVoteDebug');
switch( SettingName )
{
case "MapName":
SelectedMapName = NewSetting;
break;
case "Mutators":
SelectedMutators = NewSetting;
break;
case "GameOptions":
Parameters = NewSetting;
break;
case "Tournament":
bTournamentMode = bool(NewSetting);
break;
case "DemoRec":
DemoRecFileName = NewSetting;
break;
default:
x = PInfo.FindIndex(SettingName);
if( x > -1)
PInfo.StoreSetting(x, NewSetting);
}
i = lb_TreeListBox.List.FindIndexByValue(SettingName);
if( i > -1)
lb_TreeListBox.List.SetIndex(i);
}
//------------------------------------------------------------------------------------------------
function OptionSelected(GUIComponent Sender)
{
local int i,x,Idx,pos;
local array<string> Range;
local string Width, Op;
local array<string> MutatorArray;
local array<string> MapArray;
local bool bFound;
if( SelectedOption != lb_TreeListBox.List.GetValue() && bCurrentSettingChanged )
SaveOption(SelectedOption); // save the previously changed setting
SelectedOption = lb_TreeListBox.List.GetValue();
// Hide all generic controls
lb_ListBoxA.Hide();
lb_ListBoxB.Hide();
lb_MSListBox.Hide();
ch_CheckBox.Hide();
co_ComboBox.Hide();
fl_FloatEdit.Hide();
nu_NumericEdit.Hide();
ed_EditBox.Hide();
l_AvailableMaps.Hide();
// disable change notification
lb_ListBoxA.OnChange=None;
lb_ListBoxB.OnChange=None;
lb_MSListBox.OnChange=None;
ch_CheckBox.OnChange=None;
co_ComboBox.OnChange=None;
fl_FloatEdit.OnChange=None;
nu_NumericEdit.OnChange=None;
ed_EditBox.OnChange=None;
bCurrentSettingChanged=False;
b_SaveButton.Hide();
l_OptionLabel.Caption=lb_TreeListBox.List.GetCaption();
switch( SelectedOption )
{
case "GameType":
lb_ListBoxA.SetHint("");
lb_ListBoxA.List.Clear();
for (i = 0; i < GameTypes.Length; i++)
lb_ListBoxA.List.Add(GameTypes[i].GameName,none,GameTypes[i].ClassName);
lb_ListBoxA.List.SetIndex(SelectedGameTypeIdx);
lb_ListBoxA.Show();
lb_ListBoxA.SetFocus(None);
lb_ListBoxA.OnChange=SettingChanged;
break;
case "MapName":
lb_ListBoxA.SetHint("");
ReadMapList();
lb_ListBoxA.List.Clear();
Split(SelectedMapName, ",", MapArray);
for(i=0; i<MapArray.Length; i++)
{
bFound = false;
for(x=0; x<Maps.Length; x++)
{
if( Maps[x] ~= MapArray[i] )
{
lb_ListBoxA.List.Add(Maps[x]);
lb_ListBoxB.List.RemoveItem(Maps[x]);
bFound = true;
break;
}
}
if( !bFound )
lb_ListBoxA.List.Add(MapArray[i]);
}
lb_ListBoxA.Show();
lb_ListBoxB.Show();
l_AvailableMaps.Show();
lb_ListBoxA.OnChange=MapSelected;
lb_ListBoxB.OnChange=MapSelected;
break;
case "Mutators":
lb_MSListBox.SetHint("");
lb_MSListBox.List.Clear();
for (i = 0; i < Mutators.Length; i++)
lb_MSListBox.List.Add(Mutators[i].FriendlyName,none,Mutators[i].ClassName);
lb_MSListBox.List.Sort();
lb_MSListBox.Show();
Split(SelectedMutators, ",", MutatorArray);
for(i=0; i<MutatorArray.Length; i++)
lb_MSListBox.List.Find(MutatorArray[i],False,True); // bExtra
lb_MSListBox.SetFocus(None);
lb_MSListBox.OnChange=SettingChanged;
break;
case "Tournament":
ch_CheckBox.SetHint("");
ch_CheckBox.Show();
ch_CheckBox.Caption = TournamentModeCaption;
ch_CheckBox.SetComponentValue(String(bTournamentMode));
ch_CheckBox.SetFocus(None);
ch_CheckBox.OnChange=SettingChanged;
break;
case "DemoRec":
ed_EditBox.SetHint("");
ed_EditBox.Show();
ed_EditBox.MyEditBox.MaxWidth = 30;
ed_EditBox.SetComponentValue(DemoRecFileName);
ed_EditBox.SetFocus(None);
ed_EditBox.OnChange=SettingChanged;
break;
case "GameOptions":
ed_EditBox.SetHint("");
ed_EditBox.Show();
ed_EditBox.MyEditBox.MaxWidth = 255;
ed_EditBox.SetComponentValue(Parameters);
ed_EditBox.SetFocus(None);
ed_EditBox.OnChange=SettingChanged;
break;
Default:
if( SelectedOption != "" )
{
Idx = PInfo.FindIndex(SelectedOption);
if( PInfo.Settings[Idx].SecLevel <= MVRI.SecurityLevel )
{
switch(PInfo.Settings[Idx].RenderType)
{
case PIT_Check:
ch_CheckBox.Show();
ch_CheckBox.Caption = PInfo.Settings[Idx].DisplayName;
ch_CheckBox.SetComponentValue(PInfo.Settings[Idx].Value);
ch_CheckBox.SetFocus(None);
ch_CheckBox.OnChange=SettingChanged;
ch_CheckBox.SetHint(PInfo.Settings[Idx].Description);
break;
case PIT_Select:
co_ComboBox.SetHint(PInfo.Settings[Idx].Description);
co_ComboBox.MyComboBox.List.Clear();
co_ComboBox.Show();
co_ComboBox.ReadOnly(True);
Split(PInfo.Settings[Idx].Data, ";", Range);
for (i = 0; i+1 < Range.Length; i += 2)
co_ComboBox.AddItem(Range[i+1],,Range[i]);
co_ComboBox.SetComponentValue(PInfo.Settings[Idx].Value);
co_ComboBox.SetFocus(None);
co_ComboBox.OnChange=SettingChanged;
break;
case PIT_Text:
Divide(PInfo.Settings[Idx].Data, ";", Width, Op);
pos = InStr(Width, ",");
if (pos != -1)
Width = Left(Width, pos);
if (Width != "")
i = int(Width);
else i = -1;
Split(Op, ":", Range);
if (Range.Length > 1)
{
// Ranged data
if (InStr(Range[0], ".") != -1)
{
// float edit
fl_FloatEdit.Show();
if (i != -1)
fl_FloatEdit.Setup( float(Range[0]), float(Range[1]), fl_FloatEdit.MyNumericEdit.Step);
fl_FloatEdit.SetComponentValue(PInfo.Settings[Idx].Value);
fl_FloatEdit.SetFocus(None);
fl_FloatEdit.SetHint(PInfo.Settings[Idx].Description);
fl_FloatEdit.OnChange=SettingChanged;
}
else
{
nu_NumericEdit.SetHint(PInfo.Settings[Idx].Description);
nu_NumericEdit.Show();
if (i != -1)
nu_NumericEdit.Setup( int(Range[0]), int(Range[1]), nu_NumericEdit.MyNumericEdit.Step);
nu_NumericEdit.SetComponentValue(PInfo.Settings[Idx].Value);
nu_NumericEdit.SetFocus(None);
nu_NumericEdit.OnChange=SettingChanged;
}
}
else
{
ed_EditBox.SetHint(PInfo.Settings[Idx].Description);
ed_EditBox.Show();
if (i != -1)
ed_EditBox.MyEditBox.MaxWidth = i;
ed_EditBox.SetComponentValue(PInfo.Settings[Idx].Value);
ed_EditBox.SetFocus(None);
ed_EditBox.OnChange=SettingChanged;
}
break;
}
}
else
l_OptionLabel.Caption = lmsgNotPermitted;
}
}
}
//------------------------------------------------------------------------------------------------
function SettingChanged(GUIComponent Sender)
{
bCurrentSettingChanged=true; // set to auto-save
b_SaveButton.Show();
}
//------------------------------------------------------------------------------------------------
function MapSelected(GUIComponent Sender)
{
local string MapName;
lb_ListBoxA.OnChange=none;
lb_ListBoxB.OnChange=none;
if( Sender == lb_ListBoxA)
{
MapName = lb_ListBoxA.List.Get();
lb_ListBoxB.List.Add(MapName);
lb_ListBoxA.List.RemoveItem(MapName);
}
if( Sender == lb_ListBoxB)
{
MapName = lb_ListBoxB.List.Get();
lb_ListBoxA.List.Add(MapName);
lb_ListBoxB.List.RemoveItem(MapName);
}
bCurrentSettingChanged=true; // set to auto-save
b_SaveButton.Show();
lb_ListBoxA.OnChange=MapSelected;
lb_ListBoxB.OnChange=MapSelected;
}
//------------------------------------------------------------------------------------------------
function bool SaveButtonClick(GUIComponent Sender)
{
SaveOption(lb_TreeListBox.List.GetValue());
b_SaveButton.Hide();
return true;
}
//------------------------------------------------------------------------------------------------
function bool SaveAsDefaultButtonClick(GUIComponent Sender)
{
if( bCurrentSettingChanged ) // make sure last change was saved
{
SaveOption(lb_TreeListBox.List.GetValue());
b_SaveButton.Hide();
}
if( !PlayerOwner().PlayerReplicationInfo.bAdmin )
{
Controller.OpenMenu("GUI2K4.GUI2K4QuestionPage");
GUI2K4QuestionPage(Controller.ActivePage).SetupQuestion(lmsgMustBeAdmin, QBTN_Ok, QBTN_Ok);
}
else
MVRI.SaveAsDefault();
return true;
}
//------------------------------------------------------------------------------------------------
function bool RestoreDefaultButtonClick(GUIComponent Sender)
{
b_SaveButton.Hide();
MVRI.RestoreDefaultProfile();
return true;
}
//------------------------------------------------------------------------------------------------
function SaveOption(string SettingName)
{
local int i,pos,Idx;
local array<string> Range;
local string Width, Op;
switch( SettingName )
{
case "GameType":
SelectedGameTypeIdx = lb_ListBoxA.List.Index;
MVRI.SendMatchSettingChange(SettingName,GameTypes[SelectedGameTypeIdx].ClassName);
break;
case "MapName":
SelectedMapName = "";
for( i=0; i<lb_ListBoxA.ItemCount(); i++)
{
SelectedMapName $= lb_ListBoxA.List.GetItemAtIndex(i);
if( i < lb_ListBoxA.ItemCount() - 1 )
SelectedMapName $= ",";
}
MVRI.SendMatchSettingChange(SettingName,SelectedMapName);
break;
case "Mutators":
SelectedMutators= lb_MSListBox.List.GetExtra();
MVRI.SendMatchSettingChange(SettingName,SelectedMutators);
break;
case "GameOptions":
Parameters = ed_EditBox.GetComponentValue();
MVRI.SendMatchSettingChange(SettingName,Parameters);
break;
case "Tournament":
bTournamentMode = bool(ch_CheckBox.GetComponentValue());
MVRI.SendMatchSettingChange(SettingName,String(bTournamentMode));
break;
case "DemoRec":
DemoRecFileName = ed_EditBox.GetComponentValue();
MVRI.SendMatchSettingChange(SettingName,DemoRecFileName);
break;
default:
Idx = PInfo.FindIndex(SettingName);
switch(PInfo.Settings[Idx].RenderType)
{
case PIT_Check:
PInfo.StoreSetting(Idx, ch_CheckBox.GetComponentValue());
break;
case PIT_Select:
PInfo.StoreSetting(Idx, co_ComboBox.GetComponentValue());
break;
case PIT_Text:
Divide(PInfo.Settings[Idx].Data, ";", Width, Op);
pos = InStr(Width, ",");
if (pos != -1)
Width = Left(Width, pos);
if (Width != "")
i = int(Width);
else i = -1;
Split(Op, ":", Range);
if (Range.Length > 1)
{
// Ranged data
if (InStr(Range[0], ".") != -1)
{
// float edit
PInfo.StoreSetting(Idx, fl_FloatEdit.GetComponentValue());
}
else
{
// numeric edit
PInfo.StoreSetting(Idx, nu_NumericEdit.GetComponentValue());
}
}
else
{
// text edit
PInfo.StoreSetting(Idx, ed_EditBox.GetComponentValue());
}
break;
} //switch(PInfo.Settings[Idx].RenderType)
MVRI.SendMatchSettingChange(SettingName, PInfo.Settings[Idx].Value);
} //switch
bCurrentSettingChanged = false;
return;
}
//------------------------------------------------------------------------------------------------
function bool SubmitButtonClick(GUIComponent Sender)
{
if( MVRI != none )
MVRI.MatchSettingsSubmit();
return true;
}
//------------------------------------------------------------------------------------------------
function ReadMapList()
{
local int i;
local bool bTemp;
bTemp = Controller.bCurMenuInitialized;
Controller.bCurMenuInitialized = False;
lb_ListBoxB.List.Clear();
for (i = 0; i < Maps.Length; i++)
lb_ListBoxB.List.Add(Maps[i]);
lb_ListBoxB.List.Sort();
Controller.bCurMenuInitialized = bTemp;
lb_ListBoxB.List.SetIndex(0);
}
//------------------------------------------------------------------------------------------------
function AddServerMaps(string MapName, int Index)
{
local int i;
if( Index == 0 )
{
if( SelectedOption == "MapName" )
{
Maps.Remove(0,Maps.Length);
lb_ListBoxB.List.Clear();
}
}
Maps[Maps.Length] = MapName;
if( SelectedOption == "MapName" )
{
i = lb_ListBoxA.List.FindIndex(MapName);
if( i > -1 )
{
// replace uppercase mapnames from maplist
lb_ListBoxA.OnChange=None;
lb_ListBoxA.List.Remove(i);
lb_ListBoxA.List.Add(MapName);
lb_ListBoxA.List.Sort();
lb_ListBoxA.OnChange=MapSelected;
}
else
{
lb_ListBoxB.OnChange=None;
lb_ListBoxB.List.Add(MapName);
lb_ListBoxB.List.Sort();
lb_ListBoxB.OnChange=MapSelected;
}
}
}
//------------------------------------------------------------------------------------------------
function AddServerMutators(VotingReplicationInfo.MutatorData M, int Index)
{
if( Index == 0 )
Mutators.Remove(0, Mutators.Length);
Mutators[Mutators.Length] = M;
if( SelectedOption == "Mutators" )
{
lb_MSListBox.List.Add(M.FriendlyName,none,M.ClassName);
lb_MSListBox.List.Sort();
if( InStr("," $ Caps(SelectedMutators) $ ",", "," $ Caps(M.ClassName) $ ",") > -1 )
lb_MSListBox.List.Find(M.ClassName,False,True); // bExtra
}
}
//------------------------------------------------------------------------------------------------
function Closed(GUIComponent Sender, bool bCancelled)
{
if( MVRI != none )
MVRI.MatchSetupLogout();
Super.Closed(Sender, bCancelled);
}
//------------------------------------------------------------------------------------------------
defaultproperties
{
Begin Object class=GUILabel Name=TitleLabel
Caption="Match Setup"
TextALign=TXTA_Center
TextFont="UT2LargeFont"
TextColor=(R=0,G=0,B=255,A=255)
WinWidth=0.554921
WinHeight=0.048632
WinLeft=0.223438
WinTop=0.107084
End Object
l_Title=TitleLabel
Begin Object Class=GUITreeListBox Name=TreeControl
WinWidth=0.393437
WinHeight=0.487810
WinLeft=0.108204
WinTop=0.161405
bVisibleWhenEmpty=true
Hint="Select a configuration option to modify."
End Object
lb_TreeListBox = TreeControl
Begin Object class=GUILabel Name=OptionLabel
Caption=""
TextALign=TXTA_Center
TextFont="UT2SmallFont"
TextColor=(R=0,G=0,B=255,A=255)
WinWidth=0.386170
WinHeight=0.032069
WinLeft=0.505509
WinTop=0.161823
End Object
l_OptionLabel=OptionLabel
Begin Object Class=GUIListBox Name=ListBoxA
WinWidth=0.315269
WinHeight=0.213349
WinLeft=0.537139
WinTop=0.193488
bVisibleWhenEmpty=true
bVisible=false
bSorted=false
End Object
lb_ListBoxA = ListBoxA
Begin Object Class=GUIListBox Name=ListBoxB
WinWidth=0.315269
WinHeight=0.200848
WinLeft=0.537139
WinTop=0.443750
bVisibleWhenEmpty=true
bVisible=false
bSorted=true
Hint="Selecting a map name in this list will move it to the Map Cycle List."
End Object
lb_ListBoxB = ListBoxB
Begin Object class=GUILabel Name=AvailableMapsLabel
Caption="Available Maps"
TextALign=TXTA_Center
TextFont="UT2SmallFont"
TextColor=(R=0,G=0,B=255,A=255)
WinWidth=0.315234
WinHeight=0.032382
WinLeft=0.536759
WinTop=0.412239
bVisible=False
End Object
l_AvailableMaps=AvailableMapsLabel
Begin Object Class=MultiSelectListBox Name=MSListBox
WinWidth=0.342769
WinHeight=0.329599
WinLeft=0.525890
WinTop=0.195155
bVisibleWhenEmpty=true
bVisible=false
End Object
lb_MSListBox = MSListBox
Begin Object class=GUIButton Name=SaveAsDefaultButton
Caption="Save As Default"
Hint="Save this profile as the default profile."
StyleName="SquareButton"
OnClick=SaveAsDefaultButtonClick
WinWidth=0.188855
WinHeight=0.034616
WinLeft=0.108749
WinTop=0.655141
bVisible=true
End Object
b_SaveAsDefault=SaveAsDefaultButton
Begin Object class=GUIButton Name=RestoreDefaultButton
Caption="Load Default"
Hint="Restore the default profile."
StyleName="SquareButton"
OnClick=RestoreDefaultButtonClick
WinWidth=0.169772
WinHeight=0.034616
WinLeft=0.332629
WinTop=0.655141
End Object
b_RestoreDefault=RestoreDefaultButton
Begin Object class=GUIButton Name=SubmitButton
Caption="Finish/Accept"
Hint="Accept current settings and implement changes."
StyleName="SquareButton"
OnClick=SubmitButtonClick
WinWidth=0.176277
WinHeight=0.034616
WinLeft=0.712919
WinTop=0.655141
bVisible=false
End Object
b_SubmitButton=SubmitButton
Begin Object class=GUIButton Name=SaveButton
Caption="Save/Send"
Hint="Click to save the changes to the selected option and send the new setting to the server."
StyleName="SquareButton"
OnClick=SaveButtonClick
WinWidth=0.178750
WinHeight=0.034565
WinLeft=0.517007
WinTop=0.655055
End Object
b_SaveButton=SaveButton
Begin Object Class=moCheckbox Name=CheckBox
WinWidth=0.037733
WinHeight=0.048437
WinLeft=0.671131
WinTop=0.212656
bVisible=false
CaptionWidth=0
ComponentWidth=1
//Hint="This is a checkbox"
End Object
ch_CheckBox = CheckBox
Begin Object Class=moComboBox Name=ComboBox
WinWidth=0.313359
WinHeight=0.038750
WinLeft=0.539885
WinTop=0.196822
bAutoSizeCaption=True
bVisible=false
CaptionWidth=0
ComponentWidth=1
End Object
co_ComboBox = ComboBox
Begin Object Class=moFloatEdit Name=FloatEdit
WinWidth=0.120545
WinHeight=0.043750
WinLeft=0.636444
WinTop=0.200155
bVisible=false
CaptionWidth=0
ComponentWidth=1
End Object
fl_FloatEdit = FloatEdit
Begin Object Class=moNumericEdit Name=NumericEdit
WinWidth=0.120545
WinHeight=0.043750
WinLeft=0.636444
WinTop=0.200155
bVisible=false
CaptionWidth=0
ComponentWidth=1
End Object
nu_NumericEdit = NumericEdit
Begin Object Class=moEditBox Name=EditBox
WinWidth=0.358984
WinHeight=0.037500
WinLeft=0.518946
WinTop=0.198488
bVisible=false
CaptionWidth=0
ComponentWidth=1
End Object
ed_EditBox = EditBox
OnOpen=InternalOnOpen;
GameTypesCaption="Game Type"
MapNameCaption="Map Cycle List"
MutatorsCaption="Mutators"
ParametersCaption="Parameters"
TournamentModeCaption="Tournament Mode"
DemoRecCaption="Record Demo(FileName)"
MiscCaption="Miscellaneous"
lmsgMustBeAdmin="You must be logged in as an Admin to perform this."
lmsgMatchSetupDisabled="Match Setup has been disabled by the server administrator."
lmsgNotPermitted="Not Permitted"
lmsgMutator="Mutator"
}
*/