UTMenu
Class UTTeamRCWindow

source: e:\games\UnrealTournament\UTMenu\Classes\UTTeamRCWindow.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UWindow.UWindowPageWindow
                  |
                  +--UMenu.UMenuPageWindow
                     |
                     +--UMenu.UMenuGameRulesBase
                        |
                        +--UTMenu.UTRulesCWindow
                           |
                           +--UTMenu.UTTeamRCWindow
Direct Known Subclasses:UTAssaultRulesCW

class UTTeamRCWindow
extends UTMenu.UTRulesCWindow


Variables
 UWindowCheckbox BalancePlayersCheck
 string BalancePlayersHelp
 string BalancePlayersText
 string FFHelp
 UWindowHSliderControl FFSlider
 string FFText
 int MaxAllowedTeams
 UWindowEditControl MaxTeamsEdit
 string MaxTeamsHelp
 string MaxTeamsText
 UWindowEditControl TeamScoreEdit
 string TeamScoreHelp
 string TeamScoreText


Function Summary
 void BalancePlayersChanged()
 void BeforePaint(Canvas C, float X, float Y)
 void Created()
 void FFChanged()
 void MaxTeamsChanged()
 void Notify(UWindowDialogControl C, byte E)
 void SetupNetworkOptions()
 void TeamScoreChanged()



Source Code


