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); } }
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); }
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)); } } }
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); }
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); }
public void AddCompanionEvent(ReserveCompanionStatus companion) { (EnQueueVisibleElement(HistoryElementType.Companion) as HistoryCompanionElement).Set(companion); }
public static void RecomputeCompanionCost(ReserveCompanionStatus status, ref CompanionStatusData data) { data.cost = (status.isGiven ? null : status.definition.cost); }
public static void RecomputeCompanionCastValidity(PlayerStatus owner, ReserveCompanionStatus status, ref CompanionStatusData data) { data.hasResources = (ComputeCompanionCostCastValidity(owner, status) == CastValidity.SUCCESS); }
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); }