// todo - add function and field documentation

        public DraftPhase(Difficulty difficulty, RefereeParams _params)
        {
            this.difficulty = difficulty;
            this._params    = _params;

            chosenCards = new List <Card>[] { new List <Card>(), new List <Card>() };
            decks       = new List <Card>[] { new List <Card>(), new List <Card>() };

            choicesRNG  = _params.draftChoicesRNG;
            shufflesRNG = new Random[] { _params.shufflePlayer0RNG, _params.shufflePlayer1RNG };
        }
        public void refereeInit(MultiplayerGameManager <Player> gameManager)
        {
            if (Constants.VERBOSE_LEVEL > 1)
            {
                Console.WriteLine("New game");
            }

            RefereeParams _params = new RefereeParams(gameManager);

            DraftPhase.Difficulty difficulty;
            switch (gameManager.getLeagueLevel())
            {
            case 1:
                difficulty = DraftPhase.Difficulty.VERY_EASY;
                break;

            case 2:
                difficulty = DraftPhase.Difficulty.EASY;
                break;

            case 3:
                difficulty = DraftPhase.Difficulty.LESS_EASY;
                break;

            default:
                difficulty = DraftPhase.Difficulty.NORMAL;
                break;
            }


            Constants.LoadCardlist("main\\resources\\cardlist.txt");
            if (Constants.VERBOSE_LEVEL > 1)
            {
                Console.WriteLine("   CARDSET with " + Constants.CARDSET.Count + " cards loaded.");
            }
            if (Constants.VERBOSE_LEVEL > 1)
            {
                Console.WriteLine("   Difficulty is set to: " + difficulty.ToString() + ".");
            }

            draft = new DraftPhase(difficulty, _params);
            draft.PrepareChoices();

            if (Constants.VERBOSE_LEVEL > 1)
            {
                Console.WriteLine("   Draw Phase Prepared. " + draft.allowedCards.Count + " cards allowed. ");
            }
            if (Constants.VERBOSE_LEVEL > 1)
            {
                Console.WriteLine("   " + draft.draftingCards.Count + " cards selected to the draft.");
            }

            gameManager.setMaxTurns(Constants.MAX_TURNS_HARDLIMIT); // should be never reached, not handled on the referee's side
        }