RMenu
Class RuneMenuPlayerSetupClient

source: c:\runehov\RMenu\Classes\RuneMenuPlayerSetupClient.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--UWindow.UWindowPageWindow
                  |
                  +--RMenu.RuneMenuPageWindow
                     |
                     +--RMenu.RuneMenuPlayerSetupClient
Direct Known Subclasses:None

class RuneMenuPlayerSetupClient
extends RMenu.RuneMenuPageWindow


Variables
 UWindowComboControl ClassCombo
 string ClassHelp
 string ClassText
 int ControlOffset
 bool Initialized
 string MeshName
 RuneMenuPlayerMeshClient MeshWindow
 UWindowEditControl NameEdit
 string NameHelp
 string NameText
 UWindowComboControl NetSpeedCombo
 string NetSpeedHelp
 string NetSpeedText
 string NetSpeeds[3]
 class NewPlayerClass
 string NoTeam
 string PlayerBaseClass
 UWindowComboControl SkinCombo
 string SkinHelp
 string SkinText
 UWindowComboControl TeamCombo
 string TeamHelp
 string TeamText
 string Teams[4]


Function Summary
 void AfterCreate()
     
{
	Super.WindowShown();
	if (Initialized)
	{
		LoadCurrent();
		UseSelected();
	}
}*/
 void BeforePaint(Canvas C, float X, float Y)
 void ClassChanged()
 void Created()
 void IterateSkins()
 void LoadClasses()
 void LoadCurrent()
 void NameChanged()
     
/*
 * Message Crackers
 */
 void NetSpeedChanged()
 void Notify(UWindowDialogControl C, byte E)
 void SaveConfigs()
 void SkinChanged()
 void TeamChanged()
 void UseSelected()
 void WindowShown()
     
