From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../XMainClient/UI/CharacterItemBagHandler.cs | 412 +++++++++++++++++++++ 1 file changed, 412 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/UI/CharacterItemBagHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/UI/CharacterItemBagHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/UI/CharacterItemBagHandler.cs b/Client/Assets/Scripts/XMainClient/UI/CharacterItemBagHandler.cs new file mode 100644 index 00000000..4444c86a --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/CharacterItemBagHandler.cs @@ -0,0 +1,412 @@ +using System; +using System.Collections.Generic; +using KKSG; +using UILib; +using UnityEngine; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient.UI +{ + internal class CharacterItemBagHandler : DlgHandlerBase + { + private XItemMorePowerfulTipMgr newItemMgr + { + get + { + return DlgBase.singleton.NewItemMgr; + } + } + + private XItemMorePowerfulTipMgr redPointMgr + { + get + { + return DlgBase.singleton.RedPointMgr; + } + } + + public XWheelOfFortuneHandler WheelOfFortune + { + get + { + return this._WheelOfFortune; + } + } + + protected override string FileName + { + get + { + return "ItemNew/BagListPanel"; + } + } + + private XCharacterItemDocument m_doc; + + private IXUILabel m_bagNumLab; + + private IXUIButton m_helpBtn; + + private IXUIButton m_expandBagBtn; + + private XBagWindow m_bagWindow; + + private XWheelOfFortuneHandler _WheelOfFortune; + + private XUIPool m_tabTplPool = new XUIPool(XSingleton.singleton.m_uiTool); + + private Dictionary m_tabReddotDic = new Dictionary(); + + private Dictionary itemBtnDic = new Dictionary(); + + protected override void Init() + { + base.Init(); + GameObject gameObject = base.PanelObject.transform.Find("WheelOfFortune").gameObject; + DlgHandlerBase.EnsureCreate(ref this._WheelOfFortune, gameObject, this, false); + this.m_bagNumLab = (base.PanelObject.transform.Find("BagNum").GetComponent("XUILabel") as IXUILabel); + this.m_expandBagBtn = (base.PanelObject.transform.Find("add").GetComponent("XUIButton") as IXUIButton); + this.m_helpBtn = (base.PanelObject.transform.Find("Help").GetComponent("XUIButton") as IXUIButton); + gameObject = base.PanelObject.transform.Find("Items").gameObject; + this.m_bagWindow = new XBagWindow(gameObject, null, null); + this.m_bagWindow.Init(); + gameObject = base.PanelObject.transform.Find("TabsFrame/Tpl").gameObject; + this.m_tabTplPool.SetupPool(gameObject.transform.parent.gameObject, gameObject, 4u, false); + this.m_doc = (XSingleton.singleton.Doc.GetXComponent(XCharacterItemDocument.uuID) as XCharacterItemDocument); + this.m_doc.Handler = this; + BagExpandItemListTable.RowData expandItemConfByType = XBagDocument.GetExpandItemConfByType((uint)XFastEnumIntEqualityComparer.ToInt(BagType.ItemBag)); + this.m_expandBagBtn.gameObject.SetActive(expandItemConfByType != null); + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + this.m_expandBagBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnBagExpandClicked)); + } + + protected override void OnShow() + { + base.OnShow(); + this.m_doc.BagType = 0u; + this.FillTabs(); + } + + protected override void OnHide() + { + this.m_bagWindow.OnHide(); + this.itemBtnDic.Clear(); + this.newItemMgr.ReturnAll(); + this.redPointMgr.ReturnAll(); + this.m_doc.NewItems.TryClear(); + base.OnHide(); + } + + public override void StackRefresh() + { + base.StackRefresh(); + this.RefreshBag(); + this.UpdateTabRedDot(); + } + + public override void OnUnload() + { + DlgHandlerBase.EnsureUnload(ref this._WheelOfFortune); + this.m_doc.Handler = null; + base.OnUnload(); + } + + private void FillTabs() + { + this.m_tabTplPool.ReturnAll(false); + bool flag = XCharacterItemDocument.TabList == null; + if (!flag) + { + int count = XCharacterItemDocument.TabList.Count; + this.m_tabReddotDic.Clear(); + for (int i = 0; i < count; i++) + { + XTuple xtuple = XCharacterItemDocument.TabList[i]; + bool flag2 = xtuple == null; + if (!flag2) + { + GameObject gameObject = this.m_tabTplPool.FetchGameObject(false); + gameObject.transform.localScale = Vector3.one; + gameObject.transform.localPosition = new Vector3((float)(this.m_tabTplPool.TplWidth * i), 0f, 0f); + IXUICheckBox ixuicheckBox = gameObject.transform.Find("Bg").GetComponent("XUICheckBox") as IXUICheckBox; + ixuicheckBox.ID = (ulong)xtuple.Item1; + ixuicheckBox.RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this.OnTabTooggleClicked)); + this.m_tabReddotDic.Add(xtuple.Item1, gameObject.transform.Find("Bg/RedPoint").gameObject); + IXUILabel ixuilabel = gameObject.transform.Find("Bg/TextLabel").GetComponent("XUILabel") as IXUILabel; + ixuilabel.SetText(xtuple.Item2); + ixuilabel = (gameObject.transform.Find("Bg/SelectedTextLabel").GetComponent("XUILabel") as IXUILabel); + ixuilabel.SetText(xtuple.Item2); + bool flag3 = i == 0; + if (flag3) + { + ixuicheckBox.ForceSetFlag(true); + this.OnTabTooggleClicked(ixuicheckBox); + } + else + { + ixuicheckBox.ForceSetFlag(false); + } + } + } + this.UpdateTabRedDot(); + } + } + + private void FillContent() + { + this.RefreshBag(); + this._WheelOfFortune.SetVisible(false); + this.m_doc.NewItems.bCanClear = true; + } + + private void RefreshBag() + { + this.m_bagWindow.ChangeData(new ItemUpdateHandler(this.WrapContentItemUpdated), new GetItemHandler(this.m_doc.GetItem)); + this.m_bagWindow.OnShow(); + this.SetBagNum(); + } + + public void Refresh() + { + this.m_bagWindow.RefreshWindow(); + this.SetBagNum(); + } + + public void UpdateBag() + { + this.itemBtnDic.Clear(); + this.m_bagWindow.UpdateBag(); + this.SetBagNum(); + } + + public void UpdateTabRedDot() + { + bool flag = this.m_tabReddotDic == null; + if (!flag) + { + foreach (KeyValuePair keyValuePair in this.m_tabReddotDic) + { + bool active; + bool flag2 = this.m_doc.m_bagTypeRedDotDic.TryGetValue(keyValuePair.Key, out active); + if (flag2) + { + bool flag3 = keyValuePair.Value != null; + if (flag3) + { + keyValuePair.Value.SetActive(active); + } + } + else + { + bool flag4 = keyValuePair.Value != null; + if (flag4) + { + keyValuePair.Value.SetActive(false); + } + } + } + } + } + + private void SetBagNum() + { + int totalNum = this.m_doc.GetTotalNum(); + XRechargeDocument specificDocument = XDocuments.GetSpecificDocument(XRechargeDocument.uuID); + VIPTable.RowData byVIP = specificDocument.VIPReader.GetByVIP((int)specificDocument.VipLevel); + bool flag = byVIP != null; + if (flag) + { + uint num = byVIP.BagMax; + BagExpandData bagExpandData = XBagDocument.BagDoc.GetBagExpandData(BagType.ItemBag); + bool flag2 = bagExpandData != null; + if (flag2) + { + num += bagExpandData.ExpandNum; + } + bool flag3 = (long)totalNum >= (long)((ulong)num); + if (flag3) + { + this.m_bagNumLab.SetText(string.Format("[ff4366]{0}[-]/{1}", totalNum, num)); + } + else + { + this.m_bagNumLab.SetText(string.Format("{0}[-]/{1}", totalNum, num)); + } + } + } + + private void WrapContentItemUpdated(Transform t, int index) + { + IXUISprite ixuisprite = t.Find("Icon").GetComponent("XUISprite") as IXUISprite; + GameObject gameObject = t.Find("RedPoint").gameObject; + bool flag = this.m_bagWindow.m_XItemList == null || index >= this.m_bagWindow.m_XItemList.Count || index < 0; + if (flag) + { + XSingleton.singleton.DrawItem(t.gameObject, null); + this.newItemMgr.ReturnInstance(ixuisprite); + gameObject.SetActive(false); + t.gameObject.name = XSingleton.singleton.StringCombine("empty", index.ToString()); + } + else + { + t.gameObject.name = XSingleton.singleton.StringCombine("item", this.m_bagWindow.m_XItemList[index].itemID.ToString()); + XItem xitem = this.m_bagWindow.m_XItemList[index]; + XSingleton.singleton.DrawItem(t.gameObject, xitem); + ixuisprite.ID = xitem.uid; + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this._OnItemClicked)); + bool flag2 = this.itemBtnDic.ContainsKey(ixuisprite.ID); + if (flag2) + { + this.itemBtnDic[ixuisprite.ID] = ixuisprite; + } + else + { + this.itemBtnDic.Add(ixuisprite.ID, ixuisprite); + } + bool flag3 = this.m_doc.NewItems.IsNew(ixuisprite.ID); + if (flag3) + { + this.newItemMgr.SetTip(ixuisprite); + } + else + { + this.newItemMgr.ReturnInstance(ixuisprite); + } + bool flag4 = this.m_doc.AvailableItems.IsNew(ixuisprite.ID); + if (flag4) + { + gameObject.SetActive(true); + } + else + { + gameObject.SetActive(false); + } + } + } + + public void AddItem(List items) + { + this.m_bagWindow.UpdateBag(); + } + + public void RemoveItem(List uids) + { + this.UpdateBag(); + foreach (ulong num in uids) + { + bool flag = num == DlgBase.singleton.MainItemUID; + if (flag) + { + DlgBase.singleton.HideToolTip(false); + } + bool flag2 = num == DlgBase.singleton.MainItemUID; + if (flag2) + { + DlgBase.singleton.HideToolTip(true); + } + } + } + + public void ItemNumChanged(XItem item) + { + this.m_bagWindow.UpdateItem(item); + } + + public void UpdateItem(XItem item) + { + EquipList.RowData equipConf = XBagDocument.GetEquipConf(item.itemID); + bool flag = equipConf == null; + if (flag) + { + this.m_bagWindow.UpdateItem(item); + } + bool flag2 = item.uid == DlgBase.singleton.MainItemUID; + if (flag2) + { + DlgBase.singleton.HideToolTip(false); + } + bool flag3 = item.uid == DlgBase.singleton.MainItemUID; + if (flag3) + { + DlgBase.singleton.HideToolTip(true); + } + } + + public void RefreshTips(ulong uid) + { + IXUISprite ixuisprite; + bool flag = this.itemBtnDic.TryGetValue(uid, out ixuisprite); + if (flag) + { + bool flag2 = ixuisprite == null; + if (!flag2) + { + XItem itemByUID = XSingleton.singleton.Doc.XBagDoc.GetItemByUID(ixuisprite.ID); + bool flag3 = itemByUID == null; + if (!flag3) + { + bool flag4 = itemByUID.Type == ItemType.PANDORA; + if (flag4) + { + PandoraHeart.RowData pandoraHeartConf = XBagDocument.GetPandoraHeartConf(itemByUID.itemID, XSingleton.singleton.XPlayerData.BasicTypeID); + int num = 0; + bool flag5 = pandoraHeartConf != null; + if (flag5) + { + num = XBagDocument.BagDoc.ItemBag.GetItemCount((int)pandoraHeartConf.FireID); + } + bool flag6 = num > 2; + if (!flag6) + { + this._OnItemClicked(ixuisprite); + } + } + } + } + } + } + + private void _OnItemClicked(IXUISprite iSp) + { + XItem itemByUID = XSingleton.singleton.Doc.XBagDoc.GetItemByUID(iSp.ID); + bool flag = itemByUID == null; + if (!flag) + { + bool flag2 = this.m_doc.NewItems.RemoveItem(iSp.ID, itemByUID.Type, false); + if (flag2) + { + this.Refresh(); + } + CharacterEquipHandler.OnItemClicked(iSp); + } + } + + public bool OnBagExpandClicked(IXUIButton button) + { + XBagDocument.BagDoc.UseBagExpandTicket(BagType.ItemBag); + return true; + } + + private bool OnTabTooggleClicked(IXUICheckBox cb) + { + bool flag = !cb.bChecked; + bool result; + if (flag) + { + result = false; + } + else + { + this.m_doc.BagType = (uint)cb.ID; + this.FillContent(); + result = true; + } + return result; + } + } +} -- cgit v1.1-26-g67d0