Exemplo n.º 1
0
        public IEnumerable <T> Candidates <T>(
            ControlledBy controlledBy = ControlledBy.Any,
            int selectorIndex         = 0,
            Func <TargetsCandidates, IList <TargetCandidates> > selector = null)
            where T : ITarget
        {
            Asrt.True(_candidates.HasCost || _candidates.HasEffect,
                      "No target selectors found, use AddEffect or AddCost to add them!");

            TargetCandidates candidates = null;

            if (selector == null)
            {
                candidates = _candidates.HasCost
          ? _candidates.Cost[selectorIndex]
          : _candidates.Effect[selectorIndex];
            }
            else
            {
                candidates = selector(_candidates)[selectorIndex];
            }

            switch (controlledBy)
            {
            case (ControlledBy.Opponent):
            {
                return(candidates
                       .Where(x => x.Controller() == Controller.Opponent && x is T)
                       .Select(x => (T)x));
            }

            case (ControlledBy.SpellOwner):
            {
                return(candidates
                       .Where(x => x.Controller() == Controller && x is T)
                       .Select(x => (T)x));
            }
            }

            return(candidates.OfType <T>());
        }
Exemplo n.º 2
0
 public void AddEffectCandidates(TargetCandidates candidates)
 {
     _effectCandidates.Add(candidates);
 }
Exemplo n.º 3
0
 public void AddCostCandidates(TargetCandidates candidates)
 {
     _costCandidates.Add(candidates);
 }