Exemple #1
0
    public void AttackSlot(int index, Slots attackedSlots, int damage, Health targetHealth)
    {
        if (damage == 0)
        {
            return;
        }

        var damageText = GameObject.Instantiate <DamageText>(damageTextPrefab);

        damageText.SetNumber(damage);

        var        slot = attackedSlots.slots[index];
        GameObject card = slot.occupied ? slot.objectInSlot : null;

        if (card == null) // No defender, hit face
        {
            //WARN copypasta from line 288!
            damageText.owner = targetHealth.owner;

            var tag = (damageText.owner == Owner.Player ? "Player" : "Enemy") + index;
            damageText.transform.position = GameObject.Find(tag).transform.position;

            targetHealth.DealDamage(damage);
        }
        else // Make defender take damage
        {
            CardInLane defender = card.GetComponent <CardInLane>();
            if (defender.cardType == Card.CardType.Monster)
            {
                damageText.owner = defender.owner;
                damageText.transform.position = defender.transform.position;

                int defenderHp = defender.TakeDamage(damage);
                if (defenderHp <= 0)
                {
                    Remove(defender);
                }
            }
            else
            {
                damageText.owner = targetHealth.owner;

                var tag = (damageText.owner == Owner.Player ? "Player" : "Enemy") + index;
                damageText.transform.position = GameObject.Find(tag).transform.position;

                // Attack bypasses spells, take face dmg
                targetHealth.DealDamage(damage);
            }
        }
    }