public override int Visit(SeribuAbility ability)
 {
     if (Target == null)
     {
         return(0);
     }
     return(-1);
 }
Exemple #2
0
 public override int Visit(SeribuAbility seribuAbility)
 {
     return(0);
 }
Exemple #3
0
 public abstract int Visit(SeribuAbility seribuAbility);
Exemple #4
0
        public override int Visit(SeribuAbility seribuAbility)
        {
            Place place;
            List <CreatureCard> tbdOut = new List <CreatureCard>();
            List <CreatureCard> tbdIn  = new List <CreatureCard>();

            foreach (CreatureCard card in Caller.Outer.Where(c => !c.IsCloned && !c.IsLegendary))
            {
                CreatureCard clone = (CreatureCard)card.Original;
                clone.IsCloned = true;
                // TODO: gestire se l'area è piena
                if (Caller.Outer.Count + tbdOut.Count < AmaruConstants.OUTER_MAX_SIZE)
                {
                    place = Place.OUTER;
                    tbdOut.Add(clone);
                }
                else if (Caller.Inner.Count + tbdIn.Count < AmaruConstants.INNER_MAX_SIZE)
                {
                    place = Place.INNER;
                    tbdIn.Add(clone);
                }
                else
                {
                    continue;
                }
                foreach (CharacterEnum c in GameManager.UserDict.Keys)
                {
                    AddResponse(c, new EvocationResponse(Owner, card, clone, place));
                }
            }
            foreach (CreatureCard card in Caller.Inner.Where(c => !c.IsCloned && !c.IsLegendary))
            {
                CreatureCard clone = (CreatureCard)card.Original;
                clone.IsCloned = true;
                // TODO: gestire se l'area è piena
                if (Caller.Inner.Count + tbdIn.Count < AmaruConstants.INNER_MAX_SIZE)
                {
                    place = Place.INNER;
                    tbdIn.Add(clone);
                }
                else if (Caller.Outer.Count + tbdOut.Count < AmaruConstants.OUTER_MAX_SIZE)
                {
                    place = Place.OUTER;
                    tbdOut.Add(clone);
                }
                else
                {
                    continue;
                }
                foreach (CharacterEnum c in GameManager.UserDict.Keys)
                {
                    AddResponse(c, new EvocationResponse(Owner, card, clone, place));
                }
            }
            if (tbdIn.Any())
            {
                Caller.Inner.AddRange(tbdIn);
            }
            if (tbdOut.Any())
            {
                Caller.Outer.AddRange(tbdOut);
            }
            return(0);
        }