Exemplo n.º 1
0
        // This Method builds the menu
        static int ShowMenu(Map map, ref List <string> menu, ref Player player, ref BloodDrake drake, ref AngryMan angryman)
        {
            int    choice;
            string input;

            menu.Clear();
            ShowDirections(map, ref menu);

            if (map.GetLocation().CheckForItems())
            {
                bool acquirableitems = false;
                Dictionary <string, Objects> list = map.GetLocation().GetItems();
                Objects[] obj = list.Values.ToArray();
                for (int i = 0; i < obj.Count(); i++)
                {
                    if (obj[i].GetAcquirable())
                    {
                        acquirableitems = true;
                    }
                }
                if (acquirableitems)
                {
                    menu.Add(ACTION_SEARCH);
                }
            }
            if ((map.GetYPosition() == 5 && map.GetXPosition() == 1) && drake.IsAlive(drake.GetHealth()))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("On one of the pillars of the bridge is a smalle Blood Drake…");
                Console.WriteLine("The Blood Drake growls at you…");
                Console.WriteLine("It isn’t going to let you pass the bridge…");
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Gray;

                menu.Add("Fight the Blood Drake");
                menu.Add("Go via the side of the bridge");
            }

            if ((map.GetYPosition() == 3 && map.GetXPosition() == 2) && angryman.IsAlive(angryman.GetHealth()))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("When you knock on the door you hear heavy footsteps walking towards the door");
                Console.WriteLine("An angry man opens the door, and screams:");
                Console.WriteLine("If you don't stop bothering me I will kick your teeth in!");
                Console.WriteLine("As you look inside the house you can see a bag of gold.");
                Console.WriteLine("Do you want to fight the man, and take his gold, or will you leave the man.");
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Gray;

                menu.Add("Fight the man");
            }

            if (map.GetYPosition() == 7 && map.GetXPosition() == 1)
            {
                menu.Add("Climb over the wall");
                menu.Remove("Go North");
            }

            if (map.GetYPosition() == 9 && map.GetXPosition() == 1)
            {
                menu.Add("Fight the Boss");
            }

            menu.Add(ACTION_QUIT);
            menu.Add(ACTION_SHOP);
            menu.Add(ACTION_SHOWINVENTORY);

            if (player.HasObject("Health Potion"))
            {
                menu.Add(ACTION_USEHEALTHPOTION);
            }

            do
            {
                for (int i = 0; i < menu.Count(); i++)
                {
                    Console.WriteLine("{0} - {1}", i + 1, menu[i]);
                }
                Console.WriteLine("Please enter your choice: 1 - {0}", menu.Count());
                HealthUI(player.GetName(), player.GetHealth(), player.GetMaxHealth(), player.GetStamina(), player.GetMaxStamina(), player.GetGold());
                input = Console.ReadLine();
                Console.Clear();
                map.GetLocation().Description();
            } while (!int.TryParse(input, out choice) || (choice > menu.Count() || choice < 0));

            //return choice;
            return(choice - 1);
        }