RMenu
Class RMenuModTop

source: c:\runehov\RMenu\Classes\RMenuModTop.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UWindow.UWindowDialogClientWindow
               |
               +--RMenu.RuneWindow
                  |
                  +--RMenu.RuneMenuTopWindow
                     |
                     +--RMenu.RMenuModTop
Direct Known Subclasses:None

class RMenuModTop
extends RMenu.RuneMenuTopWindow

// // Thanks to Rus 'Nurail' Clark for integrating this code //
Variables
 string ModBlank
 UWindowComboControl ModCombo
 UWindowComboList ModComboList
 string ModText
 UWindowWindow ModWindow
 RMenuModList Modlist
 class PrevModClass
 float SlideRate
 float XAlpha
 bool bOpen
 bool bOpening


Function Summary
 void BeforePaint(Canvas C, float X, float Y)
 void Created()
 void DoneOpening()
 void FillList(UWindowComboControl MCControl)
 void HideWindow()
 void ModComboSelect()
 void Notify(UWindowDialogControl C, byte E)
 void SlideOpen()
 void Tick(float DeltaTime)



Source Code


00001	//
00002	// Thanks to Rus 'Nurail' Clark for integrating this code
00003	//
00004	
00005	class RMenuModTop extends RuneMenuTopWindow;
00006	
00007	var float SlideRate;
00008	var float XAlpha;
00009	var bool bOpening;
00010	var bool bOpen;
00011	
00012	var UWindowComboControl ModCombo;
00013	var RMenuModList Modlist;
00014	var UWindowComboList ModComboList;
00015	
00016	var UWindowWindow ModWindow;
00017	var class<UWindowWindow> PrevModClass;
00018	
00019	var localized string ModText;
00020	var localized string ModBlank;
00021	
00022	function Created()
00023	{
00024	     local int CenterWidth, CenterPos;
00025	
00026	     Super.Created();
00027	
00028	     CenterWidth = (WinWidth/4)*3;
00029	     CenterPos = (WinWidth - CenterWidth)/2;
00030	
00031	     ModCombo = UWindowComboControl(CreateControl(class'UWindowComboControl', 0, 0, CenterWidth, 1));
00032		 ModCombo.SetButtons(True);
00033	     ModCombo.SetText(ModText);
00034	     ModCombo.SetFont(F_Normal);
00035	     ModCombo.SetEditable(False);
00036		 FillList(ModCombo);
00037	
00038	}
00039	
00040	function BeforePaint(Canvas C, float X, float Y)
00041	{
00042	     local int CenterWidth, CenterPos;
00043	
00044	     CenterWidth = (WinWidth/4)*3;
00045	     CenterPos = (WinWidth - CenterWidth)/2;
00046	
00047	     ModCombo.WinLeft = CenterPos;
00048	     ModCombo.WinTop = 11;
00049	     ModCombo.EditBoxWidth = 150;
00050	
00051	}
00052	
00053	function HideWindow()
00054	{
00055		bAlwaysOnTop=false;
00056		Super.HideWindow();
00057		bOpen = false;
00058		bOpening = false;
00059		WinLeft=200;
00060		WinTop=100;
00061		if (ModWindow != None)
00062			ModWindow.HideWindow();
00063	}
00064	
00065	function SlideOpen()
00066	{
00067		bAlwaysOnTop=false;
00068		bOpening = true;
00069		bOpen = false;
00070		WinLeft=200;
00071		WinTop=100;
00072		XAlpha=0;
00073	
00074		LookAndFeel.PlayMenuSound(Self, MS_TopSlide);
00075	}
00076	
00077	function DoneOpening()
00078	{
00079		bAlwaysOnTop=true;
00080		bOpening = false;
00081		bOpen = true;
00082		LookAndFeel.PlayMenuSound(Self, MS_TopSlam);
00083	}
00084	
00085	function Tick(float DeltaTime)
00086	{
00087		local float PositionAlpha;
00088	
00089		if (bOpening)
00090		{
00091			XAlpha += DeltaTime * SlideRate;
00092			if (XAlpha >= 1.0)
00093				DoneOpening();
00094			XAlpha = FClamp(XAlpha, 0.0, 1.0);
00095			PositionAlpha = CubicBlend(XAlpha, 0, 1, 1.0, 1.5);
00096			WinTop = 100.0*PositionAlpha;
00097		}
00098	}
00099	
00100	function Notify(UWindowDialogControl C, byte E)
00101	{
00102		Super.Notify(C, E);
00103	
00104		switch(E)
00105		{
00106		case DE_Change:
00107			switch(C)
00108			{
00109				case ModCombo:
00110					ModComboSelect();
00111					break;
00112			}
00113		}
00114	}
00115	
00116	function ModComboSelect()
00117	{
00118		local RMenuModList NewRList;
00119		local string ModSelected;
00120		
00121		ModSelected = ModCombo.GetValue();
00122		
00123		NewRList = RMenuModList(ModList.Next);
00124	
00125		while ( (NewRList != None) && (NewRList.MenuCaption != ModSelected) )
00126			NewRList = RMenuModList(NewRList.Next);
00127	
00128		if (NewRList.MenuCaption == "")
00129		{
00130			Log("RMenuModTop.ModComboSelect - Mod -"$ModSelected$"- Not Found");
00131			return;
00132		}
00133	
00134		if (ModWindow == None)
00135			PrevModClass = NewRList.ModPageWindowClass;
00136		else if((PrevModClass != NewRList.ModPageWindowClass) && (ModWindow != None))
00137		{
00138			ModWindow.HideWindow();	
00139			ModWindow = None;
00140			PrevModClass = NewRList.ModPageWindowClass;
00141		}
00142		
00143		if((NewRList.MenuWidth<2) || (NewRList.MenuWidth>440))
00144		{
00145			if(NewRList.MenuWidth<2)
00146				NewRList.MenuWidth=2;
00147			else
00148				NewRList.MenuWidth=440;
00149		}
00150	
00151		if((NewRList.MenuHeight<2) || (NewRList.MenuHeight>320))
00152		{
00153			if(NewRList.MenuHeight<2)
00154				NewRList.MenuHeight=2;
00155			else
00156				NewRList.MenuHeight=320;
00157		}
00158	
00159		if((NewRList.MenuWidthStartOffset<0) || ( NewRList.MenuWidthStartOffset > 438)) 
00160			NewRList.MenuWidthStartOffset = 0;
00161	
00162		if( (NewRList.MenuWidthStartOffset+NewRList.MenuWidth) > 440 )
00163			NewRList.MenuWidth = 440 - NewRList.MenuWidthStartOffset;	
00164	
00165		if(ModWindow == None)
00166			ModWindow = Root.CreateWindow(NewRList.ModPageWindowClass, (200 + NewRList.MenuWidthStartOffset), 140, NewRList.MenuWidth, NewRList.MenuHeight);
00167		if(ModWindow != None)
00168			ModWindow.ShowWindow();
00169	
00170	}
00171	
00172	function FillList(UWindowComboControl MCControl)
00173	{
00174		local int NumRModClasses;
00175	    local string NextRModClass, NextRModDesc;
00176	    local int i;
00177	    local RMenuModList NewRList;
00178	    local RMenuModItem TempRItem;
00179		
00180		GetPlayerOwner().GetNextIntDesc("RMenu.RMenuModItem", 0, NextRModClass, NextRModDesc);
00181		       
00182	    Modlist = New class'RMenuModList';
00183	    Modlist.SetupSentinel();
00184		ModComboList = New class'UWindowComboList';
00185	
00186	    while( (NextRModClass != "") && (NumRModClasses < 25) )
00187	    {
00188	        TempRItem = New class<RMenuModItem>(DynamicLoadObject(NextRModClass, class'Class'));
00189	     	if ( TempRItem != None)
00190			{
00191				NewRList = RMenuModList(ModList.Append(class'RMenuModList'));
00192				if(NextRModDesc != "")
00193				{
00194				    i = InStr(NextRModDesc, ",");
00195				    if(i==-1)
00196				        NewRList.MenuCaption = NextRModDesc;
00197				    else
00198				    {
00199				        NewRList.MenuCaption = Left(NextRModDesc, i);
00200				    }
00201				}
00202				else
00203				{
00204				    NewRList.MenuCaption = TempRItem.MenuCaption;
00205				}
00206				NewRList.MenuWidth = TempRItem.MenuWidth;
00207				NewRList.MenuHeight = TempRItem.MenuHeight;
00208				NewRList.MenuWidthStartOffset = TempRItem.MenuWidthStartOffset;
00209				NewRList.ModPageWindowClass=TempRItem.ModPageWindowClass;
00210				MCControl.AddItem(NewRList.MenuCaption);
00211			}
00212			NumRModClasses++;
00213			GetPlayerOwner().GetNextIntDesc("RMenu.RMenuModItem", NumRModClasses, NextRModClass, NextRModDesc);
00214		}
00215	}
00216	
00217	defaultproperties
00218	{
00219	     SlideRate=1.500000
00220	     ModText="Select Mod: "
00221	     ModBlank="   "
00222	}

End Source Code