00001	class UTTeamRCWindow extends UTRulesCWindow;
00002	
00003	// Team Score
00004	var UWindowEditControl TeamScoreEdit;
00005	var localized string TeamScoreText;
00006	var localized string TeamScoreHelp;
00007	
00008	// Max Teams
00009	var UWindowEditControl MaxTeamsEdit;
00010	var localized string MaxTeamsText;
00011	var localized string MaxTeamsHelp;
00012	
00013	// PlayersBalanceTeams
00014	var UWindowCheckbox BalancePlayersCheck;
00015	var localized string BalancePlayersText;
00016	var localized string BalancePlayersHelp;
00017	
00018	var int MaxAllowedTeams;
00019	
00020	// Friendly Fire Scale
00021	var UWindowHSliderControl FFSlider;
00022	var localized string FFText;
00023	var localized string FFHelp;
00024	
00025	function Created()
00026	{
00027		local int FFS;
00028		local int ControlWidth, ControlLeft, ControlRight;
00029		local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft;
00030	
00031		ControlWidth = WinWidth/2.5;
00032		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00033		ControlRight = WinWidth/2 + ControlLeft;
00034		
00035		CenterWidth = (WinWidth/4)*3;
00036		CenterPos = (WinWidth - CenterWidth)/2;
00037	
00038		ButtonWidth = WinWidth - 140;
00039		ButtonLeft = WinWidth - ButtonWidth - 40;
00040	
00041		Initialized = False;
00042	
00043		// Team Score Limit
00044		TeamScoreEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, 20, ControlWidth, 1));
00045		TeamScoreEdit.SetText(TeamScoreText);
00046		TeamScoreEdit.SetHelpText(TeamScoreHelp);
00047		TeamScoreEdit.SetFont(F_Normal);
00048		TeamScoreEdit.SetNumericOnly(True);
00049		TeamScoreEdit.SetMaxLength(3);
00050		TeamScoreEdit.Align = TA_Right;
00051	
00052		Super.Created();
00053	
00054		if(MaxTeamsEdit != None)
00055			MaxTeamsEdit.SetValue(string(class<TeamGamePlus>(BotmatchParent.GameClass).Default.MaxTeams));
00056		MaxAllowedTeams = class<TeamGamePlus>(BotmatchParent.GameClass).Default.MaxAllowedTeams;
00057		if(BalancePlayersCheck != None)
00058		BalancePlayersCheck.bChecked = class<TeamGamePlus>(BotmatchParent.GameClass).Default.bPlayersBalanceTeams;
00059	
00060		DesiredWidth = 220;
00061		DesiredHeight = 165;
00062	
00063		Initialized = False;
00064	
00065		TeamScoreEdit.SetValue(string(int(Class<TeamGamePlus>(BotmatchParent.GameClass).Default.GoalTeamScore)));
00066	
00067		// Friendly Fire Scale
00068		FFSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1));
00069		FFSlider.SetRange(0, 10, 1);
00070		FFS = Class<TeamGamePlus>(BotmatchParent.GameClass).Default.FriendlyFireScale * 10;
00071		FFSlider.SetValue(FFS);
00072		FFSlider.SetText(FFText$" ["$FFS*10$"%]:");
00073		FFSlider.SetHelpText(FFHelp);
00074		FFSlider.SetFont(F_Normal);
00075	
00076		FragEdit.HideWindow();
00077	
00078		Initialized = True;
00079	}
00080	
00081	function SetupNetworkOptions()
00082	{
00083		local int ControlWidth, ControlLeft, ControlRight;
00084		local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft;
00085	
00086		// don't call UTRulesCWindow's version (force respawn)
00087		Super(UMenuGameRulesBase).SetupNetworkOptions();
00088	
00089		ControlWidth = WinWidth/2.5;
00090		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00091		ControlRight = WinWidth/2 + ControlLeft;
00092	
00093		CenterWidth = (WinWidth/4)*3;
00094		CenterPos = (WinWidth - CenterWidth)/2;
00095	
00096		if(BotmatchParent.bNetworkGame)
00097		{
00098			BalancePlayersCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1));
00099			BalancePlayersCheck.SetText(BalancePlayersText);
00100			BalancePlayersCheck.SetHelpText(BalancePlayersHelp);
00101			BalancePlayersCheck.SetFont(F_Normal);
00102			BalancePlayersCheck.Align = TA_Right;
00103		}
00104	
00105		if(
00106			!ClassIsChildOf( BotmatchParent.GameClass, class'CTFGame' ) &&
00107			!ClassIsChildOf( BotmatchParent.GameClass, class'Assault' )
00108		)
00109		{
00110			MaxTeamsEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1));
00111	
00112			MaxTeamsEdit.SetText(MaxTeamsText);
00113			MaxTeamsEdit.SetHelpText(MaxTeamsHelp);
00114			MaxTeamsEdit.SetFont(F_Normal);
00115			MaxTeamsEdit.SetNumericOnly(True);
00116			MaxTeamsEdit.SetMaxLength(3);
00117			MaxTeamsEdit.Align = TA_Right;
00118			MaxTeamsEdit.SetDelayedNotify(True);
00119		}
00120		ControlOffset += 25;
00121	
00122		if(BotmatchParent.bNetworkGame)
00123		{
00124			if(ClassIsChildOf(BotmatchParent.GameClass, class'CTFGame'))
00125				ControlOffset -= 25;
00126	
00127			ForceRespawnCheck = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1));
00128			ForceRespawnCheck.SetText(ForceRespawnText);
00129			ForceRespawnCheck.SetHelpText(ForceRespawnHelp);
00130			ForceRespawnCheck.SetFont(F_Normal);
00131			ForceRespawnCheck.Align = TA_Right;	
00132			ControlOffset += 25;
00133		}
00134	}
00135	
00136	function BeforePaint(Canvas C, float X, float Y)
00137	{
00138		local int ControlWidth, ControlLeft, ControlRight;
00139		local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft;
00140	
00141		Super.BeforePaint(C, X, Y);
00142	
00143		ControlWidth = WinWidth/2.5;
00144		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00145		ControlRight = WinWidth/2 + ControlLeft;
00146	
00147		CenterWidth = (WinWidth/4)*3;
00148		CenterPos = (WinWidth - CenterWidth)/2;
00149	
00150		TeamScoreEdit.SetSize(ControlWidth, 1);
00151		TeamScoreEdit.WinLeft = ControlLeft;
00152		TeamScoreEdit.EditBoxWidth = 20;
00153	
00154		if( BalancePlayersCheck != None )
00155		{
00156			BalancePlayersCheck.SetSize(ControlWidth, 1);
00157			BalancePlayersCheck.WinLeft = ControlLeft;
00158		}
00159	
00160		if(MaxTeamsEdit != None)
00161		{
00162			MaxTeamsEdit.SetSize(ControlWidth, 1);
00163			if( BalancePlayersCheck != None )
00164				MaxTeamsEdit.WinLeft = ControlRight;
00165			else
00166				MaxTeamsEdit.WinLeft = ControlLeft;
00167			MaxTeamsEdit.EditBoxWidth = 20;
00168		}
00169	
00170		if(ForceRespawnCheck != None && ClassIsChildOf(BotmatchParent.GameClass, class'CTFGame'))
00171			ForceRespawnCheck.WinLeft = ControlRight;
00172	
00173		FFSlider.SetSize(CenterWidth, 1);
00174		FFSlider.SliderWidth = 90;
00175		FFSlider.WinLeft = CenterPos;
00176	}
00177	
00178	
00179	function Notify(UWindowDialogControl C, byte E)
00180	{
00181		if (!Initialized)
00182			return;
00183	
00184		Super.Notify(C, E);
00185	
00186		switch(E)
00187		{
00188		case DE_Change:
00189			switch (C)
00190			{
00191				case TeamScoreEdit:
00192					TeamScoreChanged();
00193					break;
00194				case FFSlider:
00195					FFChanged();
00196					break;
00197				case MaxTeamsEdit:
00198					MaxTeamsChanged();
00199					break;
00200				case BalancePlayersCheck:
00201					BalancePlayersChanged();
00202					break;
00203			}
00204		}
00205	}
00206	
00207	function BalancePlayersChanged()
00208	{
00209		Class<TeamGamePlus>(BotmatchParent.GameClass).Default.bPlayersBalanceTeams = BalancePlayersCheck.bChecked;
00210	}
00211	
00212	singular function MaxTeamsChanged()
00213	{
00214		if(Int(MaxTeamsEdit.GetValue()) > MaxAllowedTeams)
00215			MaxTeamsEdit.SetValue(string(MaxAllowedTeams));
00216		if(Int(MaxTeamsEdit.GetValue()) < 2)
00217			MaxTeamsEdit.SetValue("2");
00218	
00219		Class<TeamGamePlus>(BotmatchParent.GameClass).Default.MaxTeams = int(MaxTeamsEdit.GetValue());
00220	}
00221	
00222	function TeamScoreChanged()
00223	{
00224		Class<TeamGamePlus>(BotmatchParent.GameClass).Default.GoalTeamScore = int(TeamScoreEdit.GetValue());
00225	}
00226	
00227	function FFChanged()
00228	{
00229		Class<TeamGamePlus>(BotmatchParent.GameClass).Default.FriendlyFireScale = FFSlider.GetValue() / 10;
00230		FFSlider.SetText(FFText$" ["$int(FFSlider.GetValue()*10)$"%]:");
00231	}
00232	
00233	defaultproperties
00234	{
00235	     TeamScoreText="Max Team Score"
00236	     TeamScoreHelp="When a team obtains this score, the game will end."
00237	     MaxTeamsText="Max Teams"
00238	     MaxTeamsHelp="The maximum number of different teams players are allowed to join, for this game."
00239	     BalancePlayersText="Force Team Balance"
00240	     BalancePlayersHelp="If checked, this option forces players joining the game to be placed on the team which best keeps teams balanced."
00241	     FFText="Friendly Fire:"
00242	     FFHelp="Slide to adjust the amount of damage friendly fire imparts to other teammates."
00243	}

End Source Code