/*void GiveNewCards()
     * {
     *
     *
     * }*/

    public void CardsFight(CardControllerScript attacker, CardControllerScript defender)
    {
        attacker.OnDamageDeal();

        defender.OnTakeDamage();
        attacker.OnTakeDamage();
        defender.thisCard.GetDamage(attacker.thisCard.attack);
        attacker.thisCard.GetDamage(defender.thisCard.attack);

        defender.CheckForAlive();
        attacker.CheckForAlive();
    }
Exemplo n.º 2
0
    public void OnDrop(PointerEventData eventData)
    {
        if (!GameManagerScript.instance.isPlayerTurn)
        {
            return;
        }

        CardControllerScript card = eventData.pointerDrag.GetComponent <CardControllerScript>();

        if (card && card.thisCard.canAttack && type == HeroType.ENEMY &&
            !GameManagerScript.instance.enemyFieldCards.Exists(x => x.thisCard.isProvocation))
        {
            GameManagerScript.instance.DamageHero(card, true);
        }
    }
    public void DamageHero(CardControllerScript card, bool isEnemyAttacked)
    {
        if (isEnemyAttacked)
        {
            enemyHP = Mathf.Clamp(enemyHP - card.thisCard.attack, 0, int.MaxValue);
        }
        else
        {
            playerHP = Mathf.Clamp(playerHP - card.thisCard.attack, 0, int.MaxValue);
        }

        ShowHP();
        card.OnDamageDeal();
        CheckForResult();
    }
    void CreateCardPref(Card card, Transform hand)//создание префаба карты
    {
        GameObject           cardGO = Instantiate(cardPref, hand, false);
        CardControllerScript cardC  = cardGO.GetComponent <CardControllerScript>();

        cardC.Init(card, hand == playerHand);

        if (cardC.isPlayerCard)
        {
            playerHandCards.Add(cardC);
        }
        else
        {
            enemyHandCards.Add(cardC);
        }
    }
Exemplo n.º 5
0
    public void DamageHero(CardControllerScript card, bool isEnemyAttacked)
    {
        if (isEnemyAttacked)
        {
            enemyHP -= card.thisCard.attack;
        }
        else
        {
            playerHP -= card.thisCard.attack;
        }

        ShowHP();

        card.OnDamageDeal();
        CheckForResult();
    }
    public void OnDrop(PointerEventData eventData)
    {
        if (type != FieldType.SELF_FIELD)
        {
            return;
        }

        CardControllerScript card = eventData.pointerDrag.GetComponent <CardControllerScript>();

        if (card && GameManagerScript.instance.playerFieldCards.Count < 5 && GameManagerScript.instance.isPlayerTurn &&
            GameManagerScript.instance.playerEnergy >= card.thisCard.cost &&
            !card.thisCard.isPlaced)
        {
            if (!card.thisCard.isSpell)
            {
                card.movement.defaultParent = transform;//изменение родителя карты при переносе
            }
            card.OnCast();
        }
    }
    public void HighlightTargets(CardControllerScript attacker, bool highlight)// подсветка карт для атаки
    {
        List <CardControllerScript> targets = new List <CardControllerScript>();

        if (attacker.thisCard.isSpell)
        {
            var spellCard = (SpellCard)attacker.thisCard;

            if (spellCard.spellTarget == SpellCard.TargetType.NO_TARGET)
            {
                targets = new List <CardControllerScript>();
            }
            else if (spellCard.spellTarget == SpellCard.TargetType.ALLY_CARD_TARGET)
            {
                targets = playerFieldCards;
            }
            else
            {
                targets = enemyFieldCards;
            }
        }
        else
        {
            if (enemyFieldCards.Exists(x => x.thisCard.isProvocation))
            {
                targets = enemyFieldCards.FindAll(x => x.thisCard.isProvocation);
            }
            else
            {
                targets = enemyFieldCards;
                enemyHero.HighlightHero(highlight);
            }
        }
        foreach (var card in targets)
        {
            card.info.HighlightAsTarget(highlight);
        }
    }
