Пример #1
0
        public List <ManaColor> GetAvailableMana(ManaUsage usage, ConvokeAndDelveOptions convokeAndDelve)
        {
            var restricted = new HashSet <ManaUnit>();
            var allocated  = new List <ManaUnit>();

            var units = _units
                        .Concat(GetAdditionalManaSources(convokeAndDelve))
                        .ToList();

            foreach (var manaUnit in units)
            {
                if (IsAvailable(manaUnit, restricted, usage))
                {
                    restricted.Add(manaUnit);
                    allocated.Add(manaUnit);

                    RestrictUsingDifferentSourcesFromSameCard(manaUnit, restricted, units);
                }
            }

            return(allocated.Select(x => x.Color).ToList());
        }