public override int Visit(SeribuAbility ability) { if (Target == null) { return(0); } return(-1); }
public override int Visit(SeribuAbility seribuAbility) { return(0); }
public abstract int Visit(SeribuAbility seribuAbility);
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); }