コード例 #1
0
ファイル: Program.cs プロジェクト: kamasjdev/RPG_Game
        static void Main(string[] args)
        {
            MenuActionService menuActionService = new MenuActionService();
            HeroService       heroService       = new HeroService();
            HeroManager       heroManager       = new HeroManager(menuActionService, heroService);
            EnemyService      enemyService      = new EnemyService();
            StoryManager      storyManager;
            int         tryHard       = 0;
            bool        choseLvlOne   = false;
            bool        choseLvlTwo   = false;
            bool        choseLvlThree = false;
            int         lastDiffLvl   = 0;
            List <Hero> heroes        = null;

            Console.WriteLine("Welcome to RPG Game app!");
            while (true)
            {
                int exit = 0;
                Console.WriteLine("Please let me know what you want to do:");
                var mainMenu = menuActionService.GetMenuActionsByMenuName("Main");
                for (int i = 0; i < mainMenu.Count; i++)
                {
                    Console.WriteLine($"{mainMenu[i].Id}. {mainMenu[i].Name}");
                }

                var operation = Console.ReadKey();

                switch (operation.KeyChar)
                {
                case '1':
                    var newId = heroManager.AddNewHero();
                    break;

                case '2':
                    heroManager.RemoveHero();
                    break;

                case '3':
                    heroManager.HeroDetails();
                    break;

                case '4':
                    var toShow = heroManager.ShowHeroes();
                    Console.WriteLine(toShow.ToStringTable(new[] { "Id", "Name", "Health", "Max Health",
                                                                   "Attack", "Heal Level", "Experience", "Level", "Required Experience",
                                                                   "Profession", "Typ Id" }, a => a.Id, a => a.Name, a => a.Health, a => a.MaxHealth,
                                                           a => a.Attack, a => a.HealLvl, a => a.Exp, a => a.Level, a => a.RequiredExp,
                                                           a => a.Profession, a => a.TypeId));
                    break;

                case '5':
                    heroes = heroManager.GetAllHeroes();
                    if (heroes.Count > 0)
                    {
                        Console.WriteLine();
                        Console.WriteLine(heroes.ToStringTable(new[] { "Id", "Name", "Health", "Max Health",
                                                                       "Attack", "Heal Level", "Experience", "Level", "Required Experience",
                                                                       "Profession", "Typ Id" }, a => a.Id, a => a.Name, a => a.Health, a => a.MaxHealth,
                                                               a => a.Attack, a => a.HealLvl, a => a.Exp, a => a.Level, a => a.RequiredExp,
                                                               a => a.Profession, a => a.TypeId));
                        int chosenHero = -1;

                        Hero hero = null;
                        while (hero == null)
                        {
                            chosenHero = heroManager.SelectCharacter();

                            if (chosenHero == -1)
                            {
                                break;
                            }

                            hero = heroManager.GetHeroById(chosenHero);
                        }

                        if (chosenHero != -1)
                        {
                            Console.WriteLine($"You chose Hero {hero.Name}, level:{hero.Level}, profession:{hero.Profession}");
                            storyManager = new StoryManager(menuActionService, hero, enemyService);
                            storyManager.SetLastDiffLvl(lastDiffLvl);
                            storyManager.Start();

                            if (storyManager.DiffLvl == lastDiffLvl)
                            {
                                tryHard++;
                                enemyService.UpgradeEnemiesByDiffLvl(tryHard, storyManager.DiffLvl);
                            }
                            else
                            {
                                tryHard = 0;
                            }

                            lastDiffLvl = storyManager.DiffLvl;
                            hero.Reset();

                            switch (storyManager.DiffLvl)
                            {
                            case 1:
                                choseLvlOne = true;
                                break;

                            case 2:
                                choseLvlTwo = true;
                                break;

                            case 3:
                                choseLvlThree = true;
                                break;
                            }

                            if (choseLvlOne && choseLvlTwo && choseLvlThree)
                            {
                                enemyService.UpgradeEnemies(1);
                                choseLvlOne   = false;
                                choseLvlTwo   = false;
                                choseLvlThree = false;
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("\nThere is no heroes to choose");
                    }
                    break;

                case '6':
                    exit = 1;
                    if (heroes != null)
                    {
                        bool IsFileCreated = CreateXmlFileWithAllHeroes(heroes);
                        if (IsFileCreated)
                        {
                            Console.WriteLine("\nSaved all Heroes in file listOfAllHeroes.xml");
                        }
                    }
                    Console.WriteLine("Press Enter to continue");
                    Console.ReadLine();
                    break;

                default:
                    Console.WriteLine("Action you entered does not exist");
                    break;
                }

                if (exit == 1)
                {
                    break;
                }
            }
        }