Ejemplo n.º 1
0
    public IEnumerable <SpellBase> GetDeck(int count)
    {
        if (count < mustHave.Length)
        {
            count = mustHave.Length;
        }

        var index = 0;
        var deck  = new SpellBase[count];

        for (index = 0; index < mustHave.Length; index++)
        {
            deck[index] = mustHave[index];
        }

        source.Shuffle();
        var list = source.ToList();

        var limit = Mathf.Min(count - index, constraints.Length);

        for (var i = 0; i < limit; i++)
        {
            var constrainedIndex = list.FindIndex(spell => spell.Category == constraints[i]);
            if (constrainedIndex == -1)
            {
                continue;
            }

            var foundSpell = list[constrainedIndex];
            list.RemoveAt(constrainedIndex);

            deck[index] = foundSpell;
            index++;
        }

        for (var i = 0; i < count - index; i++)
        {
            deck[index + i] = source[i];
        }

        deck.Shuffle();
        return(deck);
    }