示例#1
0
        public void Travel()
        {
            int  StaminaUse;
            int  Choice;
            bool meetAnimal;

            do
            {
                ShowPlayerData();

                Console.WriteLine("Wybierz cel swojej podróży:");
                Console.WriteLine();

                var places = placeService.GetPlaceData();

                int id = 1;
                foreach (var item in places)
                {
                    Console.WriteLine($"{id}) {item.Name}" +
                                      $"   Zużycie wytrzymałości: {item.StaminaUse}");
                    id++;
                    Console.WriteLine();
                }

                Console.WriteLine("6) Wróć do menu");

                Choice = GetIntKeyDown(1, 6, out isParsed);
                if (Choice >= 1 && Choice <= 5)
                {
                    if (placeService.StaminaCheck(Choice, playerService.GetStamina(), out StaminaUse))
                    {
                        playerService.UseStamina(StaminaUse);

                        meetAnimal = playerService.MeetAnimal();

                        if (meetAnimal)
                        {
                            BattleData battleData = playerService.GetBattleData();
                            Enemy      enemy      = battleService.GetEnemy();

                            Random random   = new Random();
                            bool   isParsed = false;
                            Choice = 0;
                            int atack;


                            Console.Clear();
                            Console.WriteLine($"Podczas swojej podróży napotykasz się na {enemy.Name}");
                            Console.WriteLine("Chyba nie jest zbyt zadowolony twoją obecnością.  Lepiej na siebie uważaj");
                            Console.ReadKey();
                            while (!isParsed)
                            {
                                Console.Clear();
                                Console.WriteLine("1)Walka");
                                Console.WriteLine("2)Ucieczka");
                                Choice = GameManager.GetIntKeyDown(1, 2, out isParsed);
                            }
                            switch (Choice)
                            {
                            case 1:
                                while (battleData.HP > 0 && enemy.HP > 0)
                                {
                                    atack = (int)(random.Next(50, 200) / 100 * battleData.AtackPoints)
                                            - (int)(random.NextDouble() * enemy.ArmorPoints / 2);
                                    Console.WriteLine($"{enemy.Name} otrzymuje {atack} obrażeń");
                                    enemy.HP -= atack;
                                    Thread.Sleep(1500);
                                    if (enemy.HP > 0)
                                    {
                                        atack = (int)(random.Next(50, 200) / 100 * enemy.AtackPoints)
                                                - (int)(random.NextDouble() * battleData.ArmorPoints / 2);
                                        Console.WriteLine($"{battleData.Name} otrzymuje {atack} obrażeń");
                                        battleData.HP -= atack;
                                        Thread.Sleep(1500);
                                    }
                                }
                                break;

                            case 2:
                                if (enemy.CanRunAway)
                                {
                                    Console.Clear();
                                    Console.WriteLine("Tym razem udało ci się uciec.");
                                    Console.ReadKey();
                                }
                                else
                                {
                                    Console.WriteLine("Biegłeś ile sił w nogach ale niestety");
                                    Console.WriteLine("byłeś zbyt wolny... musisz walczyć!");
                                    Console.ReadKey();
                                    while (battleData.HP > 0 && enemy.HP > 0)
                                    {
                                        Console.Clear();
                                        atack = (int)(random.Next(50, 200) / 100 * enemy.AtackPoints)
                                                - (int)(random.NextDouble() * battleData.ArmorPoints / 2);
                                        Console.WriteLine($"{battleData.Name} otrzymuje {atack} obrażeń");
                                        battleData.HP -= atack;
                                        Thread.Sleep(1500);
                                        atack = (int)(random.Next(50, 200) / 100 * battleData.AtackPoints)
                                                - (int)(random.NextDouble() * enemy.ArmorPoints / 2);
                                        Console.WriteLine($"{enemy.Name} otrzymuje {atack} obrażeń");
                                        enemy.HP -= atack;
                                        Thread.Sleep(1500);
                                    }
                                }
                                break;

                            default:
                                break;
                            }

                            if (battleData.HP > 0)
                            {
                                Console.WriteLine($"Gratulacje udało ci się pokonać {enemy.Name}");
                                battleData.ConsumerLoot = enemy.Loot.ToList();
                            }

                            Console.ReadKey();
                            playerService.SaveBattleData(battleData);

                            if (playerService.GetHP() > 0)
                            {
                                int time = placeService.GetTravellingTime(Choice);

                                Console.Clear();
                                for (int i = time; i > 0; i--)
                                {
                                    Console.WriteLine($"Dotrzesz do celu podróży za: {i}");
                                    Thread.Sleep(1000);
                                    Console.Clear();
                                }
                                playerService.AddMaterialsToBackpack(placeService.GetMaterials(Choice,
                                                                                               playerService.GetMultipliers()));
                            }
                            else
                            {
                                Console.Clear();
                                Console.WriteLine($"przykro mi {playerService.GetBattleData().Name}...");
                                Console.ReadKey();
                                Console.WriteLine("Niestety nie udało ci się wygrać swojej walki i zostałeś zjedzony");
                                Console.WriteLine("przez zwierzęta... Jedyne co moge dla ciebie zrobić to cofnąć czas");
                                Console.WriteLine("do momentu zanim wyruszyłeś na przygodę");

                                Console.ReadKey();
                                playerService.Dead();
                            }
                        }
                        else
                        {
                            int time = placeService.GetTravellingTime(Choice);

                            Console.Clear();
                            for (int i = time; i > 0; i--)
                            {
                                Console.WriteLine($"Dotrzesz do celu podróży za: {i}");
                                Thread.Sleep(1000);
                                Console.Clear();
                            }
                            playerService.AddMaterialsToBackpack(placeService.GetMaterials(Choice,
                                                                                           playerService.GetMultipliers()));
                        }
                    }
                    else
                    {
                        ShowPlayerData();
                        Console.WriteLine("Nie możesz się tam udać jesteś zbyt zmęczony!");
                        Console.ReadKey();
                        isParsed = false;
                    }
                }
                else if (Choice == 6)
                {
                    isParsed = true;
                }
            } while (!isParsed);
        }