void Skill3(Game insGame, GameEngine insGameEngine, Player insPlayer, Barbarian insBarbarian, Wanderer insWanderer, Forcekeeper insForcekeeper)
        {
            switch (insPlayer.arrayData[ActivePlayerID].Class)
            {
            case EnumClass.Barbarian:
                insBarbarian.Skill3(insGame, insGameEngine, insPlayer);
                break;

            case EnumClass.Wanderer:
                insWanderer.Skill3(insGame, insGameEngine, insPlayer);
                break;

            case EnumClass.Forcekeeper:
                insForcekeeper.Skill3(insGame, insGameEngine, insPlayer);
                break;
            }
        }
        public void ShowBattleOptions(Game insGame, GameEngine insGameEngine, Player insPlayer, Barbarian insBarbarian, Wanderer insWanderer, Forcekeeper insForcekeeper)
        {
            #region ProgressOfTheBattle
            object[] arrayTempBattleInfo = stackBattleInfo.ToArray();
            Console.WriteLine("                         PROGRESS OF THE BATTLE");
            Console.WriteLine("--------------------------------------------------------------------------");
            switch (stackBattleInfo.Count)
            {
            case 0:
                Console.WriteLine("\n" + "\n" + "\n" + "\n");
                break;

            case 1:
                Console.WriteLine(arrayTempBattleInfo[0]);
                Console.WriteLine("\n" + "\n" + "\n");
                break;

            case 2:
                for (int i = 0; i <= 1; i++)
                {
                    Console.WriteLine(arrayTempBattleInfo[i]);
                }
                Console.WriteLine("\n" + "\n");
                break;

            case 3:
                for (int i = 0; i <= 2; i++)
                {
                    Console.WriteLine(arrayTempBattleInfo[i]);
                }
                Console.WriteLine("\n");
                break;

            case 4:
                for (int i = 0; i <= 3; i++)
                {
                    Console.WriteLine(arrayTempBattleInfo[i]);
                }
                Console.WriteLine();
                break;

            default:
                for (int i = 0; i <= 4; i++)
                {
                    Console.WriteLine(arrayTempBattleInfo[i]);
                }
                break;
            }
            Console.WriteLine("--------------------------------------------------------------------------");
            #endregion
            switch (insPlayer.arrayData[insGameEngine.ActivePlayerID].Class)
            {
            case EnumClass.Barbarian:
            {
                Console.WriteLine("1 - Melee attack (Battle Axe)");
                Console.WriteLine("2 - Distance attack (Throwing Axes)");
                Console.WriteLine("3 - Jump (10 MP)");
                Console.WriteLine("4 - Berserk (20 MP)");
                Console.WriteLine("5 - Devastation (30 MP)");
            }
            break;

            case EnumClass.Wanderer:
            {
                Console.WriteLine("1 - Melee attack (Dagger)");
                Console.WriteLine("2 - Distance attack (Long Bow)");
                Console.WriteLine("3 - Heal (15 MP)");
                Console.WriteLine("4 - Eagle Eye (30 MP)");
                Console.WriteLine("5 - Vampiric Pierce (40 MP)");
            }
            break;

            case EnumClass.Forcekeeper:
            {
                Console.WriteLine("1 - Melee attack (Sinister Touch)");
                Console.WriteLine("2 - Distance attack (Bone Wand)");
                Console.WriteLine("3 - Sleep (25 MP)");
                Console.WriteLine("4 - Fire Shield (40 MP)");
                Console.WriteLine("5 - Lightning (100 MP)");
            }
            break;
            }
            Console.WriteLine("6 - Move forward");
            Console.WriteLine("7 - Move back");
            Console.WriteLine("8 - Pass the turn");
            Console.WriteLine("------------------");
            Console.WriteLine("9 - End the game");
            bool IfKeyIsCorrect = false;
            do
            {
                ConsoleKeyInfo KeyNumber = Console.ReadKey(true);
                switch (KeyNumber.KeyChar)
                {
                case '1':
                    MeeleAttack(insGame, insPlayer);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '2':
                    DistanceAttack(insGame, insPlayer);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '3':
                    Skill1(insGame, insGameEngine, insPlayer, insBarbarian, insWanderer, insForcekeeper);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '4':
                    Skill2(insGame, insGameEngine, insPlayer, insBarbarian, insWanderer, insForcekeeper);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '5':
                    Skill3(insGame, insGameEngine, insPlayer, insBarbarian, insWanderer, insForcekeeper);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '6':
                    MoveForward(insGame, insPlayer);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '7':
                    MoveBack(insGame, insPlayer);
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '8':
                    insGameEngine.stackBattleInfo.Push(insPlayer.arrayData[ActivePlayerID].Name + " passed the turn.");
                    insGame.NextMove(insPlayer);
                    IfKeyIsCorrect = true;
                    break;

                case '9':
                    Console.Clear();
                    insGame.MainMenu();
                    IfKeyIsCorrect = true;
                    break;

                default:
                    break;
                }
            } while (IfKeyIsCorrect == false);
        }
        public void CheckSleep(Game insGame, GameEngine insGameEngine, Player insPlayer, Barbarian insBarbarian, Wanderer insWanderer, Forcekeeper insForcekeeper)
        {
            if (IfSleepIsActive == false)
            {
                insGameEngine.ShowBattleOptions(insGame, insGameEngine, insPlayer, insBarbarian, insWanderer, insForcekeeper);
            }
            else
            {
                insGameEngine.stackBattleInfo.Push(insPlayer.arrayData[insGameEngine.ActivePlayerID].Name + " is sleeping...");
                #region ProgressOfTheBattle
                object[] arrayTempBattleInfo = insGameEngine.stackBattleInfo.ToArray();
                Console.WriteLine("                         PROGRESS OF THE BATTLE");
                Console.WriteLine("--------------------------------------------------------------------------");
                switch (insGameEngine.stackBattleInfo.Count)
                {
                case 0:
                    Console.WriteLine("\n" + "\n" + "\n" + "\n");
                    break;

                case 1:
                    Console.WriteLine(arrayTempBattleInfo[0]);
                    Console.WriteLine("\n" + "\n" + "\n");
                    break;

                case 2:
                    for (int i = 0; i <= 1; i++)
                    {
                        Console.WriteLine(arrayTempBattleInfo[i]);
                    }
                    Console.WriteLine("\n" + "\n");
                    break;

                case 3:
                    for (int i = 0; i <= 2; i++)
                    {
                        Console.WriteLine(arrayTempBattleInfo[i]);
                    }
                    Console.WriteLine("\n");
                    break;

                case 4:
                    for (int i = 0; i <= 3; i++)
                    {
                        Console.WriteLine(arrayTempBattleInfo[i]);
                    }
                    Console.WriteLine();
                    break;

                default:
                    for (int i = 0; i <= 4; i++)
                    {
                        Console.WriteLine(arrayTempBattleInfo[i]);
                    }
                    break;
                }
                Console.WriteLine("--------------------------------------------------------------------------");
                #endregion
                System.Threading.Thread.Sleep(5000); // PARAMETER
                insForcekeeper.IfSleepIsActive = false;
                insGame.NextMove(insPlayer);
            }
        }