Пример #1
0
    public void UpdateBattleTokenTokenText(Constants.CardStats statToUpdate, int value)
    {
        //Debug.Log(_parentCard.gameObject.name + " :: " + _parentCard.cardData.cardName + " is updating its battle token");

        switch (statToUpdate)
        {
        case Constants.CardStats.Attack:
            TextTools.AlterTextColor(value, _creatureData.attack, attack);
            if (value < 0)
            {
                attack.text = 0.ToString();
            }
            else
            {
                attack.text = value.ToString();
            }
            break;

        case Constants.CardStats.Size:
            TextTools.AlterTextColor(value, _creatureData.size, size);
            size.text = value.ToString();
            break;

        case Constants.CardStats.Health:
            TextTools.AlterTextColor(value, _parentCard.maxHealth, health);
            health.text = value.ToString();
            break;

        case Constants.CardStats.MaxHealth:
            TextTools.AlterTextColor(value, _creatureData.health, health);
            health.text = value.ToString();
            break;
        }
    }
Пример #2
0
    public void UpdateSupportText(Constants.CardStats statToUpdate, int value)
    {
        if (_supportData.supportValue == 0)
        {
            return;
        }


        switch (statToUpdate)
        {
        case Constants.CardStats.SupportValue:
            TextTools.AlterTextColor(value, _supportData.supportValue, supportText);
            supportText.text = value.ToString();
            break;
        }
    }
Пример #3
0
    public void BounceText(Constants.CardStats stat)
    {
        if (card.currentDeck.decktype != Constants.DeckType.Battlefield && card.currentDeck.decktype != Constants.DeckType.Hand)
        {
            return;
        }


        for (int i = 0; i < textAnimInfo.Count; i++)
        {
            if (textAnimInfo[i].stat == stat)
            {
                if (textAnimInfo[i].rect.gameObject.activeInHierarchy)
                {
                    textAnimInfo[i].rect.GetComponent <Animator>().SetTrigger("Bounce");
                }
            }
        }
    }
Пример #4
0
    public static List <CardVisual> FindCardsWithStatExtreme(CardStats stat, DeckType zone, bool high, OwnerConstraints owner)
    {
        List <CardVisual> results = new List <CardVisual>();

        //Debug.Log("Finding cards in" + zone.ToString());

        Dictionary <int, int> cardsByStat = StatCollector(stat, zone, owner);
        List <int>            sortedStats = cardsByStat.Values.ToList();

        //Debug.Log(sortedStats.Count + " is the number of stats found");

        //for (int i = 0; i < sortedStats.Count; i++) {
        //    Debug.Log(sortedStats[i].ToString() + " is the value of a stat on a soul");
        //}



        int targetStat;

        if (high)
        {
            targetStat = sortedStats.Max();
        }
        else
        {
            targetStat = sortedStats.Min();
        }

        foreach (KeyValuePair <int, int> entry in cardsByStat)
        {
            if (entry.Value == targetStat)
            {
                results.Add(FindCardByID(entry.Key));
            }
        }

        //foreach (CardVisual card in results) {
        //    Debug.Log(card.gameObject.name + " has the least " + stat.ToString());
        //}

        return(results);
    }
Пример #5
0
    private static Dictionary <int, int> StatCollector(CardStats stat, DeckType zone, OwnerConstraints owner)
    {
        Dictionary <int, int> results = new Dictionary <int, int>();

        List <CardVisual> cardsToSearch = FindAllCardsInZone(zone, owner); //FindAllCardsOfType(CardType.Soul, zone, owner);

        //foreach(CardVisual card in cardsToSearch) {
        //    Debug.Log(card.gameObject.name + " is " + card.cardData.cardName);
        //}

        switch (stat)
        {
        case CardStats.Cost:

            for (int i = 0; i < cardsToSearch.Count; i++)
            {
                results.Add(cardsToSearch[i].photonView.viewID, cardsToSearch[i].essenceCost);
            }
            break;

        case CardStats.Attack:
            for (int i = 0; i < cardsToSearch.Count; i++)
            {
                if (cardsToSearch[i].primaryCardType != CardType.Soul)
                {
                    continue;
                }


                CreatureCardVisual soul = cardsToSearch[i] as CreatureCardVisual;

                results.Add(soul.photonView.viewID, soul.attack);
            }
            break;

        case CardStats.Size:
            for (int i = 0; i < cardsToSearch.Count; i++)
            {
                if (cardsToSearch[i].primaryCardType != CardType.Soul)
                {
                    continue;
                }

                CreatureCardVisual soul = cardsToSearch[i] as CreatureCardVisual;

                results.Add(soul.photonView.viewID, soul.size);
            }
            break;

        case CardStats.Health:
            for (int i = 0; i < cardsToSearch.Count; i++)
            {
                if (cardsToSearch[i].primaryCardType != CardType.Soul)
                {
                    continue;
                }

                CreatureCardVisual soul = cardsToSearch[i] as CreatureCardVisual;

                results.Add(soul.photonView.viewID, soul.health);
            }
            break;
        }

        return(results);
    }
