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); } } } }
private void EnqueueCompanionStatusData(PlayerStatus playerStatus, ReserveCompanionStatus companion) { CompanionStatusData companionStatusData = default(CompanionStatusData); companionStatusData.state = companion.state; companionStatusData.isGiven = companion.isGiven; CompanionStatusData data = companionStatusData; CastValidityHelper.RecomputeCompanionCastValidity(playerStatus, companion, ref data); CastValidityHelper.RecomputeCompanionCost(companion, ref data); int id = companion.definition.get_id(); if (!m_companionStatusQueue.TryGetValue(id, out Queue <CompanionStatusData> value)) { value = m_queuePool.Get(); m_companionStatusQueue.Add(id, value); } value.Enqueue(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); }
public bool IsValidDrag(object value) { if (FightCastManager.currentCastType != 0) { return(false); } ReserveCompanionStatus companionStatus = (ReserveCompanionStatus)value; if (CastValidityHelper.ComputeCompanionCostCastValidity(m_playerStatus, companionStatus) != 0) { return(false); } CastValidity castValidity = CastValidityHelper.ComputeCompanionCastValidity(m_playerStatus, companionStatus); if (castValidity != 0) { NotificationWindowManager.DisplayNotification(TextCollectionUtility.GetFormattedText(castValidity)); } return(castValidity == CastValidity.SUCCESS); }