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; } }
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; } }
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"); } } } }
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); }
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); }
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); } }
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); } }