private void CreateSlots() { this.DestroyPartySlotObjects(); List <PartySlotData> mainSlotData = new List <PartySlotData>(); List <PartySlotData> subSlotData = new List <PartySlotData>(); PartySlotData supportSlotData = (PartySlotData)null; PartyUtility.CreatePartySlotData(this.mCurrentQuest, out mainSlotData, out subSlotData, out supportSlotData); List <GenericSlot> genericSlotList = new List <GenericSlot>(); if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.MainMemberHolder, (UnityEngine.Object)null) && mainSlotData.Count > 0) { using (List <PartySlotData> .Enumerator enumerator = mainSlotData.GetEnumerator()) { while (enumerator.MoveNext()) { PartySlotData current = enumerator.Current; GenericSlot genericSlot = current.Type == PartySlotType.Npc || current.Type == PartySlotType.NpcHero ? this.CreateSlotObject(current, this.NpcSlotTemplate, this.MainMemberHolder) : this.CreateSlotObject(current, this.UnitSlotTemplate, this.MainMemberHolder); genericSlotList.Add(genericSlot); } } if (supportSlotData != null) { this.FriendSlot = this.CreateSlotObject(supportSlotData, this.UnitSlotTemplate, this.MainMemberHolder); } } if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.SubMemberHolder, (UnityEngine.Object)null) && subSlotData.Count > 0) { using (List <PartySlotData> .Enumerator enumerator = subSlotData.GetEnumerator()) { while (enumerator.MoveNext()) { PartySlotData current = enumerator.Current; GenericSlot genericSlot = current.Type == PartySlotType.Npc || current.Type == PartySlotType.NpcHero ? this.CreateSlotObject(current, this.NpcSlotTemplate, this.SubMemberHolder) : this.CreateSlotObject(current, this.UnitSlotTemplate, this.SubMemberHolder); genericSlotList.Add(genericSlot); } } } this.mSlotData.AddRange((IEnumerable <PartySlotData>)mainSlotData); this.mSlotData.AddRange((IEnumerable <PartySlotData>)subSlotData); this.UnitSlots = genericSlotList.ToArray(); if (UnityEngine.Object.op_Inequality((UnityEngine.Object) this.FriendSlot, (UnityEngine.Object)null) && this.mCurrentQuest != null && this.mCurrentQuest.type == QuestTypes.Tower) { TowerFloorParam towerFloor = MonoSingleton <GameManager> .Instance.FindTowerFloor(this.mCurrentQuest.iname); if (towerFloor != null) { ((Component)this.FriendSlot).get_gameObject().SetActive(towerFloor.can_help); ((Component)this.SupportSkill).get_gameObject().SetActive(towerFloor.can_help); } } this.mGuestUnits = new List <UnitData>(); PartyUtility.MergePartySlotWithPartyUnits(this.mCurrentQuest, this.mSlotData, this.mCurrentParty, this.mGuestUnits, this.mIsUserOwnUnits); this.ReflectionUnitSlot(); }