public IEnumerator AddCompanion(ReserveCompanionStatus companion)
        {
            DequeueCompanionStatusData(companion, andUpdate: false);
            HashSet <EventCategory> hashSet = new HashSet <EventCategory>();

            foreach (EventCategory item in companion.definition.eventsInvalidatingCost)
            {
                hashSet.Add(item);
            }
            foreach (EventCategory item2 in companion.definition.eventsInvalidatingCasting)
            {
                hashSet.Add(item2);
            }
            AddFightEventListeners(companion, hashSet, status: false);
            if (companion.isGiven)
            {
                m_additionalCompanionStatusList.Add(companion);
                m_additionalCompanionList.Insert(m_additionalCompanionStatusList.Count - 1, companion);
            }
            else
            {
                m_companionStatusList.Add(companion);
                m_companionList.Insert(m_companionStatusList.Count - 1, companion);
            }
            yield break;
        }
 private void DequeueCompanionStatusData(ReserveCompanionStatus companionStatus, bool andUpdate)
 {
     if (!m_companionStatusQueue.TryGetValue(companionStatus.definition.get_id(), out Queue <CompanionStatusData> value) || value.Count == 0)
     {
         return;
     }
     if (m_companionStatusInView.ContainsKey(companionStatus.definition.get_id()))
     {
         m_companionStatusInView[companionStatus.definition.get_id()] = value.Dequeue();
     }
     else
     {
         m_companionStatusInView.Add(companionStatus.definition.get_id(), value.Dequeue());
     }
     if (andUpdate)
     {
         if (companionStatus.isGiven)
         {
             m_additionalCompanionList.UpdateAllConfigurators();
         }
         else
         {
             m_companionList.UpdateAllConfigurators();
         }
     }
 }
 private void AddFightEventListeners(ReserveCompanionStatus companionStatus, IEnumerable <EventCategory> eventsToAdd, bool status)
 {
     foreach (EventCategory item in eventsToAdd)
     {
         AddFightEventListener(companionStatus, item, status);
     }
     AddFightEventListener(companionStatus, EventCategory.ElementPointsChanged, status);
 }
 public override IEnumerator AddAdditionalCompanion(PlayerStatus owner, int companionDefinitionId, int level)
 {
     if (!(null == m_companionBar) && RuntimeData.companionDefinitions.TryGetValue(companionDefinitionId, out CompanionDefinition value))
     {
         ReserveCompanionStatus companion = new ReserveCompanionStatus(owner, value, level);
         yield return(m_companionBar.AddCompanion(companion));
     }
 }
 public override void AddAdditionalCompanionStatus(PlayerStatus owner, int companionDefinitionId, int level)
 {
     if (!(null == m_companionBar) && RuntimeData.companionDefinitions.TryGetValue(companionDefinitionId, out CompanionDefinition value))
     {
         ReserveCompanionStatus companion = new ReserveCompanionStatus(owner, value, level);
         m_companionBar.AddCompanionStatus(m_playerStatus, companion);
     }
 }
Beispiel #6
0
        public static IEnumerator ShowPlayingCompanion(ReserveCompanionStatus reserveCompanion, CellObject cell)
        {
            PlaySpellCompanionUI playSpellCompanionUI = s_instance.m_playSpellCompanionUI;

            if (null != playSpellCompanionUI)
            {
                yield return(playSpellCompanionUI.ShowPlaying(reserveCompanion, cell));
            }
        }
 public CompanionStatusData?GetCompanionStatusData(ReserveCompanionStatus companion)
 {
     if (companion == null)
     {
         return(null);
     }
     if (m_companionStatusInView.TryGetValue(companion.definition.get_id(), out CompanionStatusData value))
     {
         return(value);
     }
     return(null);
 }
Beispiel #8
0
        public static CastValidity ComputeCompanionCastValidity(PlayerStatus owner, ReserveCompanionStatus companionStatus)
        {
            CastValidity castValidity = ComputeCastValidity(companionStatus);

            if (castValidity != 0)
            {
                return(castValidity);
            }
            if (!HasCompanionValidTargets(owner, companionStatus))
            {
                return(CastValidity.NO_TARGET_AVAILABLE);
            }
            return(CastValidity.SUCCESS);
        }
        public void AddCompanionStatus(PlayerStatus playerStatus, ReserveCompanionStatus companion)
        {
            EnqueueCompanionStatusData(playerStatus, companion);
            HashSet <EventCategory> hashSet = new HashSet <EventCategory>();

            foreach (EventCategory item in companion.definition.eventsInvalidatingCost)
            {
                hashSet.Add(item);
            }
            foreach (EventCategory item2 in companion.definition.eventsInvalidatingCasting)
            {
                hashSet.Add(item2);
            }
            AddFightEventListeners(companion, hashSet, status: true);
        }
 public override IEnumerator AddCompanion(int companionDefinitionId, int level, int index)
 {
     if (!(null == m_companionBar))
     {
         float num = (float)index * 0.1f;
         if (num > 0f)
         {
             yield return((object)new WaitForTime(num));
         }
         if (RuntimeData.companionDefinitions.TryGetValue(companionDefinitionId, out CompanionDefinition value))
         {
             ReserveCompanionStatus companion = new ReserveCompanionStatus(m_playerStatus, value, level);
             yield return(m_companionBar.AddCompanion(companion));
         }
     }
 }