Пример #6
0
    public override void AlterCardStats(Constants.CardStats stat, int value, CardVisual source, bool waitForVFX = true, bool sendEvent = true, bool setStats = false)
    {
        //base.AlterCardStats(stat, value, source, waitForVFX, sendEvent, setStats);

        //Debug.Log("creature card alter stat");
        switch (stat)
        {
        case Constants.CardStats.Attack:

            if (setStats)
            {
                attack = value;
            }
            else
            {
                attack += value;
            }


            if (!waitForVFX)
            {
                if (attack < 0)
                {
                    cardAttackText.text = 0.ToString();
                }
                else
                {
                    cardAttackText.text = attack.ToString();
                }

                battleToken.UpdateBattleTokenTokenText(stat, attack);
                TextTools.AlterTextColor(attack, _creatureData.attack, cardAttackText);
            }

            break;

        case Constants.CardStats.Size:

            if (setStats)
            {
                size = value;
            }
            else
            {
                size += value;
            }

            if (size <= 0)
            {
                size = 0;
            }

            if (!waitForVFX)
            {
                cardSizeText.text = size.ToString();
                battleToken.UpdateBattleTokenTokenText(stat, size);
                TextTools.AlterTextColor(size, _creatureData.size, cardSizeText);
            }

            break;

        case Constants.CardStats.Health:
            value = CalcProtection(value);

            if (value < 0 && keywords.Contains(Constants.Keywords.ImmuneToGenerals) && source.primaryCardType == Constants.CardType.Player)
            {
                value = 0;
            }

            if (setStats)
            {
                health = value;
            }
            else
            {
                health += value;
            }

            if (value > 0 && health > maxHealth)
            {
                health = maxHealth;
            }

            if (value < 1)
            {
                Debug.Log(gameObject.name + " :: " + cardData.cardName + " has taken " + Mathf.Abs(value) + " point(s) of damage");
            }

            if (value < 0)
            {
                CheckDeath(source.photonView.viewID, false, waitForVFX);

                if (source.keywords.Contains(Keywords.Deathtouch) && health > 0)
                {
                    health = 0;
                    CheckDeath(source.photonView.viewID, true, waitForVFX);
                }
            }

            if (!waitForVFX)
            {
                cardHealthText.text = health.ToString();
                battleToken.UpdateBattleTokenTokenText(stat, health);
                TextTools.AlterTextColor(health, _creatureData.health, cardHealthText);
                ShowDamage(value);
            }

            break;

        case Constants.CardStats.MaxHealth:

            if (setStats)
            {
                maxHealth = value;
                health    = value;
            }
            else
            {
                maxHealth += value;
                health    += value;
            }

            if (value < 0)
            {
                CheckDeath(source.photonView.viewID, false, waitForVFX);
            }

            if (!waitForVFX)
            {
                cardHealthText.text = health.ToString();
                battleToken.UpdateBattleTokenTokenText(stat, health);
                TextTools.AlterTextColor(health, _creatureData.health, cardHealthText);
            }

            break;
        }


        base.AlterCardStats(stat, value, source, waitForVFX, sendEvent, setStats);

        if (waitForVFX)
        {
            SpecialAbility.StatAdjustment latest = new SpecialAbility.StatAdjustment(stat, value, false, false, null);
            lastStatAdjustment = latest;

            Grid.EventManager.RegisterListener(Constants.GameEvent.VFXLanded, OnVFXLanded);
        }
    }
Пример #7
0
    public override void AlterCardStats(Constants.CardStats stat, int value, CardVisual source, bool waitForVFX = true, bool sendEvent = true, bool setStats = false)
    {
        base.AlterCardStats(stat, value, source, waitForVFX, sendEvent, setStats);


        switch (stat)
        {
        case Constants.CardStats.SupportValue:

            if (setStats)
            {
                supportValue = value;
            }
            else
            {
                supportValue += value;
            }

            if (supportValue > _supportData.supportValue)
            {
                supportValue = _supportData.supportValue;
            }

            if (value < 0)
            {
                CheckDeath(source.photonView.viewID, false, waitForVFX);
            }

            if (!waitForVFX)
            {
                cardSupportValueText.text = supportValue.ToString();
                supportToken.UpdateSupportText(stat, supportValue);
                TextTools.AlterTextColor(supportValue, _supportData.supportValue, cardSupportValueText);
            }

            break;

        case Constants.CardStats.MaxSupport:

            supportValue += value;

            if (value < 0)
            {
                CheckDeath(source.photonView.viewID, false, waitForVFX);
            }

            if (!waitForVFX)
            {
                cardSupportValueText.text = supportValue.ToString();
                supportToken.UpdateSupportText(stat, supportValue);
                TextTools.AlterTextColor(supportValue, _supportData.supportValue, cardSupportValueText);
            }

            break;
        }

        if (waitForVFX)
        {
            SpecialAbility.StatAdjustment latest = new SpecialAbility.StatAdjustment(stat, value, false, false, null);
            lastStatAdjustment = latest;

            Grid.EventManager.RegisterListener(Constants.GameEvent.VFXLanded, OnVFXLanded);
        }
    }