Beispiel #1
0
 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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }