Пример #1
0
 /********************
  *      PUBLIC METHODS
  *********************/
 //
 // PROCESS COMMAND
 //
 /// <summary>Processes commands.</summary>
 /// <returns><c>true</c>, if command was processed, <c>false</c> otherwise.</returns>
 /// <param name="command">The Interface.Command command to process.</param>
 internal bool ProcessCommand(Interface.Command command)
 {
     if (command != Interface.Command.RouteInformation)                  // only accept RouteInformation command
     {
         return(false);
     }
     // cycle through available state
     setState((state)((int)(currentState + 1) % (int)state.numOf));
     return(true);
 }
Пример #2
0
        //
        // PROCESS MENU COMMAND
        //
        /// <summary>Processes a user command for the current menu</summary>
        /// <param name="cmd">The command to apply to the current menu</param>
        /// <param name="timeElapsed">The time elapsed since previous frame</param>
        internal void ProcessCommand(Interface.Command cmd, double timeElapsed)
        {
            // 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;
            }
        }