private void OnCastingValidityUpdated(EventCategory category) { if (m_spellsPerCategoryInvalidatingStatus.TryGetValue(category, out List <int> value)) { foreach (int item in value) { if (m_playerStatus.TryGetSpell(item, out SpellStatus spellStatus)) { SpellStatusData data = default(SpellStatusData); CastValidityHelper.RecomputeSpellCost(spellStatus, ref data); CastValidityHelper.RecomputeSpellCastValidity(spellStatus.ownerPlayer, spellStatus, ref data); EnqueueSpellStatusData(spellStatus.instanceId, data); } } } }
public void RefreshUsability(PlayerStatus status, bool recomputeCosts) { List <int> list = new List <int>(); IEnumerator <SpellStatus> spellStatusEnumerator = status.GetSpellStatusEnumerator(); while (spellStatusEnumerator.MoveNext()) { SpellStatus current = spellStatusEnumerator.Current; if (current != null) { SpellStatusData data = default(SpellStatusData); CastValidityHelper.RecomputeSpellCastValidity(current.ownerPlayer, current, ref data); CastValidityHelper.RecomputeSpellCost(current, ref data); EnqueueSpellStatusData(current.instanceId, data); list.Add(current.instanceId); } } m_refreshUsabilityQueue.Enqueue(list); }
public void AddSpellStatus(SpellStatus spellStatus) { SpellStatusData data = default(SpellStatusData); CastValidityHelper.RecomputeSpellCastValidity(spellStatus.ownerPlayer, spellStatus, ref data); CastValidityHelper.RecomputeSpellCost(spellStatus, ref data); EnqueueSpellStatusData(spellStatus.instanceId, data); HashSet <EventCategory> hashSet = new HashSet <EventCategory>(); foreach (EventCategory item in spellStatus.definition.eventsInvalidatingCost) { hashSet.Add(item); } foreach (EventCategory item2 in spellStatus.definition.eventsInvalidatingCasting) { hashSet.Add(item2); } AddFightEventListeners(spellStatus, hashSet, status: true); }