OpenBve.Menu.ProcessCommand C# (CSharp) Méthode

ProcessCommand() private méthode

Processes a user command for the current menu
private ProcessCommand ( Interface cmd, double timeElapsed ) : void
cmd Interface The command to apply to the current menu
timeElapsed double The time elapsed since previous frame
Résultat void
		internal void ProcessCommand(Interface.Command cmd, double timeElapsed)
		{
			
			if (CurrMenu < 0)
			{
				return;
			}
			// MenuBack is managed independently from single menu data
			if (cmd == Interface.Command.MenuBack)
			{
				PopMenu();
				return;
			}

			SingleMenu menu	= Menus[CurrMenu];
			if (menu.Selection == SelectionNone)	// if menu has no selection, do nothing
				return;
			switch (cmd)
			{
			case Interface.Command.MenuUp:		// UP
				if (menu.Selection > 0 &&
				    !(menu.Items[menu.Selection - 1] is MenuCaption))
				{
					menu.Selection--;
					PositionMenu();
				}
				break;
			case Interface.Command.MenuDown:	// DOWN
				if (menu.Selection < menu.Items.Length - 1)
				{
					menu.Selection++;
					PositionMenu();
				}
				break;
//			case Interface.Command.MenuBack:	// ESC:	managed above
//				break;
			case Interface.Command.MenuEnter:	// ENTER
				if (menu.Items[menu.Selection] is MenuCommand)
				{
					MenuCommand menuItem = (MenuCommand)menu.Items[menu.Selection];
					switch (menuItem.Tag)
					{
					// menu management commands
					case MenuTag.MenuBack:				// BACK TO PREVIOUS MENU
						Menu.instance.PopMenu();
						break;
					case MenuTag.MenuJumpToStation:		// TO STATIONS MENU
						Menu.instance.PushMenu(MenuType.JumpToStation);
						break;
					case MenuTag.MenuExitToMainMenu:	// TO EXIT MENU
						Menu.instance.PushMenu(MenuType.ExitToMainMenu);
						break;
					case MenuTag.MenuQuit:				// TO QUIT MENU
						Menu.instance.PushMenu(MenuType.Quit);
						break;
					case MenuTag.MenuControls:			// TO CONTROLS MENU
						Menu.instance.PushMenu(MenuType.Controls);
						break;
					case MenuTag.BackToSim:				// OUT OF MENU BACK TO SIMULATION
						Reset();
						Game.CurrentInterface = Game.InterfaceType.Normal;
						break;

						// simulation commands
					case MenuTag.JumpToStation:			// JUMP TO STATION
						Reset();
						TrainManager.JumpTrain(TrainManager.PlayerTrain, menuItem.Data);
						break;
					case MenuTag.ExitToMainMenu:		// BACK TO MAIN MENU
						Reset();
						Program.RestartArguments =
							Interface.CurrentOptions.GameMode == Interface.GameMode.Arcade ? "/review" : "";
						MainLoop.Quit = true;
						break;
					case MenuTag.Control:				// CONTROL CUSTOMIZATION
						PushMenu(MenuType.Control, ((MenuCommand)menu.Items[menu.Selection]).Data);
						isCustomisingControl	= true;
						CustomControlIdx		= ((MenuCommand)menu.Items[menu.Selection]).Data;
						break;
					case MenuTag.Quit:					// QUIT PROGRAMME
						Reset();
						MainLoop.Quit = true;
						break;
					}
				}
				break;
			case Interface.Command.MiscFullscreen:
				// fullscreen
				Screen.ToggleFullscreen();
				break;
			case Interface.Command.MiscMute:
				// mute
				Sounds.GlobalMute = !Sounds.GlobalMute;
				Sounds.Update(timeElapsed, Interface.CurrentOptions.SoundModel);
				break;
			}
		}