RMenu
Class RuneMenu

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

class RuneMenu
extends RMenu.RuneWindow

//============================================================================= // RuneMenu -> Main Rune Menu Class //=============================================================================
Variables
 MultiMenu, AboutMenu
           GodAboutMenu;
 OptionsButton, ExitButton
 string ExitText
           GodAboutMenu;
 HHButton, GODButton
           GodAboutMenu;
 string HOVStr
           Halls of Valhalla status
 string LoadGameText
           GodAboutMenu;
 RuneMeshActor LogoMesh
           GodAboutMenu;
 vector LogoOffset
           GodAboutMenu;
 string MultiplayerText
           GodAboutMenu;
 string NewGameHelp,LoadGameHelp,SaveGameHelp,MultiplayerHelp,OptionsHelp,AboutHelp,ExitHelp
           GodAboutMenu;
 string NewGameText
           GodAboutMenu;
 string OptionsText
           GodAboutMenu;
 vector RotFactor
           GodAboutMenu;
 string SaveGameText
           GodAboutMenu;
 float TimeElapsed
           GodAboutMenu;
 RuneMenuLabelControl VersionLabel
           GodAboutMenu;
 CenterRotator, ViewRotator
           GodAboutMenu;
 bool bWalk
           GodAboutMenu;


Function Summary
 void AfterPaint(Canvas C, float X, float Y)
 void Close(optional bool)
 void Created()
     
//=============================================================================
// Superclass Function Overrides
//=============================================================================
 string GetVersionString()
 void HideSubmenusExcept(RuneMenuTopWindow Exclude)
 void Move(UWindowWindow W)
 void Notify(UWindowDialogControl C, byte E)
 void Paint(Canvas C, float X, float Y)
 void PreSize()
 void Resized()
 void SecretAction()
 void ShowWindow()
 void SpawnLogoMesh()
 void Tick(float DeltaTime)



Source Code