Exemplo n.º 8
0
    public void OnDrop(PointerEventData eventData)
    {
        if (!GameManagerScript.instance.isPlayerTurn)
        {
            return;
        }

        CardControllerScript attacker = eventData.pointerDrag.GetComponent <CardControllerScript>(),
                             defender = GetComponent <CardControllerScript>();

        if (attacker && attacker.thisCard.canAttack && defender.thisCard.isPlaced)
        {
            if (GameManagerScript.instance.enemyFieldCards.Exists(x => x.thisCard.isProvocation) &&
                !defender.thisCard.isProvocation)
            {
                return;
            }
            else
            {
                GameManagerScript.instance.CardsFight(attacker, defender);
            }
        }
    }
Exemplo n.º 9
0
    public void OnDrop(PointerEventData eventData)
    {
        if (!GameManagerScript.instance.isPlayerTurn)
        {
            return;
        }

        CardControllerScript spell  = eventData.pointerDrag.GetComponent <CardControllerScript>(),
                             target = GetComponent <CardControllerScript>();

        if (spell && spell.thisCard.isSpell && spell.isPlayerCard && target.thisCard.isPlaced &&
            GameManagerScript.instance.playerEnergy >= spell.thisCard.cost)
        {
            var spellCard = (SpellCard)spell.thisCard;

            if ((spellCard.spellTarget == SpellCard.TargetType.ALLY_CARD_TARGET && target.isPlayerCard) ||
                spellCard.spellTarget == SpellCard.TargetType.ENEMY_CARD_TARGET && !target.isPlayerCard)
            {
                GameManagerScript.instance.ReduceEnergy(true, spell.thisCard.cost);
                spell.UseSpell(target);
                GameManagerScript.instance.CheckCardsForManaAvailability();
            }
        }
    }
    public void UseSpell(CardControllerScript target)
    {
        var spellCard = (SpellCard)thisCard;

        switch (spellCard.spell)
        {
        case SpellCard.SpellType.ADD_PROVOCATION:     //добавление провокиции
            if (!target.thisCard.isProvocation)
            {
                target.thisCard.abilities.Add(Card.AbilityType.PROVOCATION);
                target.ability.provocation.SetActive(true);
            }
            break;


        case SpellCard.SpellType.DAMAGE_CARD:     //урон одной карте
            GiveDamageTo(target, spellCard.spellValue);
            break;


        case SpellCard.SpellType.DAMAGE_CARDS:     //урон всем картам соперника
            var enemyCards = isPlayerCard ?
                             new List <CardControllerScript>(gameManager.enemyFieldCards):
                             new List <CardControllerScript>(gameManager.playerFieldCards);

            foreach (var card in enemyCards)
            {
                GiveDamageTo(card, spellCard.spellValue);
            }
            break;


        case SpellCard.SpellType.DAMAGE_HERO:     //урон герою
            if (isPlayerCard)
            {
                gameManager.enemyHP -= spellCard.spellValue;
            }
            else
            {
                gameManager.playerHP -= spellCard.spellValue;
            }

            gameManager.ShowHP();
            gameManager.CheckForResult();
            break;


        case SpellCard.SpellType.DESTROY_CARD:     //уничтожение карты
            GiveDamageTo(target, target.thisCard.helth);
            break;


        case SpellCard.SpellType.HEAL_CARD:     //хилл одной карты
            target.thisCard.helth += spellCard.spellValue;
            break;


        case SpellCard.SpellType.HEAL_CARDS:     //хилл всех своих карт
            var allyCards = isPlayerCard ?
                            gameManager.playerFieldCards :
                            gameManager.enemyFieldCards;

            foreach (var card in allyCards)
            {
                card.thisCard.helth += spellCard.spellValue;
                card.info.RefreshData();
            }
            break;


        case SpellCard.SpellType.HEAL_HERO:     //хилл героя
            if (isPlayerCard)
            {
                gameManager.playerHP += spellCard.spellValue;
            }
            else
            {
                gameManager.enemyHP += spellCard.spellValue;
            }

            gameManager.ShowHP();
            break;
        }

        if (target != null)
        {
            target.ability.OnCast();
            target.CheckForAlive();
        }
        DestroyCard();
    }
 void GiveDamageTo(CardControllerScript card, int damage)
 {
     card.thisCard.GetDamage(damage);
     card.CheckForAlive();
     card.OnTakeDamage();
 }