Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }