using System; using System.Collections.Generic; using KKSG; using UILib; using UnityEngine; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient.UI { internal class ArtifactBagHandler : DlgHandlerBase { protected override string FileName { get { return "ItemNew/ArtifactListPanel"; } } private ArtifactAtlasHandler m_atlasHandler; private ArtifactBagDocument m_doc; private XBagWindow m_bagWindow; private GameObject m_artifactBagPanel; private IXUIButton m_Help; private IXUIButton m_atlasBtn; private IXUILabel m_bagNumLab; public IXUIButton m_expandBagBtn; protected override void Init() { base.Init(); this.m_doc = ArtifactBagDocument.Doc; this.m_artifactBagPanel = base.PanelObject; this.m_bagNumLab = (base.PanelObject.transform.Find("BagNum").GetComponent("XUILabel") as IXUILabel); this.m_Help = (base.PanelObject.transform.Find("Help").GetComponent("XUIButton") as IXUIButton); this.m_atlasBtn = (base.PanelObject.transform.Find("BtnShop").GetComponent("XUIButton") as IXUIButton); this.m_expandBagBtn = (base.PanelObject.transform.Find("add").GetComponent("XUIButton") as IXUIButton); this.m_bagWindow = new XBagWindow(this.m_artifactBagPanel, new ItemUpdateHandler(this.WrapContentItemUpdated), new GetItemHandler(this.m_doc.GetArtifacts)); this.m_bagWindow.Init(); BagExpandItemListTable.RowData expandItemConfByType = XBagDocument.GetExpandItemConfByType((uint)XFastEnumIntEqualityComparer.ToInt(BagType.ArtifactBag)); this.m_expandBagBtn.gameObject.SetActive(expandItemConfByType != null); DlgHandlerBase.EnsureCreate(ref this.m_atlasHandler, base.PanelObject.transform.parent.parent, false, this); } public override void RegisterEvent() { base.RegisterEvent(); this.m_Help.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnHelpClicked)); this.m_atlasBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnAtlasClicked)); this.m_expandBagBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnBagExpandClicked)); } protected override void OnShow() { base.OnShow(); this.m_doc.BagHandler = this; this.RefreshBag(); this.m_doc.NewItems.bCanClear = true; this.RefreshRedPoints(); this.SetBagNum(); } protected override void OnHide() { base.OnHide(); this.m_doc.NewItems.TryClear(); } public override void StackRefresh() { base.StackRefresh(); this.RefreshBag(); this.m_doc.NewItems.bCanClear = true; } public override void OnUnload() { DlgHandlerBase.EnsureUnload(ref this.m_atlasHandler); this.m_doc.BagHandler = null; base.OnUnload(); } private void RefreshBag() { this.m_bagWindow.ChangeData(new ItemUpdateHandler(this.WrapContentItemUpdated), new GetItemHandler(this.m_doc.GetArtifacts)); this.m_bagWindow.OnShow(); this.SetBagNum(); } public void Refresh() { this.m_bagWindow.RefreshWindow(); this.SetBagNum(); } private void WrapContentItemUpdated(Transform t, int index) { 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); t.gameObject.name = XSingleton.singleton.StringCombine("empty", index.ToString()); } else { IXUISprite ixuisprite = t.Find("Icon").GetComponent("XUISprite") as IXUISprite; XSingleton.singleton.DrawItem(t.gameObject, this.m_bagWindow.m_XItemList[index]); ixuisprite.ID = this.m_bagWindow.m_XItemList[index].uid; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnItemClicked)); t.gameObject.name = XSingleton.singleton.StringCombine("artifact", this.m_bagWindow.m_XItemList[index].itemID.ToString()); EquipCompare mix = this.m_doc.IsEquipMorePowerful(ixuisprite.ID); EquipCompare final = ArtifactBagDocument.GetFinal(mix); Transform transform = t.Find("Icon/RedPoint"); bool flag2 = transform != null; if (flag2) { transform.gameObject.SetActive(final == EquipCompare.EC_MORE_POWERFUL); } transform = t.Find("Icon/New"); bool flag3 = transform != null; if (flag3) { transform.gameObject.SetActive(this.m_doc.NewItems.IsNew(ixuisprite.ID)); } transform = t.Find("Icon/TimeBg"); bool flag4 = transform != null; if (flag4) { transform.gameObject.SetActive(false); } } } private void SetBagNum() { int count = this.m_doc.GetArtifacts().Count; XRechargeDocument specificDocument = XDocuments.GetSpecificDocument(XRechargeDocument.uuID); VIPTable.RowData byVIP = specificDocument.VIPReader.GetByVIP((int)specificDocument.VipLevel); bool flag = byVIP != null; if (flag) { uint num = byVIP.ArtifactMax; BagExpandData bagExpandData = XBagDocument.BagDoc.GetBagExpandData(BagType.ArtifactBag); bool flag2 = bagExpandData != null; if (flag2) { num += bagExpandData.ExpandNum; } bool flag3 = (long)count >= (long)((ulong)num); if (flag3) { this.m_bagNumLab.SetText(string.Format("[ff4366]{0}[-]/{1}", count, num)); } else { this.m_bagNumLab.SetText(string.Format("{0}[-]/{1}", count, num)); } } } public void RefreshRedPoints() { } public void LoadEquip(XItem item, int slot) { DlgBase.singleton.HideToolTip(true); bool flag = DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.SetEquipSlot(slot, item); } this.Refresh(); } public void UnloadEquip(int slot) { DlgBase.singleton.HideToolTip(true); bool flag = DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.SetEquipSlot(slot, null); } this.Refresh(); } public void AddItem(List items) { this.m_bagWindow.UpdateBag(); this.SetBagNum(); } public void RemoveItem(List uids) { this.m_bagWindow.UpdateBag(); this.SetBagNum(); foreach (ulong num in uids) { bool flag = num == DlgBase.singleton.MainItemUID; if (flag) { DlgBase.singleton.HideToolTip(false); } } } public void SwapItem(XItem item1, XItem item2, int slot) { DlgBase.singleton.HideToolTip(true); bool flag = DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.SetEquipSlot(slot, item1); } this.m_bagWindow.ReplaceItem(item1, item2); } public void UpdateItem(XItem item) { this.m_bagWindow.UpdateItem(item); DlgBase.singleton._ArtifactFrameHandler.UpdateEquipSlot(item); bool flag = item.uid == DlgBase.singleton.MainItemUID; if (flag) { DlgBase.singleton.HideToolTip(false); } bool flag2 = item.uid == DlgBase.singleton.MainItemUID; if (flag2) { DlgBase.singleton.HideToolTip(true); } } public void ItemNumChanged(XItem item) { this.m_bagWindow.UpdateItem(item); this.SetBagNum(); } public bool OnHelpClicked(IXUIButton button) { bool flag = DlgBase.singleton.IsVisible() && DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.HideEffects(); } DlgBase.singleton.ShowHelp(XSysDefine.XSys_Artifact); return true; } public bool OnAtlasClicked(IXUIButton button) { bool flag = DlgBase.singleton.IsVisible() && DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.HideEffects(); } bool flag2 = this.m_atlasHandler != null; if (flag2) { this.m_atlasHandler.SetVisible(true); } return true; } public bool OnBagExpandClicked(IXUIButton button) { bool flag = DlgBase.singleton.IsVisible() && DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag) { DlgBase.singleton._ArtifactFrameHandler.HideEffects(); } XBagDocument.BagDoc.UseBagExpandTicket(BagType.ArtifactBag); return true; } 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.m_doc.GetArtifacts(); } CharacterEquipHandler.OnItemClicked(iSp); bool flag3 = DlgBase.singleton.IsVisible() && DlgBase.singleton._ArtifactFrameHandler != null && DlgBase.singleton._ArtifactFrameHandler.IsVisible(); if (flag3) { DlgBase.singleton._ArtifactFrameHandler.HideEffects(); } } } } }