private int TalkToAction() { int enemyId = 0; int npcToTalkToId = _gameConsoleView.DisplayGetNpcToTalkTo(); if (npcToTalkToId != 0) { Npc npc = _gameUniverse.GetNpcById(npcToTalkToId); if (npc is Civilian) { Civilian civilian = npc as Civilian; _gameTraveler.ExperiencePoints += civilian.ExperiencePoints; _gameTraveler.Health += civilian.HealthPoints; if (civilian.HasKey) { foreach (SpaceTimeLocation location in _gameUniverse.SpaceTimeLocations) { if (!location.Accessible) { location.Accessible = true; } } } _gameConsoleView.DisplayTalkTo(npc); } else if (npc is Enemy) { Enemy enemy = npc as Enemy; ActionMenu.currentMenu = ActionMenu.CurrentMenu.AttackMenu; _gameConsoleView.DisplayTalkToEnemy(enemy); enemyId = enemy.Id; } } return(enemyId); }
public void DisplayTalkTo(Player player, List <Character> ListOfNPC) { string TalkToMenuDisplay = ""; foreach (var item in ListOfNPC) { if (item.LocationValue == player.LocationValue) { TalkToMenuDisplay += "Person: " + item.Name + "\n"; } } bool validResponse = false; string playerResponse = ""; List <string> potentialResponses = new List <string>(); foreach (var item in ListOfNPC) { potentialResponses.Add(item.Name); } while (validResponse == false) { Console.Clear(); DisplayGamePlayScreen("Talk To", TalkToMenuDisplay, ActionMenu.MainMenu, ""); DisplayInputBoxPrompt("Who would you like to talk to? "); playerResponse = Console.ReadLine(); foreach (var item in potentialResponses) { if (playerResponse == item) { validResponse = true; } } if (validResponse == false) { DisplayInputErrorMessage("The NPC you specified does not exist."); } } Merchant talkingToMerchant = new Merchant(); Civilian talkingToCivilian = new Civilian(); bool isTalkingToMerchant = false; foreach (var item in ListOfNPC) { if (playerResponse == item.Name && item is Merchant) { talkingToMerchant = item as Merchant; isTalkingToMerchant = true; } else if (playerResponse == item.Name && item is Civilian) { talkingToCivilian = item as Civilian; } else { } } string greeting = ""; if (isTalkingToMerchant == true) { greeting = "Description: " + talkingToMerchant.Description + "\n\n" + talkingToMerchant.Name + ": " + talkingToMerchant.Speak(); } else { greeting = "Description: " + talkingToCivilian.Description + "\n\n" + talkingToCivilian.Name + ": " + talkingToCivilian.Speak(); } DisplayGamePlayScreen("Talk To", greeting + "\n\n\t Press any key to continue...", ActionMenu.MainMenu, ""); Console.ReadKey(); validResponse = false; string userInput = ""; if (isTalkingToMerchant) { DisplayGamePlayScreen("Talk To", "Would you like to trade with " + talkingToMerchant.Name + "?", ActionMenu.Shop, "Use 1 for yes 7 for no."); PlayerAction choice = new PlayerAction(); choice = GetActionMenuChoice(ActionMenu.Shop); if (choice == PlayerAction.Trade) { string ListOfItems = ""; ListOfItems += "Sell to " + talkingToMerchant.Name + ": \n"; foreach (var item in player.Inventory) { if (item.IsInInventory == true && item is Loot) { Loot stuff = item as Loot; ListOfItems += item.Name + ", ID: " + item.ID.ToString() + ", Price: $" + stuff.CashValue + "\n\n"; } } DisplayGamePlayScreen("Sell", ListOfItems, ActionMenu.MainMenu, ""); DisplayInputBoxPrompt("What would you like to trade? (Enter ID): "); userInput = Console.ReadLine(); int userChosenID = 0; int.TryParse(userInput, out userChosenID); foreach (var item in player.Inventory) { if (userChosenID == item.ID) { item.IsInInventory = false; Loot stuff = item as Loot; player.Wallet += stuff.CashValue; } else { } } } else if (choice == PlayerAction.Heal) { Heal(player); } } }