Beispiel #1
0
    public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
    {
        var cards = new List <IAttackCard>(card.Warrior.FriendPerson.AttackCards);

        cards.Remove(card);
        return(cards);
    }
Beispiel #2
0
    public void AddAttacker(IAttackCard attacker)
    {
        if (Enemies.Count >= Combat.MaxCountAttackers)
        {
            return; // Уже атакует максимум врагов
        }
        Action <int> Final = (x) => attacker.View.Frame(false).SetSortingOrder(x);

        if (Enemies.Count > 0)
        {
            if (Enemies[0].Combat.Initiative > attacker.Combat.Initiative)
            {
                // Поменять атакующие карты местами
                attacker.Moving.SetPosition(new Vector3(View.Position.x + x1, View.Position.y - y1, 0)).Run(0.3f, () => Final(1));
                Enemies[0].Moving.SetPosition(new Vector3(View.Position.x + x2, View.Position.y - y2, 0)).Run(0.3f, () => Enemies[0].View.SetSortingOrder(2));
            }
            else
            {
                // Назначить второй атакующей
                attacker.Moving.SetPosition(new Vector3(View.Position.x + x2, View.Position.y - y2, 0)).Run(0.3f, () => Final(2));
            }
        }
        else
        {
            // Назначить первой атакующей
            attacker.Moving.SetPosition(new Vector3(View.Position.x + x1, View.Position.y - y1, 0)).Run(0.3f, () => Final(1));
        }

        Enemies.Add(attacker.Warrior);
        attacker.Warrior.AttackTargetID = Id;
    }
Beispiel #3
0
 public override bool StandardDamage(IAttackCard enemy)
 {
     if (IsDownAuraBroken() == false)
     {
         return(false);
     }
     return(base.StandardDamage(enemy));
 }
Beispiel #4
0
 public override bool StandardDamage(IAttackCard enemy)
 {
     if (enemy.Combat.Attack < 5)
     {
         startSpecificity.Invoke(TypeSpecificityEnum.MoonShield);
         return(false);
     }
     return(base.StandardDamage(enemy));
 }
Beispiel #5
0
 protected List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel)
 {
     if (targetCards == null)
     {
         return(new List <IAttackCard>());
     }
     else
     {
         return(targetCards.GetTargetCards(card, battel));
     }
 }
Beispiel #6
0
    private void AssignAttack(IAttackCard attackCard)
    {
        if (current == null || attackCard.Warrior.Enemies.Count >= attackCard.Combat.MaxCountAttackers)
        {
            return;
        }

        attackCard.AddAttacker(current);
        current.SetClickListener(CancelAttacker);
        current = null;
    }
Beispiel #7
0
 protected override void Next(IAttackCard current)
 {
     if (current.Warrior.AttackTargetID == -1 || current.Warrior.AttackTargetUnit == null ||
         current.Warrior.AttackTargetUnit.Combat.Class.Type != ClassCardEnum.sunset)
     {
         new CommonActionsPhase(battel, RunQueue, cards).Run(current);
     }
     else
     {
         new SunSetActionsPhase(battel, RunQueue, cards).Run(current);
     }
 }
Beispiel #8
0
 private void SelectReserveCard(IAttackCard battelCard)
 {
     current?.View.SetOldSortingOrder().Frame(false);
     if (battelCard != current)
     {
         (current = battelCard)?.View.SetSortingOrder(200).Frame(true);
     }
     else
     {
         current = null;
     }
 }
Beispiel #9
0
 private void SelectReserveCard(IAttackCard attackCard)
 {
     current?.View.Frame(false);
     if (attackCard != current)
     {
         (current = attackCard)?.View.Frame(true);
     }
     else
     {
         current = null;
     }
 }
Beispiel #10
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));
        }
    }
Beispiel #11
0
    private void FinishPutCardFromReserve()
    {
        current = null;

        if (battel.Player.AttackCards.Count >= 4)
        {
            battel.OnNextTurn();
        }
        else
        {
            battel.Player.ReservCards.ForEach(x => x.SetClickListener(SelectReserveCard));
            battel.Player.Cell.ForEach(x => x.SetClickListener(PutCardFromReserve));
        }
    }
Beispiel #12
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);
    }
Beispiel #13
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>());
    }
}
Beispiel #14
0
 private void Finish(IAttackCard card, bool result)
 {
     if (result)
     {
         if (oneOff)
         {
             isReady = false;
         }
         card.ImplementAbility(specificity, finish);
     }
     else
     {
         finish?.Invoke();
     }
 }
Beispiel #15
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);
    }
Beispiel #16
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);
    }
Beispiel #17
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);
    }
Beispiel #18
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);
    }
Beispiel #19
0
 private void ApplyAbility(EventTriggerEnum eventTrigger, IAttackCard current, Action nextAct) =>
 current.ExecuteAbility(eventTrigger, battel, () => CheckForDeath(nextAct));
Beispiel #20
0
 protected override bool Buff(IAttackCard card) =>
 card.Combat.BuffAttack(attack);
Beispiel #21
0
 public bool Execute(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel, ISFXFactory specificityFactory) =>
 Execute(cardsTarget);
Beispiel #22
0
 protected override bool Buff(IAttackCard card) =>
 card.Combat.BuffInitiative(initiative);
Beispiel #23
0
 public bool IsConditions(IAttackCard card, List <IAttackCard> cards, IBattelBase battel) =>
 GetTargetCards(card, cards, battel).Count > 0;
Beispiel #24
0
 public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) =>
 new List <IAttackCard>(card.Warrior.EnemyPerson.AttackCards);
Beispiel #25
0
 public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) =>
 new List <IAttackCard>()
 {
     card
 };
Beispiel #26
0
 public void Run(IAttackCard current)
 {
     this.current = current;
     current.View.Frame(true);
     ApplyAbility(EventTriggerEnum.LeadUp, current, MoveToAttack);
 }
Beispiel #27
0
 public void AddAttacker(IAttackCard current) => Warrior.AddAttacker(current);
Beispiel #28
0
 protected override bool Buff(IAttackCard card) =>
 card.Combat.BuffDefense(defense);
Beispiel #29
0
 protected override bool Buff(IAttackCard card) =>
 card.Combat.BuffHealth(health);
Beispiel #30
0
 protected abstract bool Buff(IAttackCard card);