using System; using System.Collections.Generic; using UILib; using UnityEngine; using XMainClient.UI; using XUtliPoolLib; namespace XMainClient { internal class ItemListHandler : DlgHandlerBase { protected override string FileName { get { return "GameSystem/ItemListHandler"; } } private IXUIButton m_Close; private XUIPool m_ItemPool = new XUIPool(XSingleton.singleton.m_uiTool); private IXUIScrollView m_ScrollView; private IXUITable m_Table; private List m_TypeList = new List(); private List> m_ItemID = new List>(); private List m_TypeTitle = new List(); protected override void Init() { this.m_TypeList.Clear(); this.m_TypeTitle.Clear(); this.m_Close = (base.PanelObject.transform.Find("Bg/Close").GetComponent("XUIButton") as IXUIButton); for (int i = 1; i < XFastEnumIntEqualityComparer.ToInt(ItemQuality.MAX); i++) { ItemQuality itemQuality = (ItemQuality)i; string s = itemQuality.ToString(); Transform item = base.PanelObject.transform.Find(XSingleton.singleton.StringCombine("Bg/ScrollView/Table/", s)); this.m_TypeTitle.Add(item); IXUIList ixuilist = base.PanelObject.transform.Find(XSingleton.singleton.StringCombine("Bg/ScrollView/Table/", s, "/Grid")).GetComponent("XUIList") as IXUIList; ixuilist.RegisterRepositionHandle(new OnAfterRepostion(this.OnListRefreshFinished)); this.m_TypeList.Add(ixuilist); } Transform transform = base.PanelObject.transform.Find("Bg/ScrollView/ItemTpl"); this.m_ItemPool.SetupPool(transform.parent.gameObject, transform.gameObject, 10u, false); this.m_ScrollView = (base.PanelObject.transform.Find("Bg/ScrollView").GetComponent("XUIScrollView") as IXUIScrollView); this.m_Table = (base.PanelObject.transform.Find("Bg/ScrollView/Table").GetComponent("XUITable") as IXUITable); } private void OnListRefreshFinished() { this.m_Table.Reposition(); this.m_ScrollView.ResetPosition(); } public override void RegisterEvent() { this.m_Close.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnCloseClicked)); } private void ClassifySpritesByQuality(List itemList) { this.m_ItemID.Clear(); List list = new List(); List list2 = new List(); List list3 = new List(); List list4 = new List(); List list5 = new List(); for (int i = 0; i < itemList.Count; i++) { ItemList.RowData itemConf = XBagDocument.GetItemConf((int)itemList[i]); switch (itemConf.ItemQuality) { case 1: list5.Add(itemList[i]); break; case 2: list4.Add(itemList[i]); break; case 3: list3.Add(itemList[i]); break; case 4: list2.Add(itemList[i]); break; case 5: list.Add(itemList[i]); break; } } this.m_ItemID.Add(list5); this.m_ItemID.Add(list4); this.m_ItemID.Add(list3); this.m_ItemID.Add(list2); this.m_ItemID.Add(list); } public void ShowItemList(List itemList) { base.SetVisible(true); this.m_ScrollView.ResetPosition(); this.ClassifySpritesByQuality(itemList); this.m_ItemPool.FakeReturnAll(); this.CreateItemIcon(ItemQuality.L); this.CreateItemIcon(ItemQuality.S); this.CreateItemIcon(ItemQuality.A); this.CreateItemIcon(ItemQuality.B); this.CreateItemIcon(ItemQuality.C); this.m_ItemPool.ActualReturnAll(true); } private void CreateItemIcon(ItemQuality quality) { int index = XFastEnumIntEqualityComparer.ToInt(quality) - 1; IXUIList ixuilist = this.m_TypeList[index]; List list = this.m_ItemID[index]; this.m_TypeTitle[index].gameObject.SetActive(list.Count > 0); for (int i = 0; i < list.Count; i++) { GameObject gameObject = this.m_ItemPool.FetchGameObject(false); gameObject.transform.parent = ixuilist.gameObject.transform; this.SetitemInfo(gameObject, list[i]); XSingleton.singleton.m_uiTool.ChangePanel(gameObject, ixuilist.GetParentUIRect(), ixuilist.GetParentPanel()); } ixuilist.Refresh(); } private void SetitemInfo(GameObject obj, uint itemID) { IXUISprite ixuisprite = obj.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = (ulong)itemID; XSingleton.singleton.normalItemDrawer.DrawItem(obj, (int)itemID, 0, false); ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(XSingleton.singleton.OnItemClick)); } private string GetQualityFrame(uint quality) { return string.Format("kuang_dj_{0}", quality); } private bool OnCloseClicked(IXUIButton sp) { base.SetVisible(false); return true; } } }