//-----------------------------------------------------------
//
//-----------------------------------------------------------
class utvPrimaryMenu extends ut2k3guIPage;

var float BoxHeight;
var float BoxWidth;
var float MarginWidth;
var float ItemHeight;
var float ItemGap;

var utvInteraction ui;
var utvReplication ur;

function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
	local int a, prev, mark;
	local utvInteraction tui;
	local utvReplication tur;

	super.InitComponent(MyController, MyOwner);

	//The window
	Controls[0].WinHeight = BoxHeight;
	Controls[0].WinWidth = BoxWidth;
	Controls[0].WinTop = 0.5 - (0.5 * BoxHeight);
	Controls[0].WinLeft = 0.5 - (0.5 * BoxWidth);

	//Headline
	Controls[1].WinHeight = ItemHeight;
	Controls[1].WinWidth = BoxWidth - (MarginWidth * 2);
	Controls[1].WinTop = Controls[0].WinTop + 0.002; // + ItemGap * 5;
	Controls[1].WinLeft = Controls[0].WinLeft + MarginWidth;

	//label total clients
	Controls[2].WinHeight = ItemHeight;
	Controls[2].WinWidth = BoxWidth*0.4;
	Controls[2].WinTop = Controls[1].WinTop + ItemGap + ItemHeight;
	Controls[2].WinLeft = Controls[1].WinLeft + MarginWidth;


	///mmuuu

	//label mute
	Controls[24].WinHeight = ItemHeight;
	Controls[24].WinWidth = BoxWidth*0.4;
	Controls[24].WinTop = Controls[2].WinTop + ItemGap + ItemHeight;
	Controls[24].WinLeft = Controls[2].WinLeft;

	//divider
	Controls[26].WinHeight = 0.005;
	Controls[26].WinWidth = BoxWidth - (MarginWidth * 2);
	Controls[26].WinTop = Controls[24].WinTop + ItemGap + ItemHeight;
	Controls[26].WinLeft = Controls[1].WinLeft;



	//label serveraddress
	Controls[3].WinHeight = ItemHeight;
	Controls[3].WinWidth = Controls[24].WinWidth;
	Controls[3].WinTop = Controls[24].WinTop + ItemGap * 3 + ItemHeight;
	Controls[3].WinLeft = Controls[24].WinLeft;

	//rest of the labels
	prev=3;
	mark=0;
	for(a=4;a<11;++a){
		if ((a == 8) && (mark == 0)) {		//would renumbering have been easier? :)
			a = 22;
			mark = 1;
		}
		Controls[a].WinHeight = ItemHeight;
		Controls[a].WinWidth = Controls[prev].WinWidth;
		Controls[a].WinTop = Controls[prev].WinTop + ItemGap + ItemHeight;
		Controls[a].WinLeft = Controls[prev].WinLeft;

		prev=a;
		if ((a == 22) && (mark == 1))
			a = 7;
	}

	//ok button
	Controls[11].WinHeight = ItemHeight;
	Controls[11].WinWidth = Controls[10].WinWidth;
	Controls[11].WinTop = Controls[10].WinTop + ItemHeight * 2;
	Controls[11].WinLeft = Controls[10].WinLeft;

	//textbox total clients
	Controls[12].WinHeight = ItemHeight;
	Controls[12].WinWidth = BoxWidth*0.5;
	Controls[12].WinTop = Controls[1].WinTop + ItemGap * 2 + ItemHeight;
	Controls[12].WinLeft = Controls[0].WinLeft+BoxWidth*0.5;


	//muu
	//checkbox mute chat
	Controls[25].WinHeight = ItemHeight;
	Controls[25].WinWidth = ItemHeight;
	Controls[25].WinTop = Controls[12].WinTop + ItemHeight;
	Controls[25].WinLeft = Controls[12].WinLeft;

	//textbox serveraddress
	Controls[13].WinHeight = ItemHeight;
	Controls[13].WinWidth = BoxWidth*0.4;
	Controls[13].WinTop = Controls[25].WinTop + ItemGap * 3 + ItemHeight;
	Controls[13].WinLeft = Controls[25].WinLeft;

	//rest of the textboxes
	prev=13;
	mark=0;
	for(a=14;a<21;++a){
		if ((a == 18) && (mark == 0)) {
			a = 23;
			mark = 1;
		}
		Controls[a].WinHeight = ItemHeight;
		Controls[a].WinWidth = Controls[prev].WinWidth;
		Controls[a].WinTop = Controls[prev].WinTop + ItemGap + ItemHeight;
		Controls[a].WinLeft = Controls[prev].WinLeft;
		Controls[a].TabOrder = Controls[prev].TabOrder + 1;

		prev=a;
		if ((a == 23) && (mark == 1))
			a = 17;
	}

	//reset button
	Controls[21].WinHeight = ItemHeight;
	Controls[21].WinWidth = Controls[20].WinWidth;
	Controls[21].WinTop = Controls[20].WinTop + ItemHeight * 2;
	Controls[21].WinLeft = Controls[20].WinLeft;

	foreach AllObjects (class'utvInteraction', tui) {
		ui = tui;
	}
	foreach AllObjects (class'utvReplication', tur) {
		ur = tur;
	}

	GUILabel(Controls[12]).Caption=string(ui.Clients);
	GUIEditBox(Controls[13]).TextStr=ui.ServerAddress;
	GUIEditBox(Controls[14]).TextStr=string(ui.ServerPort);
	GUIEditBox(Controls[15]).TextStr=string(ui.ListenPort);
	GUIEditBox(Controls[16]).TextStr=ui.JoinPassword;
	GUIEditBox(Controls[17]).TextStr=ui.PrimaryPassword;
	GUIEditBox(Controls[18]).TextStr=ui.NormalPassword;
	GUIEditBox(Controls[19]).TextStr=string(ui.Delay);
	GUIEditBox(Controls[20]).TextStr=string(ui.MaxClients);
	GUIEditBox(Controls[23]).TextStr=ui.VipPassword;
	GUICheckBoxButton(Controls[25]).bChecked=!ur.MuteChat;

	OnClose = InternalOnClose;

	RemapComponents();
}