00001	//=============================================================================
00002	// RuneMenu	-> Main Rune Menu Class
00003	//=============================================================================
00004	class RuneMenu extends RuneWindow;
00005	
00006	#exec TEXTURE IMPORT NAME=HHLogo FILE=Textures\HHLogo.bmp GROUP="Icons" MIPS=OFF
00007	#exec TEXTURE IMPORT NAME=HHLogoS FILE=Textures\HHLogoSelected.bmp GROUP="Icons" MIPS=OFF
00008	//#exec TEXTURE IMPORT NAME=GODLogo FILE=Textures\GODLogo.bmp GROUP="Icons" MIPS=OFF
00009	//#exec TEXTURE IMPORT NAME=GODLogoS FILE=Textures\GODLogoSelected.bmp GROUP="Icons" MIPS=OFF
00010	
00011	//Controls
00012	var RuneButton NewButton, LoadButton, SaveButton, MultiButton, OptionsButton, ExitButton;
00013	var RuneMenuTopWindow NewMenu, LoadMenu, SaveMenu, OptionsMenu, MultiMenu, AboutMenu;//GodAboutMenu;
00014	var RuneMenuLabelControl VersionLabel;
00015	var bool bWalk;
00016	var rotator CenterRotator, ViewRotator;
00017	var RuneMeshActor LogoMesh;
00018	var vector LogoOffset;
00019	var vector RotFactor;
00020	var float TimeElapsed;
00021	
00022	var localized string NewGameText;
00023	var localized string LoadGameText;
00024	var localized string SaveGameText;
00025	var localized string MultiplayerText;
00026	var localized string OptionsText;
00027	var localized string ExitText;
00028	var localized string NewGameHelp,LoadGameHelp,SaveGameHelp,MultiplayerHelp,OptionsHelp,AboutHelp,ExitHelp;
00029	
00030	var UWindowButton HHButton, GODButton;
00031	
00032	var string HOVStr; // Halls of Valhalla status
00033	
00034	//=============================================================================
00035	// Superclass Function Overrides
00036	//=============================================================================
00037	
00038	function	Created()
00039	{
00040		local int ControlOffset;
00041	
00042		Super.Created();
00043	
00044		// Check if this machine has HOV Add-on installed
00045		HOVStr = GetPlayerOwner().ConsoleCommand("ISADDON");
00046	
00047		WinLeft = 0;
00048		WinTop = 0;
00049	
00050		DefaultWidth = 200;
00051		DefaultHeight = 460;
00052		WinWidth = DefaultWidth;
00053		WinHeight = DefaultHeight;
00054	
00055		ControlOffset = 100;
00056	
00057		if(HOVStr == "NONE")
00058			SpawnLogoMesh();
00059	
00060		if(HOVStr != "STANDALONE")
00061		{
00062			NewButton = RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00063			NewButton.Text=NewGameText;
00064			NewButton.SetHelpText(NewGameHelp);
00065			NewButton.WinLeft = 10;
00066			NewButton.WinTop = ControlOffset;
00067			NewButton.OverSound = Sound'LeftMouseOver';
00068			NewButton.DownSound = Sound'LeftButton';
00069			ControlOffset += 50;
00070	
00071			LoadButton=RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00072			LoadButton.Text=LoadGameText;
00073			LoadButton.SetHelpText(LoadGameHelp);
00074			LoadButton.WinLeft = 10;
00075			LoadButton.WinTop = ControlOffset;
00076			LoadButton.OverSound = Sound'LeftMouseOver';
00077			LoadButton.DownSound = Sound'LeftButton';
00078			ControlOffset += 50;
00079	
00080			SaveButton=RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00081			SaveButton.Text=SaveGameText;
00082			SaveButton.SetHelpText(SaveGameHelp);
00083			SaveButton.WinLeft = 10;
00084			SaveButton.WinTop = ControlOffset;
00085			SaveButton.OverSound = Sound'LeftMouseOver';
00086			SaveButton.DownSound = Sound'LeftButton';
00087			ControlOffset += 50;
00088		}
00089		else // HOV standalone correction
00090			ControlOffset += 50;
00091				
00092		MultiButton=RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00093		MultiButton.Text=MultiplayerText;
00094		MultiButton.SetHelpText(MultiplayerHelp);
00095		MultiButton.WinLeft = 10;
00096		MultiButton.WinTop = ControlOffset;
00097		MultiButton.OverSound = Sound'LeftMouseOver';
00098		MultiButton.DownSound = Sound'LeftButton';
00099		ControlOffset += 50;
00100	
00101		OptionsButton = RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00102		OptionsButton.Text = OptionsText;
00103		OptionsButton.SetHelpText(OptionsHelp);
00104		OptionsButton.WinLeft = 10;
00105		OptionsButton.WinTop = ControlOffset;
00106		OptionsButton.OverSound = Sound'LeftMouseOver';
00107		OptionsButton.DownSound = Sound'LeftButton';
00108		ControlOffset += 50;
00109	
00110		ExitButton = RuneButton(CreateControl(class'RuneButton', 0, 0, 180, 40));
00111		ExitButton.Text = ExitText;
00112		ExitButton.SetHelpText(ExitHelp);
00113		ExitButton.WinLeft = 10;
00114		ExitButton.OverSound = Sound'LeftMouseOver';
00115		ExitButton.WinTop = ControlOffset;
00116		ExitButton.DownSound = Sound'LeftButton';
00117		ControlOffset += 50;	//47
00118	
00119		if(HOVStr == "STANDALONE") // HOV correction
00120			ControlOffset += 100;
00121	
00122		// Logo Buttons
00123		HHButton = UWindowButton(CreateControl(class'UWindowButton', 120, ControlOffset, 64, 60));
00124		HHButton.SetHelpText(AboutHelp);
00125		HHButton.UpTexture = Texture'HHLogo';
00126		HHButton.DownTexture = Texture'HHLogoS';
00127		HHButton.OverTexture = Texture'HHLogoS';
00128		HHButton.bStretched = true;
00129		HHButton.OverSound = Sound'LeftMouseOver';
00130		HHButton.DownSound = Sound'LeftButton';
00131	
00132	//	GODButton = UWindowButton(CreateControl(class'UWindowButton', 20, ControlOffset, 64, 32));
00133	//	GODButton.SetHelpText(AboutHelp);
00134	//	GODButton.UpTexture = Texture'GodLogo';
00135	//	GODButton.DownTexture = Texture'GodLogoS';
00136	//	GODButton.OverTexture = Texture'GodLogoS';
00137	//	GODButton.bStretched = true;
00138	//	GODButton.OverSound = Sound'LeftMouseOver';
00139	//	GODButton.DownSound = Sound'LeftButton';
00140	
00141		// Engine Version
00142	/*	VersionLabel = RuneMenuLabelControl(CreateWindow(class'RuneMenuLabelControl', 0, 0, 180, 1));
00143		VersionLabel.SetText("Version:"@GetVersionString());
00144		VersionLabel.SetFont(F_Normal);
00145		VersionLabel.WinLeft = 10;
00146		VersionLabel.WinTop = WinHeight-12;
00147		VersionLabel.bAlwaysOnTop = true;*/
00148	
00149		// Invisible buttons
00150		if(HOVStr != "STANDALONE")
00151		{
00152			NewButton.ButtonTexture = None;
00153			LoadButton.ButtonTexture = None;
00154			SaveButton.ButtonTexture = None;
00155		}
00156	
00157		MultiButton.ButtonTexture = None;
00158		OptionsButton.ButtonTexture = None;
00159		ExitButton.ButtonTexture = None;
00160	}
00161	
00162	function string GetVersionString()
00163	{
00164		local string text, versionstring;
00165	
00166		text = "00"$GetEntryLevel().EngineVersion;
00167		text = Right(text, 3);
00168	
00169		if (GetPlayerOwner() != None && GetPlayerOwner().bCheatsEnabled)
00170			versionstring = Left(Text,1) $ "." $ Right(Text,2) @ "Build" @ GetEntryLevel().BuildNumber;
00171		else
00172			versionstring = Left(Text,1) $ "." $ Right(Text,2);
00173	
00174		return versionstring;
00175	}
00176	
00177	function SpawnLogoMesh()
00178	{
00179	//	LogoMesh = GetEntryLevel().Spawn(class'RuneLookMesh', GetEntryLevel());
00180	//	LogoMesh.Skeletal = SkelModel'Goblin';
00181	//	LogoMesh.SkelMesh = 0;
00182	//	LogoMesh.LoopAnim('idleA', 1.0, 0.1);
00183	
00184		LogoMesh = GetEntryLevel().Spawn(class'RuneMeshActor', GetEntryLevel());
00185		LogoMesh.Skeletal = SkelModel'RuneLogo';
00186		LogoMesh.SkelMesh = 1;
00187		LogoMesh.SubstituteMesh = None;
00188		LogoMesh.bMeshEnviroMap=True;
00189		LogoMesh.SetDefaultPolyGroups();
00190	
00191		ViewRotator = rot(0, 32768, 0) + CenterRotator;
00192	}
00193	
00194	function Close(optional bool bByParent)
00195	{
00196		Root.Console.CloseUWindow();
00197	}
00198	
00199	function PreSize()
00200	{
00201	}
00202	
00203	function Tick(float DeltaTime)
00204	{
00205		local rotator r;
00206	
00207		TimeElapsed += DeltaTime;
00208		r.Pitch = Cos(TimeElapsed) * RotFactor.X;
00209		r.Yaw = Sin(TimeElapsed) * RotFactor.Y;
00210	//	r.Roll = Sin(TimeElapsed) * RotFactor.Z;
00211		r.Roll = 0;
00212		ViewRotator = rot(0, 32768, 0) + CenterRotator + r;
00213	}
00214	
00215	function Paint(Canvas C,float X,float Y)
00216	{
00217		local float OldFov;
00218	
00219		Super.Paint(C,X,Y);
00220	
00221	//	LookAndFeel.DrawClientArea(Self, C);	// Tiled
00222		if(HOVStr == "STANDALONE")
00223		{
00224			DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight / 2, Texture'SideBackHOV1');
00225			DrawStretchedTexture(C, 0, WinHeight / 2, WinWidth, WinHeight / 2, Texture'SideBackHOV2');
00226		}
00227		else if(HOVStr == "ADDON")
00228		{
00229			DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight, Texture'SideBack');
00230			DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight / 4, Texture'SBHOVTop');
00231		}
00232		else
00233		{
00234			DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight, Texture'SideBack');
00235			if (LogoMesh!=None)
00236			{
00237				OldFov = GetPlayerOwner().FOVAngle;
00238				GetPlayerOwner().SetFOVAngle(30);
00239				DrawClippedActor( C, WinWidth/2, WinHeight/2, LogoMesh, False, ViewRotator, LogoOffset );
00240				GetPlayerOwner().SetFOVAngle(OldFov);
00241			}
00242			else
00243			{
00244				SpawnLogoMesh();
00245			}
00246		}
00247	}
00248	
00249	function AfterPaint(Canvas C, float X, float Y)
00250	{
00251		// Draw version over everything
00252		C.Font = Root.Fonts[F_Normal];
00253		C.SetPos(10, Root.GUIScale*WinHeight - Root.GUIScale*12);
00254		C.DrawText(GetVersionString());
00255	}
00256	
00257	function Notify(UWindowDialogControl C, byte E)
00258	{
00259		if(E == DE_Click)
00260		{
00261			switch(C)
00262			{
00263				case NewButton:
00264					HideSubmenusExcept(NewMenu);
00265					if(NewMenu == None)
00266						NewMenu = RuneMenuTopWindow(Root.Createwindow(class'RuneMenuNewTop', 0, 0, 440, 100));
00267					NewMenu.ShowWindow();
00268					if(NewMenu!=None && !NewMenu.bOpen)
00269						NewMenu.SlideOpen();
00270					break;
00271				case LoadButton:
00272					HideSubmenusExcept(LoadMenu);
00273					if(LoadMenu == None)
00274						LoadMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuLoadTop', 0, 0, 440, 100));
00275					LoadMenu.ShowWindow();
00276					if(LoadMenu!=None && !LoadMenu.bOpen)
00277						LoadMenu.SlideOpen();
00278					break;
00279				case SaveButton:
00280					HideSubmenusExcept(SaveMenu);
00281					if(SaveMenu == None)
00282						SaveMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuSaveTop', 0, 0, 440, 100));
00283					SaveMenu.ShowWindow();
00284					if(SaveMenu!=None && !SaveMenu.bOpen)
00285						SaveMenu.SlideOpen();
00286					break;
00287				case OptionsButton:
00288					HideSubmenusExcept(OptionsMenu);
00289					if(OptionsMenu == None)
00290						OptionsMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuOptionsTop', 0, 0, 440, 100));
00291					OptionsMenu.ShowWindow();
00292					if(OptionsMenu!=None && !OptionsMenu.bOpen)
00293						OptionsMenu.SlideOpen();
00294					break;
00295				case MultiButton:
00296					HideSubmenusExcept(MultiMenu);
00297					if(MultiMenu == None)
00298						MultiMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuMultiplayerTop', 0, 0, 440, 100));
00299					MultiMenu.ShowWindow();
00300					if(MultiMenu!=None && !MultiMenu.bOpen)
00301						MultiMenu.SlideOpen();
00302					break;
00303				case ExitButton:
00304					HideSubmenusExcept(None);
00305					Root.Console.ConsoleCommand("Exit");
00306					break;
00307				case HHButton:
00308					HideSubmenusExcept(AboutMenu);
00309					if (AboutMenu == None)
00310						AboutMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuAboutTop', 0, 0, 440, 100));
00311					AboutMenu.ShowWindow();
00312					if(AboutMenu!=None && !AboutMenu.bOpen)
00313						AboutMenu.SlideOpen();
00314					break;
00315	//			case GodButton:
00316	//				HideSubmenusExcept(GodAboutMenu);
00317	//				if (GodAboutMenu == None)
00318	//					GodAboutMenu = RuneMenuTopWindow(Root.CreateWindow(class'RuneMenuGodAboutTop', 0, 0, 440, 100));
00319	//				GodAboutMenu.ShowWindow();
00320	//				if(GodAboutMenu!=None && !GodAboutMenu.bOpen)
00321	//					GodAboutMenu.SlideOpen();
00322	//				break;
00323			}
00324		}
00325	}
00326	
00327	function ShowWindow()
00328	{
00329		Super.ShowWindow();
00330	
00331		HideSubmenusExcept(None);
00332	}
00333	
00334	function HideSubmenusExcept(RuneMenuTopWindow Exclude)
00335	{
00336		local Color Col;
00337	
00338		if (NewMenu!=None && NewMenu!=Exclude)
00339		{
00340			NewMenu.HideWindow();
00341			NewMenu.HideAllWindows();
00342		}
00343	
00344		if (LoadMenu!=None && LoadMenu!=Exclude)
00345		{
00346			LoadMenu.HideWindow();
00347			LoadMenu.HideAllWindows();
00348		}
00349	
00350		if (SaveMenu!=None && SaveMenu!=Exclude)
00351		{
00352			SaveMenu.HideWindow();
00353			SaveMenu.HideAllWindows();
00354		}
00355	
00356		if (OptionsMenu!=None && OptionsMenu!=Exclude)
00357		{
00358			OptionsMenu.HideWindow();
00359			OptionsMenu.HideAllWindows();
00360		}
00361	
00362		if (MultiMenu!=None && MultiMenu!=Exclude)
00363		{
00364			MultiMenu.HideWindow();
00365			MultiMenu.HideAllWindows();
00366		}
00367	
00368		if (AboutMenu!=None && AboutMenu!=Exclude)
00369		{
00370			AboutMenu.HideWindow();
00371			AboutMenu.HideAllWindows();
00372		}
00373	
00374	/*	if (GodAboutMenu!=None && GodAboutMenu!=Exclude)
00375		{
00376			GodAboutMenu.HideWindow();
00377			GodAboutMenu.HideAllWindows();
00378		}
00379	*/
00380		// Reset all button colors
00381		if(HOVStr != "STANDALONE")
00382		{
00383			NewButton.ResetTextColor();
00384			LoadButton.ResetTextColor();
00385			SaveButton.ResetTextColor();
00386		}
00387	
00388		MultiButton.ResetTextColor();
00389		OptionsButton.ResetTextColor();
00390		ExitButton.ResetTextColor();
00391	}
00392	
00393	function Resized()
00394	{	
00395		Notify(NewButton, DE_Click);
00396	}
00397	
00398	function SecretAction()
00399	{
00400		bWalk = !bWalk;
00401	}
00402	
00403	function Move(UWindowWindow W)
00404	{
00405		if (bWalk)
00406		{
00407			W.WinLeft += RandRange(-5,5);
00408			W.WinTop  += RandRange(-5,5);
00409			W.WinLeft = Clamp(W.WinLeft, 0, 640-W.WinWidth);
00410			W.WinTop  = Clamp(W.WinTop,  0, 480-W.WinHeight);
00411			//Root.Console.AddString("Moving"@W.name@W.WinLeft@W.WinTop);
00412		}
00413	}
00414	
00415	defaultproperties
00416	{
00417	     LogoOffset=(X=15.000000,Z=13.400000)
00418	     RotFactor=(X=2000.000000,Y=4000.000000)
00419	     NewGameText="New Game"
00420	     LoadGameText="Load Game"
00421	     SaveGameText="Save Game"
00422	     MultiplayerText="Multiplayer"
00423	     OptionsText="Options"
00424	     ExitText="Exit"
00425	     NewGameHelp="Start a new game"
00426	     LoadGameHelp="Load a saved game"
00427	     SaveGameHelp="Save the current game"
00428	     MultiplayerHelp="Multiplayer game options"
00429	     OptionsHelp="Set Audio, Video, Input, Control options"
00430	     AboutHelp="Credits, Links"
00431	     ExitHelp="Exit"
00432	     DefaultWidth=200
00433	     DefaultHeight=460
00434	     bAlwaysOnTop=True
00435	}

End Source Code