/// <summary> /// get and validate the player's TARDIS destination /// </summary> /// <returns>space-time location</returns> public YearLocation DisplayGetTravelersNewDestination() { bool validResponse = false; int locationID; YearLocation nextYearTimeLocation = new YearLocation(); while (!validResponse) { // // display header // ConsoleUtil.HeaderText = "TARDIS Destination"; ConsoleUtil.DisplayReset(); // // display a table of year-time locations // DisplayTARDISDestinationsTable(); // // get and validate user's response for a space-time location // ConsoleUtil.DisplayPromptMessage("Choose the TARDIS destination by entering the ID: "); // // user's response is an integer // if (int.TryParse(Console.ReadLine(), out locationID)) { ConsoleUtil.DisplayMessage(""); try { nextYearTimeLocation = _gameYLocation.GetYearTimeLocationByID(locationID); ConsoleUtil.DisplayReset(); ConsoleUtil.DisplayMessage($"You have indicated {nextYearTimeLocation.Name} as your TARDIS destination."); ConsoleUtil.DisplayMessage(""); if (nextYearTimeLocation.Accessable == true) { validResponse = true; ConsoleUtil.DisplayMessage("You will be transported immediately."); } else { ConsoleUtil.DisplayMessage("It appears this destination is not available to you at this time."); ConsoleUtil.DisplayMessage("Please make another choice."); } } // // user's response was not in the correct range // catch (ArgumentOutOfRangeException ex) { ConsoleUtil.DisplayMessage("It appears you entered an invalid location ID."); ConsoleUtil.DisplayMessage(ex.Message); ConsoleUtil.DisplayMessage("Please try again."); } } // // user's response was not an integer // else { ConsoleUtil.DisplayMessage("It appears you did not enter a number for the location ID."); ConsoleUtil.DisplayMessage("Please try again."); } DisplayContinuePrompt(); } return(nextYearTimeLocation); }