function InternalOnClose(optional bool bCanceled)
{
	local PlayerController pc;

	pc = PlayerOwner();

	if(pc != None && pc.Level.Pauser != None)
		pc.SetPause(false);

	Super.OnClose(bCanceled);
}

function bool InternalOnClick(GUIComponent Sender)
{
	if (Sender == Controls[11])	//Ok button
	{
		ur.MuteChat=!GUICheckBoxButton(Controls[25]).bChecked;
        SendChanges ();
		Controller.CloseMenu ();
	}
	if (Sender == Controls[21])	//Reset button
	{
		ui.p.ClientMessage ("Resetting server");
        SendChanges ();
        ResetServer ();
		Controller.CloseMenu ();
	}

	return true;
}

function InternalOnChange(GUIComponent Sender)
{
}

function SendChanges ()
{
	local string s;

	ui.ServerAddress=GUIEditBox(Controls[13]).TextStr;
	ui.ServerPort=int(GUIEditBox(Controls[14]).TextStr);
	ui.ListenPort=int(GUIEditBox(Controls[15]).TextStr);
	ui.JoinPassword=GUIEditBox(Controls[16]).TextStr;
	ui.PrimaryPassword=GUIEditBox(Controls[17]).TextStr;
	ui.NormalPassword=GUIEditBox(Controls[18]).TextStr;
	ui.Delay=float(GUIEditBox(Controls[19]).TextStr);
	ui.MaxClients=int(GUIEditBox(Controls[20]).TextStr);
	ui.VipPassword=GUIEditBox(Controls[23]).TextStr;

	s="5 serveraddress=" $ ui.ServerAddress;
	s=s $ " serverport=" $ ui.ServerPort;
	s=s $ " listenport=" $ ui.ListenPort;
	s=s $ " joinpassword=" $ ui.JoinPassword;
	s=s $ " primarypassword=" $ ui.PrimaryPassword;
	s=s $ " vippassword=" $ ui.VipPassword;
	s=s $ " normalpassword=" $ ui.NormalPassword;
	s=s $ " delay=" $ ui.Delay;
	s=s $ " maxclients=" $ ui.maxclients;

	ur.SendToServer(s);
}

function ResetServer ()
{
	local string s;

	s="6 ";
	ur.SendToServer(s);
}

/*
	Begin Object Class=GUIButton name=Background
		bAcceptsInput=false
		bNeverFocus=true
		StyleName="SquareBar"
	End Object
*/

//display95 99