/*



Source Code


00001	class RuneMenuPlayerSetupClient extends RuneMenuPageWindow;
00002	
00003	var() int ControlOffset;
00004	
00005	var class<Pawn> NewPlayerClass;
00006	var string MeshName;
00007	var bool Initialized;
00008	var RuneMenuPlayerMeshClient MeshWindow;
00009	var string PlayerBaseClass;
00010	
00011	// Player Name
00012	var UWindowEditControl NameEdit;
00013	var localized string NameText;
00014	var localized string NameHelp;
00015	
00016	// Team Combo
00017	var UWindowComboControl TeamCombo;
00018	var localized string TeamText;
00019	var localized string Teams[4];
00020	var localized string NoTeam;
00021	var localized string TeamHelp;
00022	
00023	// Class Combo
00024	var UWindowComboControl ClassCombo;
00025	var localized string ClassText;
00026	var localized string ClassHelp;
00027	
00028	// Skin Combo
00029	var UWindowComboControl SkinCombo;
00030	var localized string SkinText;
00031	var localized string SkinHelp;
00032	
00033	// NetSpeed
00034	var UWindowComboControl NetSpeedCombo;
00035	var localized string NetSpeedText;
00036	var localized string NetSpeedHelp;
00037	var localized string NetSpeeds[3];
00038	
00039	
00040	function Created()
00041	{
00042		local string SkinName, FaceName;
00043	
00044		local int ControlWidth, ControlLeft, ControlRight;
00045		local int CenterWidth, CenterPos;
00046		local int I;
00047		
00048		MeshWindow = RuneMenuPlayerMeshClient(RuneMenuPlayerClientWindow(ParentWindow.ParentWindow.ParentWindow).Splitter.RightClientWindow);
00049	
00050		Super.Created();
00051	
00052		ControlWidth = WinWidth/2.5;
00053		ControlLeft = (WinWidth/2 - ControlWidth)/2;
00054		ControlRight = WinWidth/2 + ControlLeft;
00055	
00056		CenterWidth = (WinWidth/4)*3;
00057		CenterPos = (WinWidth - CenterWidth)/2;
00058	
00059		NewPlayerClass = GetPlayerOwner().Class;
00060	
00061		// Player Name
00062		NameEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', CenterPos, ControlOffset, CenterWidth, 1));
00063		NameEdit.SetText(NameText);
00064		NameEdit.SetHelpText(NameHelp);
00065		NameEdit.SetFont(F_Normal);
00066		NameEdit.SetNumericOnly(False);
00067		NameEdit.SetMaxLength(20);
00068		NameEdit.SetDelayedNotify(True);
00069	
00070		// Team
00071		ControlOffset += 25;
00072		TeamCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00073		TeamCombo.SetText(TeamText);
00074		TeamCombo.SetHelpText(TeamHelp);
00075		TeamCombo.SetFont(F_Normal);
00076		TeamCombo.SetEditable(False);
00077		TeamCombo.AddItem(NoTeam, String(255));
00078		for (I=0; I<class'TeamGame'.Default.MaxTeams; I++)
00079			TeamCombo.AddItem(Teams[I], String(i));
00080	
00081		// Classes
00082		ControlOffset += 25;
00083		ClassCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00084		ClassCombo.SetText(ClassText);
00085		ClassCombo.SetHelpText(ClassHelp);
00086		ClassCombo.SetEditable(False);
00087		ClassCombo.SetFont(F_Normal);
00088	
00089		// Skin
00090		ControlOffset += 25;
00091		SkinCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00092		SkinCombo.SetText(SkinText);
00093		SkinCombo.SetHelpText(SkinHelp);
00094		SkinCombo.SetFont(F_Normal);
00095		SkinCombo.SetEditable(False);
00096	
00097		LoadClasses();
00098	
00099		// Net Speed
00100		ControlOffset += 35;
00101		NetSpeedCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1));
00102		NetSpeedCombo.SetText(NetSpeedText);
00103		NetSpeedCombo.SetHelpText(NetSpeedHelp);
00104		NetSpeedCombo.SetFont(F_Normal);
00105		NetSpeedCombo.SetEditable(False);
00106		NetSpeedCombo.AddItem(NetSpeeds[0]);
00107		NetSpeedCombo.AddItem(NetSpeeds[1]);
00108		NetSpeedCombo.AddItem(NetSpeeds[2]);
00109	
00110		if (class'Player'.default.ConfiguredInternetSpeed > 12500)
00111			NetSpeedCombo.SetSelectedIndex(2);
00112		else if (class'Player'.default.ConfiguredInternetSpeed >= 4000) 
00113			NetSpeedCombo.SetSelectedIndex(1);
00114		else 
00115			NetSpeedCombo.SetSelectedIndex(0);
00116	}
00117	
00118	/*function WindowShown()
00119	{
00120		Super.WindowShown();
00121		if (Initialized)
00122		{
00123			LoadCurrent();
00124			UseSelected();
00125		}
00126	}*/
00127	
00128	function AfterCreate()
00129	{
00130		Super.AfterCreate();
00131	
00132		DesiredWidth = 220;
00133		DesiredHeight = ControlOffset + 25;
00134	
00135		Initialized = True;
00136	
00137		LoadCurrent();
00138		UseSelected();
00139	}
00140	
00141	function LoadClasses()
00142	{
00143		local int NumPlayerClasses;
00144		local string NextPlayer, NextDesc;
00145		local int SortWeight;
00146	
00147		GetPlayerOwner().GetNextIntDesc(PlayerBaseClass, 0, NextPlayer, NextDesc);
00148		while( (NextPlayer != "") && (NumPlayerClasses < 64) )
00149		{
00150			ClassCombo.AddItem(NextDesc, NextPlayer, SortWeight);
00151			NumPlayerClasses++;
00152			GetPlayerOwner().GetNextIntDesc(PlayerBaseClass, NumPlayerClasses, NextPlayer, NextDesc);
00153		}
00154		ClassCombo.Sort();
00155	}
00156	
00157	function LoadCurrent()
00158	{
00159		local string SN;
00160		local int NewTeam;
00161	
00162		NameEdit.SetValue(GetPlayerOwner().PlayerReplicationInfo.PlayerName);
00163		NewTeam = GetPlayerOwner().PlayerReplicationInfo.Team;
00164		TeamCombo.SetSelectedIndex(Max(TeamCombo.FindItemIndex2(string(NewTeam)), 0));
00165	
00166		ClassCombo.SetSelectedIndex(Max(ClassCombo.FindItemIndex2(string(GetPlayerOwner().Class), True), 0));
00167		SN = string(GetPlayerOwner().CurrentSkin);
00168		SkinCombo.SetSelectedIndex(Max(SkinCombo.FindItemIndex2(SN, True), 0));
00169	}
00170	
00171	function IterateSkins()
00172	{
00173		local int numskins;
00174		local int i;
00175	
00176		SkinCombo.Clear();
00177	
00178		if( ClassIsChildOf(NewPlayerClass, class'Spectator') )
00179		{
00180			SkinCombo.HideWindow();
00181			return;
00182		}
00183		else
00184			SkinCombo.ShowWindow();
00185	
00186		numskins = NewPlayerClass.static.GetNumSkins();
00187		for (i=0; i<numskins; i++)
00188		{
00189			SkinCombo.AddItem(NewPlayerClass.static.GetSkinName(i), string(i));
00190		}
00191	}
00192	
00193	
00194	function BeforePaint(Canvas C, float X, float Y)
00195	{
00196		local int ControlWidth, ControlLeft, ControlRight;
00197		local int CenterWidth, CenterPos;
00198		local float W;
00199	
00200		W = Min(WinWidth, 220);
00201	
00202		ControlWidth = W/3;
00203		ControlLeft = (W/2 - ControlWidth)/2;
00204		ControlRight = W/2 + ControlLeft;
00205	
00206		CenterWidth = (W/7)*6;
00207		CenterPos = (W - CenterWidth)/2;
00208	
00209		NameEdit.SetSize(CenterWidth, 1);
00210		NameEdit.WinLeft = CenterPos;
00211		NameEdit.EditBoxWidth = 105;
00212	
00213		TeamCombo.SetSize(CenterWidth, 1);
00214		TeamCombo.WinLeft = CenterPos;
00215		TeamCombo.EditBoxWidth = 105;
00216	
00217		SkinCombo.SetSize(CenterWidth, 1);
00218		SkinCombo.WinLeft = CenterPos;
00219		SkinCombo.EditBoxWidth = 105;
00220	
00221		ClassCombo.SetSize(CenterWidth, 1);
00222		ClassCombo.WinLeft = CenterPos;
00223		ClassCombo.EditBoxWidth = 105;
00224	
00225		NetSpeedCombo.SetSize(CenterWidth, 1);
00226		NetSpeedCombo.WinLeft = CenterPos;
00227		NetSpeedCombo.EditBoxWidth = 105;
00228	}
00229	
00230	function Notify(UWindowDialogControl C, byte E)
00231	{
00232		Super.Notify(C, E);
00233	
00234		switch(E)
00235		{
00236		case DE_Change:
00237			switch(C)
00238			{
00239				case NameEdit:
00240					NameChanged();
00241					break;
00242				case TeamCombo:
00243					TeamChanged();
00244					break;
00245				case SkinCombo:
00246					SkinChanged();
00247					break;
00248				case ClassCombo:
00249					ClassChanged();
00250					break;
00251				case NetSpeedCombo:
00252					NetSpeedChanged();
00253					break;
00254			}
00255		}
00256	}
00257	
00258	
00259	/*
00260	 * Message Crackers
00261	 */
00262	
00263	function NameChanged()
00264	{
00265		local string N;
00266		if (Initialized)
00267		{
00268			Initialized = False;
00269			N = NameEdit.GetValue();
00270			ReplaceText(N, " ", "_");
00271			NameEdit.SetValue(N);
00272			Initialized = True;
00273	
00274			GetPlayerOwner().ChangeName(NameEdit.GetValue());
00275			GetPlayerOwner().UpdateURL("Name", NameEdit.GetValue(), True);
00276		}
00277	}
00278	
00279	function TeamChanged()
00280	{
00281		if (Initialized)
00282			UseSelected();
00283	}
00284	
00285	function SkinChanged()
00286	{
00287		if (Initialized)
00288			UseSelected();
00289	}
00290	
00291	
00292	function ClassChanged()
00293	{
00294		local string SkinName, SkinDesc;
00295		local bool OldInitialized;
00296		local int P;
00297	
00298		// Get the class.
00299		NewPlayerClass = class<Pawn>(DynamicLoadObject(ClassCombo.GetValue2(), class'Class'));
00300	
00301		OldInitialized = Initialized;
00302		Initialized = False;
00303	
00304		IterateSkins();
00305		SkinCombo.SetSelectedIndex(0);
00306	
00307		Initialized = OldInitialized;
00308	
00309		if (Initialized)
00310			UseSelected();
00311	}
00312	
00313	function NetSpeedChanged()
00314	{
00315		local int NewSpeed;
00316	
00317		if (!Initialized)
00318			return;
00319	
00320		switch(NetSpeedCombo.GetSelectedIndex())
00321		{
00322			case 0:
00323				NewSpeed = 2600;
00324				break;
00325			case 1:
00326				NewSpeed = 5000;
00327				break;
00328			case 2:
00329				NewSpeed = 20000;
00330				break;
00331		}
00332		GetPlayerOwner().ConsoleCommand("NETSPEED "$NewSpeed);
00333	}
00334	
00335	function UseSelected()
00336	{
00337		local int NewTeam;
00338	
00339		NewTeam = 255;
00340		if (Initialized)
00341		{
00342			GetPlayerOwner().UpdateURL("Class", ClassCombo.GetValue2(), True);
00343			GetPlayerOwner().UpdateURL("Skin", SkinCombo.GetValue2(), True);
00344			GetPlayerOwner().UpdateURL("Team", TeamCombo.GetValue2(), True);
00345			NewTeam = Int(TeamCombo.GetValue2());
00346	
00347			// if the same class as current class, change skin
00348			if( ClassCombo.GetValue2() ~= String( GetPlayerOwner().Class ))
00349				GetPlayerOwner().ServerChangeSkin(int(SkinCombo.GetValue2()));
00350	
00351			if( GetPlayerOwner().PlayerReplicationInfo.Team != NewTeam )
00352				GetPlayerOwner().ChangeTeam(NewTeam);
00353		}
00354	
00355		MeshWindow.SetClass(NewPlayerClass);
00356		MeshWindow.SetTeam(NewTeam);
00357	//	MeshWindow.SetMesh(NewPlayerClass.Default.SkelMesh);
00358		NewPlayerClass.static.SetSkinActor(MeshWindow.PlayerMesh, int(SkinCombo.GetValue2()));
00359	}
00360	
00361	function SaveConfigs()
00362	{
00363		Super.SaveConfigs();
00364		GetPlayerOwner().SaveConfig();
00365		GetPlayerOwner().PlayerReplicationInfo.SaveConfig();
00366	}
00367	
00368	defaultproperties
00369	{
00370	     ControlOffset=25
00371	     PlayerBaseClass="Runei.RunePlayer"
00372	     NameText="Name:"
00373	     NameHelp="Set your player name."
00374	     TeamText="Team:"
00375	     Teams(0)="Red"
00376	     Teams(1)="Blue"
00377	     Teams(2)="Green"
00378	     Teams(3)="Gold"
00379	     NoTeam="None"
00380	     TeamHelp="Select the team you wish to play on."
00381	     ClassText="Class:"
00382	     ClassHelp="Select your player class."
00383	     SkinText="Skin:"
00384	     SkinHelp="Choose a skin for your player."
00385	     NetSpeedText="Net Connection"
00386	     NetSpeedHelp="Select the closest match to your internet connection. Try selecting a lower setting if you're getting huge lag."
00387	     NetSpeeds(0)="Modem (28.8K - 56K)"
00388	     NetSpeeds(1)="ISDN"
00389	     NetSpeeds(2)="LAN, Cable, DSL"
00390	}

End Source Code