public void SetupWithConceptCard(ConceptCardSkillDatailData conceptCardSkillDatailData, UnitData unitData, ConceptCardDetailAbility.ClickDetail onClickDetail) { bool flag = conceptCardSkillDatailData.effect != null && conceptCardSkillDatailData.effect.Ability != null; if (unitData != null && conceptCardSkillDatailData.type != ConceptCardDetailAbility.ShowType.LockSkill && flag) { List <AbilityData> abilityDataList = new List <AbilityData>(); AbilityData ability = conceptCardSkillDatailData.effect.Ability; using (List <AbilityData> .Enumerator enumerator1 = unitData.SearchDerivedAbilitys(ability).GetEnumerator()) { while (enumerator1.MoveNext()) { using (List <ConceptCardSkillDatailData> .Enumerator enumerator2 = ConceptCardUtility.CreateConceptCardSkillDatailData(enumerator1.Current).GetEnumerator()) { while (enumerator2.MoveNext()) { ConceptCardSkillDatailData current = enumerator2.Current; if (current.type == ConceptCardDetailAbility.ShowType.Ability) { AbilityDeriveList.SetupConceptCard(this.CreateDeriveAbilityItem(current.effect.Ability), current, onClickDetail); } } } } } } if (!this.HasDerive) { this.ShowFlags_IsOn(AbilityDeriveList.ShowFlags.ShowBaseAbility); } if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.m_BaseAbilityRoot, (UnityEngine.Object)null)) { if (flag) { AbilityData ability = conceptCardSkillDatailData.effect.Ability; AbilityDeriveList.SetupConceptCard(this.m_BaseAbilityRoot, conceptCardSkillDatailData, onClickDetail); DataSource.Bind <AbilityData>(this.m_BaseAbilityRoot, ability); } else { SkillData skillData = conceptCardSkillDatailData.skill_data; AbilityDeriveList.SetupConceptCard(this.m_BaseAbilityRoot, conceptCardSkillDatailData, onClickDetail); DataSource.Bind <SkillData>(this.m_BaseAbilityRoot, skillData); } } this.UpdateUIActive(); }
public void DisplaySlotType(EAbilitySlot slotType, bool hideEquipped = false, bool showDerivedAbility = false) { this.mLastDisplayMode = UnitAbilityList.RefreshTypes.DisplayAll; this.mLastDisplaySlot = slotType; for (int index = 0; index < this.mItems.Count; ++index) { UnityEngine.Object.Destroy((UnityEngine.Object)((Component)this.mItems[index]).get_gameObject()); } this.mItems.Clear(); if (this.Unit == null) { this.Unit = DataSource.FindDataOfClass <UnitData>(((Component)this).get_gameObject(), (UnitData)null); } if (this.Unit == null) { return; } List <AbilityData> abilityDataList = !showDerivedAbility?this.Unit.GetAllLearnedAbilities(false) : this.Unit.GetAllLearnedAbilities(true); Transform transform = ((Component)this).get_transform(); if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.Item_Normal, (UnityEngine.Object)null)) { for (int index1 = 0; index1 < abilityDataList.Count; ++index1) { AbilityData abilityData = abilityDataList[index1]; if ((slotType == ~EAbilitySlot.Action || slotType == abilityData.SlotType) && (this.ShowFixedAbilities || !abilityData.Param.is_fixed) && (this.ShowMasterAbilities || !(this.Unit.UnitParam.ability == abilityData.AbilityID) && !this.Unit.IsQuestClearUnlocked(abilityData.Param.iname, QuestClearUnlockUnitDataParam.EUnlockTypes.MasterAbility)) && (this.Unit.MapEffectAbility != abilityData && (this.ShowMasterAbilities || !this.Unit.TobiraMasterAbilitys.Contains(abilityData))) && (!abilityData.IsDerivedAbility || (this.ShowFixedAbilities || !abilityData.DeriveBaseAbility.Param.is_fixed) && (this.ShowMasterAbilities || !(this.Unit.UnitParam.ability == abilityData.DeriveBaseAbility.AbilityID) && !this.Unit.IsQuestClearUnlocked(abilityData.DeriveBaseAbility.Param.iname, QuestClearUnlockUnitDataParam.EUnlockTypes.MasterAbility)) && (this.Unit.MapEffectAbility != abilityData.DeriveBaseAbility && (this.ShowMasterAbilities || !this.Unit.TobiraMasterAbilitys.Contains(abilityData.DeriveBaseAbility))))) { if (hideEquipped) { bool flag = false; for (int index2 = 0; index2 < this.Unit.CurrentJob.AbilitySlots.Length; ++index2) { if (this.Unit.CurrentJob.AbilitySlots[index2] == abilityData.UniqueID) { flag = true; break; } } if (flag) { continue; } } UnitAbilityListItemEvents abilityListItemEvents = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)this.Item_Normal); this.mItems.Add(abilityListItemEvents); ((Component)abilityListItemEvents).get_transform().SetParent(transform, false); ((Component)abilityListItemEvents).get_gameObject().SetActive(true); AbilityDeriveList component = (AbilityDeriveList)((Component)abilityListItemEvents).get_gameObject().GetComponent <AbilityDeriveList>(); if (UnityEngine.Object.op_Equality((UnityEngine.Object)component, (UnityEngine.Object)null)) { DataSource.Bind <AbilityData>(((Component)abilityListItemEvents).get_gameObject(), abilityData); abilityListItemEvents.OnSelect = new ListItemEvents.ListItemEvent(this._OnAbilitySelect); abilityListItemEvents.OnRankUp = new ListItemEvents.ListItemEvent(this._OnAbilityRankUp); abilityListItemEvents.OnOpenDetail = new ListItemEvents.ListItemEvent(this._OnAbilityDetail); abilityListItemEvents.OnRankUpBtnPress = new ListItemEvents.ListItemEvent(this._OnRankUpBtnPress); abilityListItemEvents.OnRankUpBtnUp = new ListItemEvents.ListItemEvent(this._OnRankUpBtnUp); JobData job; int rank; if (this.GetAbilitySource(abilityData.AbilityID, out job, out rank)) { DataSource.Bind <AbilityUnlockInfo>(((Component)abilityListItemEvents).get_gameObject(), new AbilityUnlockInfo() { JobName = job.Name, Rank = rank }); } } else if (abilityData.IsDerivedAbility) { component.SetupWithAbilityData(abilityData.DeriveBaseAbility, new List <AbilityData>() { abilityData }); // ISSUE: method pointer component.AddDetailOpenEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityDetail))); // ISSUE: method pointer component.AddSelectEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilitySelect))); // ISSUE: method pointer component.AddRankUpEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityRankUp))); // ISSUE: method pointer component.AddRankUpBtnPressEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnRankUpBtnPress))); // ISSUE: method pointer component.AddRankUpBtnUpEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnRankUpBtnUp))); } else { component.SetupWithAbilityData(abilityData, (List <AbilityData>)null); // ISSUE: method pointer component.AddDetailOpenEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityDetail))); // ISSUE: method pointer component.AddSelectEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilitySelect))); // ISSUE: method pointer component.AddRankUpEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityRankUp))); // ISSUE: method pointer component.AddRankUpBtnPressEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnRankUpBtnPress))); // ISSUE: method pointer component.AddRankUpBtnUpEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnRankUpBtnUp))); } } } } if (slotType != ~EAbilitySlot.Action && UnityEngine.Object.op_Inequality((UnityEngine.Object) this.Item_SlotMismatch, (UnityEngine.Object)null)) { for (int index = 0; index < abilityDataList.Count; ++index) { AbilityData data = abilityDataList[index]; if (slotType != data.SlotType && (this.ShowFixedAbilities || !data.Param.is_fixed) && (this.ShowMasterAbilities || !(this.Unit.UnitParam.ability == data.AbilityID) && !this.Unit.IsQuestClearUnlocked(data.Param.iname, QuestClearUnlockUnitDataParam.EUnlockTypes.MasterAbility)) && (this.Unit.MapEffectAbility != data && (this.ShowMasterAbilities || !this.Unit.TobiraMasterAbilitys.Contains(data)))) { UnitAbilityListItemEvents abilityListItemEvents = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)this.Item_SlotMismatch); this.mItems.Add(abilityListItemEvents); DataSource.Bind <AbilityData>(((Component)abilityListItemEvents).get_gameObject(), data); abilityListItemEvents.OnRankUp = new ListItemEvents.ListItemEvent(this._OnAbilityRankUp); abilityListItemEvents.OnOpenDetail = new ListItemEvents.ListItemEvent(this._OnAbilityDetail); abilityListItemEvents.OnRankUpBtnPress = new ListItemEvents.ListItemEvent(this._OnRankUpBtnPress); abilityListItemEvents.OnRankUpBtnUp = new ListItemEvents.ListItemEvent(this._OnRankUpBtnUp); ((Component)abilityListItemEvents).get_transform().SetParent(transform, false); ((Component)abilityListItemEvents).get_gameObject().SetActive(true); JobData job; int rank; if (this.GetAbilitySource(data.AbilityID, out job, out rank)) { DataSource.Bind <AbilityUnlockInfo>(((Component)abilityListItemEvents).get_gameObject(), new AbilityUnlockInfo() { JobName = job.Name, Rank = rank }); } } } } List <string> overwrittenAbilitys = TobiraUtility.GetOverwrittenAbilitys(this.Unit); if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.Item_Locked, (UnityEngine.Object)null)) { GameManager instanceDirect = MonoSingleton <GameManager> .GetInstanceDirect(); for (int index1 = 0; index1 < this.Unit.Jobs.Length; ++index1) { if (this.ShowLockedJobAbilities || this.Unit.Jobs[index1].Rank > 0) { RarityParam rarityParam = instanceDirect.GetRarityParam((int)this.Unit.UnitParam.raremax); for (int lv = this.Unit.Jobs[index1].Rank + 1; lv <= JobParam.MAX_JOB_RANK; ++lv) { OString[] learningAbilitys = this.Unit.Jobs[index1].Param.GetLearningAbilitys(lv); if (learningAbilitys != null && (int)rarityParam.UnitJobLvCap >= lv) { for (int index2 = 0; index2 < learningAbilitys.Length; ++index2) { string key = (string)learningAbilitys[index2]; if (!string.IsNullOrEmpty(key)) { AbilityParam abilityParam = instanceDirect.GetAbilityParam(key); if ((this.ShowFixedAbilities || !abilityParam.is_fixed) && !overwrittenAbilitys.Contains(abilityParam.iname)) { UnitAbilityListItemEvents abilityListItemEvents = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)this.Item_Locked); this.mItems.Add(abilityListItemEvents); DataSource.Bind <AbilityParam>(((Component)abilityListItemEvents).get_gameObject(), abilityParam); abilityListItemEvents.OnSelect = new ListItemEvents.ListItemEvent(this._OnAbilitySelect); abilityListItemEvents.OnRankUp = new ListItemEvents.ListItemEvent(this._OnAbilityRankUp); abilityListItemEvents.OnOpenDetail = new ListItemEvents.ListItemEvent(this._OnAbilityDetail); abilityListItemEvents.OnRankUpBtnPress = new ListItemEvents.ListItemEvent(this._OnRankUpBtnPress); abilityListItemEvents.OnRankUpBtnUp = new ListItemEvents.ListItemEvent(this._OnRankUpBtnUp); ((Component)abilityListItemEvents).get_transform().SetParent(transform, false); ((Component)abilityListItemEvents).get_gameObject().SetActive(true); DataSource.Bind <AbilityUnlockInfo>(((Component)abilityListItemEvents).get_gameObject(), new AbilityUnlockInfo() { JobName = this.Unit.Jobs[index1].Name, Rank = lv }); } } } } } } } if (this.ShowMasterAbilities && !string.IsNullOrEmpty(this.Unit.UnitParam.ability) && (this.Unit.LearnAbilitys.Find((Predicate <AbilityData>)(p => p.AbilityID == this.Unit.UnitParam.ability)) == null && !overwrittenAbilitys.Exists((Predicate <string>)(abil => abil == this.Unit.UnitParam.ability)))) { AbilityParam abilityParam = instanceDirect.GetAbilityParam(this.Unit.UnitParam.ability); UnitAbilityListItemEvents abilityListItemEvents = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)this.Item_Locked); this.mItems.Add(abilityListItemEvents); DataSource.Bind <AbilityParam>(((Component)abilityListItemEvents).get_gameObject(), abilityParam); abilityListItemEvents.OnSelect = new ListItemEvents.ListItemEvent(this._OnAbilitySelect); abilityListItemEvents.OnRankUp = new ListItemEvents.ListItemEvent(this._OnAbilityRankUp); abilityListItemEvents.OnOpenDetail = new ListItemEvents.ListItemEvent(this._OnAbilityDetail); abilityListItemEvents.OnRankUpBtnPress = new ListItemEvents.ListItemEvent(this._OnRankUpBtnPress); abilityListItemEvents.OnRankUpBtnUp = new ListItemEvents.ListItemEvent(this._OnRankUpBtnUp); ((Component)abilityListItemEvents).get_transform().SetParent(transform, false); ((Component)abilityListItemEvents).get_gameObject().SetActive(true); } } this.ResetScrollPos(); }
public void DisplaySlots() { this.mLastDisplayMode = UnitAbilityList.RefreshTypes.DisplaySlots; for (int index = 0; index < this.mItems.Count; ++index) { UnityEngine.Object.Destroy((UnityEngine.Object)((Component)this.mItems[index]).get_gameObject()); } this.mItems.Clear(); UnitData dataOfClass = DataSource.FindDataOfClass <UnitData>(((Component)this).get_gameObject(), (UnitData)null); if (dataOfClass != null) { this.Unit = dataOfClass; } if (this.Unit == null) { return; } GlobalVars.SelectedUnitUniqueID.Set(this.Unit.UniqueID); List <AbilityData> abilityDataList = new List <AbilityData>((IEnumerable <AbilityData>) this.Unit.CreateEquipAbilitys()); if (this.Unit.MasterAbility != null) { abilityDataList.Add(this.Unit.MasterAbility); } Transform transform = ((Component)this).get_transform(); for (int index = 0; index < abilityDataList.Count; ++index) { AbilityData derivedAbility = abilityDataList[index]; bool flag = false; if (derivedAbility != null && derivedAbility.Param != null && derivedAbility.IsDeriveBaseAbility) { derivedAbility = derivedAbility.DerivedAbility; } UnitAbilityListItemEvents abilityListItemEvents1; if (derivedAbility != null && derivedAbility.Param != null) { flag = derivedAbility.Param.is_fixed; UnitAbilityListItemEvents abilityListItemEvents2 = this.Unit.MasterAbility == null || this.Unit.MasterAbility != derivedAbility ? (!flag ? this.Item_Normal : this.Item_Fixed) : this.Item_Fixed; if (derivedAbility.IsDerivedAbility && derivedAbility.DeriveBaseAbility == this.Unit.MasterAbility) { abilityListItemEvents2 = this.Item_Fixed; } if (UnityEngine.Object.op_Equality((UnityEngine.Object)abilityListItemEvents2, (UnityEngine.Object)null)) { abilityListItemEvents2 = this.Item_Normal; } abilityListItemEvents1 = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)abilityListItemEvents2); AbilityDeriveList component = (AbilityDeriveList)((Component)abilityListItemEvents1).get_gameObject().GetComponent <AbilityDeriveList>(); if (UnityEngine.Object.op_Equality((UnityEngine.Object)component, (UnityEngine.Object)null)) { DataSource.Bind <AbilityData>(((Component)abilityListItemEvents1).get_gameObject(), derivedAbility); string key = this.Unit.SearchAbilityReplacementSkill(derivedAbility.Param.iname); if (!string.IsNullOrEmpty(key)) { DataSource.Bind <AbilityParam>(((Component)abilityListItemEvents1).get_gameObject(), MonoSingleton <GameManager> .Instance.GetAbilityParam(key)); } abilityListItemEvents1.IsEnableSkillChange = true; JobData job; int rank; if (this.GetAbilitySource(derivedAbility.AbilityID, out job, out rank)) { DataSource.Bind <AbilityUnlockInfo>(((Component)abilityListItemEvents1).get_gameObject(), new AbilityUnlockInfo() { JobName = job.Name, Rank = rank }); } abilityListItemEvents1.OnOpenDetail = new ListItemEvents.ListItemEvent(this._OnAbilityDetail); abilityListItemEvents1.OnRankUp = new ListItemEvents.ListItemEvent(this._OnAbilityRankUp); abilityListItemEvents1.OnRankUpBtnPress = new ListItemEvents.ListItemEvent(this._OnRankUpBtnPress); abilityListItemEvents1.OnRankUpBtnUp = new ListItemEvents.ListItemEvent(this._OnRankUpBtnUp); } else if (derivedAbility.IsDerivedAbility) { component.SetupWithAbilityParam(derivedAbility.Param, new List <AbilityDeriveParam>() { derivedAbility.DeriveParam }); // ISSUE: method pointer component.AddDetailOpenEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityDetail))); } else { component.SetupWithAbilityParam(derivedAbility.Param, (List <AbilityDeriveParam>)null); // ISSUE: method pointer component.AddDetailOpenEventListener(new UnityAction <GameObject>((object)this, __methodptr(_OnAbilityDetail))); } } else { AbilityParam data = new AbilityParam(); data.slot = JobData.ABILITY_SLOT_TYPES[index]; abilityListItemEvents1 = (UnitAbilityListItemEvents)UnityEngine.Object.Instantiate <UnitAbilityListItemEvents>((M0)this.Item_Empty); DataSource.Bind <AbilityParam>(((Component)abilityListItemEvents1).get_gameObject(), data); } ((Component)abilityListItemEvents1).get_transform().SetParent(transform, false); ((Component)abilityListItemEvents1).get_gameObject().SetActive(true); GameParameter.UpdateAll(((Component)abilityListItemEvents1).get_gameObject()); if (!flag) { abilityListItemEvents1.OnSelect = new ListItemEvents.ListItemEvent(this._OnSlotSelect); } this.mItems.Add(abilityListItemEvents1); } }