defaultproperties
{
	Begin Object Class=GUIImage name=Background
		bAcceptsInput=false
		bNeverFocus=true
// if _RO_
        Image=Texture'InterfaceArt_tex.Menu.RODisplay'
// else
//		Image=material'2K4Menus.NewControls.Display95'
// end if _RO_
		ImageStyle=ISTY_Stretched
	End Object
	Controls(0)=GUIImage'Background'

	Begin Object class=GUILabel Name=TitleText
		Caption="ROTV Primary settings"
		TextAlign=TXTA_Center
		TextColor=(R=255,G=255,B=0,A=255)
		bTransparent=true
		Name="TitleText"
	End Object
	Controls(1)=GUILabel'TitleText'

	Begin Object class=GUILabel name=Label1
	  Caption="Total clients"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(2)=GUILabel'Label1'

	Begin Object class=GUILabel name=LabelSA
	  Caption="Server address"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(3)=GUILabel'LabelSA'

	Begin Object class=GUILabel name=LabelSP
	  Caption="Server port"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(4)=GUILabel'LabelSP'

	Begin Object class=GUILabel name=LabelLP
	  Caption="Listen port"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(5)=GUILabel'LabelLP'

	Begin Object class=GUILabel name=LabelJP
	  Caption="Join password"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(6)=GUILabel'LabelJP'

	Begin Object class=GUILabel name=LabelPP
	  Caption="Primary password"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(7)=GUILabel'LabelPP'

	Begin Object class=GUILabel name=LabelVP
	  Caption="VIP password"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(22)=GUILabel'LabelVP'

	Begin Object class=GUILabel name=LabelNP
	  Caption="Normal password"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(8)=GUILabel'LabelNP'

	Begin Object class=GUILabel name=LabelD
	  Caption="Delay"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(9)=GUILabel'LabelD'

	Begin Object class=GUILabel name=LabelMC
	  Caption="Max clients"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(10)=GUILabel'LabelMC'

	Begin Object Class=GUIButton Name=OkButton
		StyleName="MidGameButton"
		OnClick=InternalOnClick
		Caption="OK"
		TabOrder=50
	End Object
	Controls(11)=GUIButton'OkButton'

	Begin Object class=GUILabel name=LabelTC
	  Caption="tc"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	  bMultiLine=true
	End Object
	Controls(12)=GUILabel'LabelTC'

	Begin Object class=GUIEditBox name=BoxSA
	  Caption=""
	  TabOrder=1
	End Object
	Controls(13)=GUIEditBox'BoxSA'

	Begin Object class=GUIEditBox name=BoxSP
	  Caption=""
	  bIntOnly=true;
	End Object
	Controls(14)=GUIEditBox'BoxSP'

	Begin Object class=GUIEditBox name=BoxLP
	  Caption=""
	  bIntOnly=true;
	End Object
	Controls(15)=GUIEditBox'BoxLP'

	Begin Object class=GUIEditBox name=BoxJP
	  Caption=""
	End Object
	Controls(16)=GUIEditBox'BoxJP'

	Begin Object class=GUIEditBox name=BoxPP
	  Caption=""
	End Object
	Controls(17)=GUIEditBox'BoxPP'

	Begin Object class=GUIEditBox name=BoxVP
	  Caption=""
	End Object
	Controls(23)=GUIEditBox'BoxVP'

	Begin Object class=GUIEditBox name=BoxNP
	  Caption=""
	End Object
	Controls(18)=GUIEditBox'BoxNP'

	Begin Object class=GUIEditBox name=BoxD
	  Caption=""
	  bFloatOnly=true;
	End Object
	Controls(19)=GUIEditBox'BoxD'

	Begin Object class=GUIEditBox name=BoxMC
	  Caption=""
	  bIntOnly=true;
	End Object
	Controls(20)=GUIEditBox'BoxMC'

	Begin Object Class=GUIButton Name=ResetButton
		StyleName="MidGameButton"
		OnClick=InternalOnClick
		Caption="Reset"
		TabOrder=51
	End Object
	Controls(21)=GUIButton'ResetButton'

	Begin Object class=GUILabel name=LabelMute
	  Caption="Show ROTV Chat"
	  TextColor=(R=255,G=255,B=255,A=255)
	  TextFont="UT2MidGameFont"
	  bTransparent=true
	End Object
	Controls(24)=GUILabel'LabelMute'

	Begin Object class=GUICheckBoxButton name=MuteButton
        TabOrder=100
	End Object
	Controls(25)=GUICheckBoxButton'MuteButton'

	Begin Object Class=GUIEditBox name=HorizLine
		bAcceptsInput=false
		bNeverFocus=true
		Caption=""
	End Object
	Controls(26)=GUIButton'HorizLine'

	bRequire640x480=false
	bAllowedAsLast=true
	bRenderWorld=true

	BoxHeight=0.74
	BoxWidth=0.5
	MarginWidth=0.02
	ItemHeight=0.04
	ItemGap=0.01

	OpenSound=none
}