Beispiel #11
0
        private static bool HasCompanionValidTargets(PlayerStatus casterStatus, ReserveCompanionStatus companionStatus)
        {
            CompanionDefinition definition = companionStatus.definition;

            if (null == definition)
            {
                return(false);
            }
            OneCastTargetContext context = new OneCastTargetContext(FightStatus.local, casterStatus.id, DynamicValueHolderType.Companion, definition.get_id(), companionStatus.level, 0);
            FightMap             current = FightMap.current;

            if (null == current)
            {
                return(false);
            }
            return(definition.spawnLocation?.EnumerateCoords(context).GetEnumerator().MoveNext() ?? false);
        }
        public IEnumerator RemoveCompanion(int companionDefinitionId)
        {
            int i = 0;

            for (int count = m_additionalCompanionStatusList.Count; i < count && m_additionalCompanionStatusList[i].definition.get_id() != companionDefinitionId; i++)
            {
            }
            if (i < m_additionalCompanionStatusList.Count)
            {
                ReserveCompanionStatus reserveCompanionStatus = m_additionalCompanionStatusList[i];
                RemoveFightEventListeners(reserveCompanionStatus.definition.get_id(), m_playerStatus.fightId, status: false);
                m_additionalCompanionStatusList.RemoveAt(i);
                m_additionalCompanionList.RemoveAt(i);
                m_companionStatusQueue.Remove(companionDefinitionId);
                m_companionStatusInView.Remove(companionDefinitionId);
            }
            yield break;
        }
        private void AddFightEventListener(ReserveCompanionStatus companionStatus, EventCategory eventCategory, bool status)
        {
            Dictionary <EventCategory, List <int> > dictionary = status ? m_companionsPerCategoryInvalidatingStatus : m_companionsPerCategoryInvalidatingView;

            if (!dictionary.TryGetValue(eventCategory, out List <int> value))
            {
                value = new List <int>();
                dictionary.Add(eventCategory, value);
                if (status)
                {
                    FightLogicExecutor.AddListenerUpdateStatus(companionStatus.ownerPlayer.fightId, OnCastingValidityUpdated, eventCategory);
                }
                else
                {
                    FightLogicExecutor.AddListenerUpdateView(companionStatus.ownerPlayer.fightId, OnCastingValidityViewUpdated, eventCategory);
                }
            }
            value.Add(companionStatus.definition.get_id());
        }
        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 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);
        }
Beispiel #16
0
        public IEnumerator ShowPlaying(ReserveCompanionStatus companion, CellObject cell)
        {
            if (m_companionDummyPool == null)
            {
                Log.Warning("PlaySpellCompanionUI is inactive.", 64, "C:\\BuildAgents\\AgentB\\work\\cub_client_win64_develop\\client\\DofusCube.Unity\\Assets\\Core\\Code\\UI\\FightRework\\PlaySpellCompanionUI.cs");
                yield break;
            }
            GameObject dummy = m_companionDummyPool.Instantiate(this.get_transform(), false);

            dummy.get_transform().set_localScale(m_companionDummy.get_transform().get_localScale());
            CompanionStatusCellRenderer itemUI = dummy.GetComponent <CompanionStatusCellRenderer>();
            CastableDragNDropElement    dnd    = dummy.GetComponent <CastableDragNDropElement>();

            itemUI.SetValue(companion);
            yield return(itemUI.WaitForImage());

            yield return(ShowPlaying(companion, dnd, cell));

            itemUI.SetValue(null);
            m_companionDummyPool.Release(dummy);
        }
Beispiel #17
0
 public void AddCompanionEvent(ReserveCompanionStatus companion)
 {
     (EnQueueVisibleElement(HistoryElementType.Companion) as HistoryCompanionElement).Set(companion);
 }
Beispiel #18
0
 public static void RecomputeCompanionCost(ReserveCompanionStatus status, ref CompanionStatusData data)
 {
     data.cost = (status.isGiven ? null : status.definition.cost);
 }
Beispiel #19
0
 public static void RecomputeCompanionCastValidity(PlayerStatus owner, ReserveCompanionStatus status, ref CompanionStatusData data)
 {
     data.hasResources = (ComputeCompanionCostCastValidity(owner, status) == CastValidity.SUCCESS);
 }
Beispiel #20
0
        public static CastValidity ComputeCompanionCostCastValidity(PlayerStatus owner, ReserveCompanionStatus companionStatus)
        {
            DynamicValueFightContext castTargetContext = companionStatus.CreateValueContext();

            if (companionStatus.state == CompanionReserveState.Idle && companionStatus.isGiven)
            {
                return(CastValidity.SUCCESS);
            }
            IReadOnlyList <Cost> cost = companionStatus.definition.cost;
            int i = 0;

            for (int count = cost.Count; i < count; i++)
            {
                CastValidity castValidity = cost[i].CheckValidity(owner, castTargetContext);
                if (castValidity != 0)
                {
                    return(castValidity);
                }
            }
            return(CastValidity.SUCCESS);
        }