/// <summary> /// get a action menu choice from the user /// </summary> /// <returns>action menu choice</returns> public AdamaAction GetActionMenuChoice(Menu menu) { AdamaAction choosenAction = AdamaAction.None; // // Handles exception in case user presses a key other than // one of the keys related to menu choices bool validKeyStroke = false; while (!validKeyStroke) { try { ConsoleKeyInfo keyPressedInfo = Console.ReadKey(); char keyPressed = keyPressedInfo.KeyChar; choosenAction = menu.MenuChoices[keyPressed]; } catch (KeyNotFoundException) { DisplayInputBoxPrompt("Invalid keystroke! Please enter a menu choice by using 1, 2 ... etc."); continue; } validKeyStroke = true; } return(choosenAction); }
/// <summary> /// display the correct menu/sub-menu and get the next traveler action /// </summary> /// <returns>traveler action</returns> private AdamaAction GetNextTravelerAction() { AdamaAction travelerActionChoice = AdamaAction.None; switch (ActionMenu.currentMenu) { case ActionMenu.CurrentMenu.MainMenu: travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.MainMenu); break; case ActionMenu.CurrentMenu.ObjectMenu: travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.ObjectMenu); break; case ActionMenu.CurrentMenu.NpcMenu: travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.NpcMenu); break; case ActionMenu.CurrentMenu.TravelerMenu: travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.TravelerMenu); break; case ActionMenu.CurrentMenu.AdminMenu: travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.AdminMenu); break; default: break; } return(travelerActionChoice); }
/// <summary> /// method to manage the application setup and game loop /// </summary> private void ManageGameLoop() { AdamaAction travelerActionChoice = AdamaAction.None; // // display splash screen // _playingGame = _gameConsoleView.DisplaySpashScreen(); // // player chooses to quit // if (!_playingGame) { Environment.Exit(1); } // // display introductory message // _gameConsoleView.DisplayGamePlayScreen("Mission Intro", Text.MissionIntro(), ActionMenu.MissionIntro, ""); _gameConsoleView.GetContinueKey(); // // initialize the mission traveler // InitializeMission(); // // prepare game play screen // _currentLocation = _gameUniverse.GetSpaceTimeLocationById(_sar.SpaceTimeLocationID); _gameConsoleView.DisplayGamePlayScreen("Current Location", Text.CurrentLocationInfo(_currentLocation), ActionMenu.MainMenu, ""); // // game loop // while (_playingGame) { // // process all flags, events, and stats // UpdateGameStatus(); // // get next game action from player // travelerActionChoice = GetNextTravelerAction(); // // choose an action based on the player's menu choice // switch (travelerActionChoice) { case AdamaAction.None: break; case AdamaAction.AdamaInfo: _gameConsoleView.DisplayTravelerInfo(_sar); break; case AdamaAction.LookAround: _gameConsoleView.DisplayLookAround(); break; case AdamaAction.Travel: TravelAction(); break; case AdamaAction.AdamaLocationsVisited: _gameConsoleView.DisplayLocationsVisited(); break; case AdamaAction.LookAt: LookAtAction(); break; case AdamaAction.PickUp: PickUpAction(); break; case AdamaAction.PutDown: PutDownAction(); break; case AdamaAction.Inventory: _gameConsoleView.DisplayInventory(); break; case AdamaAction.ListSpaceTimeLocations: _gameConsoleView.DisplayListOfSpaceTimeLocations(); break; case AdamaAction.ListNonPlayerCharacters: _gameConsoleView.DisplayListOfAllNpcObjects(); break; case AdamaAction.ListGameObjects: _gameConsoleView.DisplayListOfAllGameObjects(); break; case AdamaAction.TalkTo: TalkToAction(); break; case AdamaAction.TravelerMenu: ActionMenu.currentMenu = ActionMenu.CurrentMenu.TravelerMenu; _gameConsoleView.DisplayGamePlayScreen("Traveler Menu", "Select an operation from the menu.", ActionMenu.TravelerMenu, ""); break; case AdamaAction.AdminMenu: ActionMenu.currentMenu = ActionMenu.CurrentMenu.AdminMenu; _gameConsoleView.DisplayGamePlayScreen("Admin Menu", "Select an operation from the menu.", ActionMenu.AdminMenu, ""); break; case AdamaAction.ObjectMenu: ActionMenu.currentMenu = ActionMenu.CurrentMenu.ObjectMenu; _gameConsoleView.DisplayGamePlayScreen("Object Menu", "Select an operation from the menu.", ActionMenu.ObjectMenu, ""); break; case AdamaAction.ReturnToMainMenu: ActionMenu.currentMenu = ActionMenu.CurrentMenu.MainMenu; _gameConsoleView.DisplayGamePlayScreen("Current Location", Text.CurrentLocationInfo(_currentLocation), ActionMenu.MainMenu, ""); break; case AdamaAction.NonplayerCharacterMenu: ActionMenu.currentMenu = ActionMenu.CurrentMenu.NpcMenu; _gameConsoleView.DisplayGamePlayScreen("NPC Menu", "Select an operation from the menu.", ActionMenu.NpcMenu, ""); break; case AdamaAction.Exit: _playingGame = false; break; default: break; } } // // close the application // Environment.Exit(1); }
/// <summary> /// method to manage the application setup and game loop /// </summary> private void ManageGameLoop() { AdamaAction travelerActionChoice = AdamaAction.None; // // display splash screen // _playingGame = _gameConsoleView.DisplaySpashScreen(); // // player chooses to quit // if (!_playingGame) { Environment.Exit(1); } // // display introductory message // _gameConsoleView.DisplayGamePlayScreen("Mission Intro", Text.MissionIntro(), ActionMenu.MissionIntro, ""); _gameConsoleView.GetContinueKey(); // // initialize the mission traveler // InitializeMission(); // // prepare game play screen // _currentLocation = _gameUniverse.GetSpaceTimeLocationByID(_sar.SpaceTimeLocationID); _gameConsoleView.DisplayGamePlayScreen("Current Location", Text.CurrentLocationInfo(_currentLocation), ActionMenu.MainMenu, ""); // // game loop // while (_playingGame) { // // process all flags, events, and stats // UpdateGameStatus(); // // get next game action from player // travelerActionChoice = _gameConsoleView.GetActionMenuChoice(ActionMenu.MainMenu); // // choose an action based on the player's menu choice // switch (travelerActionChoice) { case AdamaAction.None: break; case AdamaAction.LookAround: _gameConsoleView.DisplayLookAround(); break; case AdamaAction.Travel: // // get new location choice and update the current location property // _sar.SpaceTimeLocationID = _gameConsoleView.DisplayGetNextSpaceTimeLocation(); _currentLocation = _gameUniverse.GetSpaceTimeLocationByID(_sar.SpaceTimeLocationID); // // set the game play screen to the current location info format // _gameConsoleView.DisplayGamePlayScreen("Current Location", Text.CurrentLocationInfo(_currentLocation), ActionMenu.MainMenu, ""); break; case AdamaAction.AdamaLocationsVisited: // // generate a list of space time locations that have been visited // List <SpaceTimeLocation> visitedSpaceTimeLocations = new List <SpaceTimeLocation>(); foreach (int spaceTimeLocationId in _sar.SpaceTimeLocationsVisited) { visitedSpaceTimeLocations.Add(_gameUniverse.GetSpaceTimeLocationByID(spaceTimeLocationId)); } _gameConsoleView.DisplayGamePlayScreen("Space-Time Locations Visited", Text.VisitedLocations(visitedSpaceTimeLocations), ActionMenu.MainMenu, ""); break; case AdamaAction.AdamaInfo: _gameConsoleView.DisplayTravelerInfo(); break; case AdamaAction.ListSpaceTimeLocations: _gameConsoleView.DisplayListOfSpaceTimeLocations(); break; case AdamaAction.Exit: _playingGame = false; break; default: break; } } // // close the application // Environment.Exit(1); }