예제 #1
0
    private void DiscardAll(IBattelBase battel, Action finish)
    {
        battel.Player.AttackCards.ForEach(x => x.Moving.SetPosition(resetDirection));
        battel.Enemy.AttackCards.ForEach(x => x.Moving.SetPosition(resetDirection));

        battel.GetAllAttackCards().Relocation(() => ReturnCardsToDecks(battel, finish), 0.5f, 0.5f, 0.5f);
    }
예제 #2
0
    public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
    {
        var cards = new List <IAttackCard>(card.Warrior.FriendPerson.AttackCards);

        cards.Remove(card);
        return(cards);
    }
예제 #3
0
    public static List <IAttackCard> GetAllAttackCards(this IBattelBase battel)
    {
        var cardsQueue = new List <IAttackCard>(battel.Player.AttackCards);

        cardsQueue.AddRange(battel.Enemy.AttackCards);
        return(cardsQueue);
    }
예제 #4
0
    private void ReturnCardsToDecks(IBattelBase battel, Action finish)
    {
        ReturnCardsToDeck(battel.Player);
        ReturnCardsToDeck(battel.Enemy);

        OnClear();
        finish.Invoke();
    }
예제 #5
0
 protected List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
 {
     if (targetCards == null)
     {
         return(new List <IAttackCard>());
     }
     else
     {
         return(targetCards.GetTargetCards(card, battel));
     }
 }
예제 #6
0
    public void TriggerEvent(EventTriggerEnum requestTrigger, IAttackCard card, IBattelBase battel, Action finish)
    {
        this.finish = finish;

        if (isReady == false || triggers.Contains(requestTrigger) == false || conditionsAbility.IsConditions(card, battel) == false)
        {
            finish?.Invoke();
        }
        else
        {
            Finish(card, effectAbility.IsResult(card, battel, specificityFactory));
        }
    }
예제 #7
0
    public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
    {
        if (card.Warrior.AttackTargetID != -1)
        {
            return new List <IAttackCard>()
                   {
                       card.Warrior.AttackTargetUnit
                   }
        }
        ;

        return(new List <IAttackCard>());
    }
}
예제 #8
0
    public bool IsConditions(IAttackCard card, IBattelBase battel)
    {
        var cards = GetTargetCards(card, battel);

        foreach (var item in startingConditions)
        {
            if (item.IsConditions(card, cards, battel) == false)
            {
                return(false);
            }
        }

        return(true);
    }
예제 #9
0
    public bool Execute(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel, ISFXFactory specificityFactory)
    {
        bool result = false;

        foreach (var item in cardsTarget)
        {
            if (item.Tokens.AddToken(token, count))
            {
                result = true;
                item.StartSFX(specificityTarget);
            }
        }

        return(result);
    }
예제 #10
0
    public void OnStrengthen(IBattelBase battel, Action finish)
    {
        Strengthen.Invoke(carrentCount);
        carrentCount++;

        if (carrentCount == max)
        {
            ResetCards.Invoke();
            DiscardAll(battel, finish);
        }
        else
        {
            finish.Invoke();
        }
    }
예제 #11
0
    public bool IsResult(IAttackCard card, IBattelBase battel, ISFXFactory specificityFactory)
    {
        var cards = GetTargetCards(card, battel);

        foreach (var item in postConditions)
        {
            cards = item.GetTargetCards(card, cards, battel);
        }

        bool result = false;

        foreach (var item in effectAbility)
        {
            if (item.Execute(card, cards, battel, specificityFactory))
            {
                result = true;
            }
        }

        return(result);
    }
예제 #12
0
    public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
    {
        var cards = new List <IAttackCard>();
        var cells = card.Warrior.FriendPerson.Cell;

        if (card.Id + 1 < cells.Count)
        {
            if (cells[card.Id + 1].IsExist)
            {
                cards.Add(cells[card.Id + 1].Unit);
            }
        }
        if (card.Id - 1 >= 0)
        {
            if (cells[card.Id - 1].IsExist)
            {
                cards.Add(cells[card.Id - 1].Unit);
            }
        }

        return(cards);
    }
예제 #13
0
 protected QueueHendler(IBattelBase battel, Action actionFinish) =>
 (this.battel, this.actionFinish) = (battel, actionFinish);
예제 #14
0
 public bool IsConditions(IAttackCard card, List <IAttackCard> cards, IBattelBase battel) =>
 GetTargetCards(card, cards, battel).Count > 0;
예제 #15
0
    public List <IAttackCard> GetTargetCards(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel)
    {
        int i = 0;

        while (i < cardsTarget.Count)
        {
            if (SetResult(cardsTarget[i].Combat.Initiative) == false)
            {
                cardsTarget.RemoveAt(i);
            }
            else
            {
                i++;
            }
        }

        return(cardsTarget);
    }
예제 #16
0
 protected RoundActionsPhase(IBattelBase battel, Action <IAttackCard> actionFinish, List <IAttackCard> cards)
 {
     (this.battel, this.actionFinish, this.cards) = (battel, actionFinish, cards);
 }
예제 #17
0
 public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) =>
 new List <IAttackCard>()
 {
     card
 };
예제 #18
0
 public DeathCards(IBattelBase battel, Action actionFinish, List <IAttackCard> attackCards)
     : base(battel, actionFinish) =>
     this.attackCards = attackCards ?? new List <IAttackCard>();
예제 #19
0
 public TokenStartRound(IBattelBase battel, Action actionFinish) : base(battel, actionFinish)
 {
     startToken = "";
 }
예제 #20
0
 public ImplementationAbility(IBattelBase battel, Action actionFinish) : base(battel, actionFinish) =>
예제 #21
0
 public MainRoundPhase(IBattelBase battel, Action actionFinish) : base(battel, actionFinish)
 {
 }
예제 #22
0
 public TokenEndRound(IBattelBase battel, Action actionFinish) : base(battel, actionFinish)
 {
     startToken = "Spoilage";
 }
예제 #23
0
 public EndRoundAbilityPhase(IBattelBase battel, Action actionFinish) : base(battel, actionFinish) =>
예제 #24
0
 public CommonActionsPhase(IBattelBase battel, Action <IAttackCard> actionFinish, List <IAttackCard> cards) : base(battel, actionFinish, cards)
 {
 }
예제 #25
0
 // Карта совершает анимацию и показывает специфект способности
 public void ExecuteAbility(EventTriggerEnum trigger, IBattelBase battel, Action finish)
 {
     View.Frame(true);
     Ability.TriggerEvent(trigger, this, battel, () => { View.Frame(false); finish?.Invoke(); });
 }
예제 #26
0
 public TokenModul(IBattelBase battel, Action actionFinish) =>
 (this.battel, this.actionFinish) = (battel, actionFinish);
예제 #27
0
 public bool Execute(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel, ISFXFactory specificityFactory) =>
 Execute(cardsTarget);
예제 #28
0
 public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) =>
 new List <IAttackCard>(card.Warrior.EnemyPerson.AttackCards);