using System; using System.Collections.Generic; using UILib; using UnityEngine; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient.UI { internal class JadeComposeFrameHandler : DlgHandlerBase { protected override string FileName { get { return "ItemNew/JadeComposeFrame"; } } private XJadeDocument m_doc = null; private IXUIButton m_closedBtn; private IXUIButton m_composeBtn; private IXUIButton m_reduceBtn; private IXUIButton m_addBtn; private IXUILabel m_costLab; private IXUILabel m_costMallLab; private IXUILabel m_lackJadTipsLab; private GameObject m_sourceJade; private GameObject m_targetJade; private GameObject m_hadShopPos; private GameObject m_noShopPos; private GameObject m_shopPos; private Transform m_effectParentTra; private XUIPool m_jadeTplPool1 = new XUIPool(XSingleton.singleton.m_uiTool); private XUIPool m_jadeTplPool2 = new XUIPool(XSingleton.singleton.m_uiTool); private XFx m_fx = null; private int m_type = 0; private ulong m_jadeUid = 0UL; private uint m_itemId = 0u; private uint m_curLevel = 0u; private uint m_addLevel = 0u; private ulong m_needGold = 0UL; private uint m_needMall = 0u; private float m_delayTime = 0.3f; private uint m_token = 0u; private bool m_isNeedPlayEffect = false; private bool m_effectIsEnd = true; private float m_coolTime = 0.5f; private float m_fLastClickBtnTime = 0f; protected override void Init() { base.Init(); this.m_doc = XDocuments.GetSpecificDocument(XJadeDocument.uuID); this.m_closedBtn = (base.PanelObject.transform.Find("ComposeMenu/Close").GetComponent("XUIButton") as IXUIButton); this.m_composeBtn = (base.PanelObject.transform.Find("ComposeMenu/BtnCompose").GetComponent("XUIButton") as IXUIButton); this.m_reduceBtn = (base.PanelObject.transform.Find("ComposeMenu/minus1").GetComponent("XUIButton") as IXUIButton); this.m_addBtn = (base.PanelObject.transform.Find("ComposeMenu/add1").GetComponent("XUIButton") as IXUIButton); this.m_costLab = (base.PanelObject.transform.Find("ComposeMenu/Cost").GetComponent("XUILabel") as IXUILabel); this.m_costMallLab = (base.PanelObject.transform.Find("ComposeMenu/CostMall").GetComponent("XUILabel") as IXUILabel); this.m_lackJadTipsLab = (base.PanelObject.transform.Find("ComposeMenu/CostJade/Tip").GetComponent("XUILabel") as IXUILabel); this.m_sourceJade = base.PanelObject.transform.Find("ComposeMenu/SourceJade/JadeTpl").gameObject; this.m_targetJade = base.PanelObject.transform.Find("ComposeMenu/TargetJade/JadeTpl").gameObject; this.m_effectParentTra = base.PanelObject.transform.Find("ComposeMenu/Effect"); Transform transform = base.PanelObject.transform.Find("ComposeMenu/CostJade"); this.m_hadShopPos = transform.Find("Pos1/Panel").gameObject; this.m_noShopPos = transform.Find("Pos2/Panel").gameObject; this.m_shopPos = transform.Find("Shop").gameObject; this.m_jadeTplPool1.SetupPool(transform.gameObject, transform.Find("Pos1/Panel/JadeTpl1").gameObject, 1u, false); this.m_jadeTplPool2.SetupPool(transform.gameObject, transform.Find("Pos2/Panel/JadeTpl2").gameObject, 1u, false); } public override void RegisterEvent() { base.RegisterEvent(); this.m_closedBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickClosed)); this.m_composeBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickComposed)); this.m_reduceBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickReduceBtn)); this.m_addBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickAddBtn)); } protected override void OnShow() { base.OnShow(); this.m_effectIsEnd = true; this.m_isNeedPlayEffect = false; this.FillContent(); } protected override void OnHide() { this.m_jadeTplPool1.ReturnAll(true); this.m_jadeTplPool2.ReturnAll(true); XSingleton.singleton.KillTimer(this.m_token); bool flag = this.m_fx != null; if (flag) { XSingleton.singleton.DestroyFx(this.m_fx, true); this.m_fx = null; } this.m_effectIsEnd = true; base.OnHide(); } public override void OnUnload() { base.OnUnload(); this.m_effectIsEnd = true; bool flag = this.m_fx != null; if (flag) { XSingleton.singleton.DestroyFx(this.m_fx, true); this.m_fx = null; } } public override void RefreshData() { base.RefreshData(); } public override void StackRefresh() { base.StackRefresh(); } public void ShowUi(int type, uint sourceItemId, uint curJadeLevel, ulong uid = 0UL) { this.m_type = type; this.m_itemId = sourceItemId; this.m_curLevel = curJadeLevel; this.m_jadeUid = uid; this.m_addLevel = 1u; this.m_isNeedPlayEffect = true; bool flag = base.IsVisible(); if (flag) { this.FillContent(); } else { base.SetVisible(true); } } private void FillContent() { bool isNeedPlayEffect = this.m_isNeedPlayEffect; if (isNeedPlayEffect) { this.PlayEffect(); this.m_isNeedPlayEffect = false; } else { XSingleton.singleton.jadeItemDrawer.DrawItem(this.m_sourceJade, (int)this.m_itemId, 1, false); IXUISprite ixuisprite = this.m_sourceJade.transform.Find("Icon/Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = (ulong)this.m_itemId; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSelectedItemClicked)); this.FillChangedItem(); } } private void FillChangedItem() { bool flag = XSingleton.singleton.XPlayerData == null; if (!flag) { int num = this.m_doc.JadeLevelToMosaicLevel(this.m_curLevel + this.m_addLevel); bool flag2 = num == -1 || (long)num > (long)((ulong)XSingleton.singleton.XPlayerData.Level); if (flag2) { this.m_addLevel = 0u; } uint targetItemId = this.m_doc.GetTargetItemId(this.m_itemId, this.m_addLevel); this.m_doc.TargetItemId = targetItemId; bool flag3 = targetItemId == 0u; if (!flag3) { XSingleton.singleton.jadeItemDrawer.DrawItem(this.m_targetJade, (int)targetItemId, 1, false); IXUISprite ixuisprite = this.m_targetJade.transform.Find("Icon/Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = (ulong)targetItemId; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSelectedItemClicked)); List> list; XTuple xtuple; bool needItems = this.m_doc.GetNeedItems(targetItemId, this.m_itemId, this.m_type, out list, out xtuple, out this.m_needGold, out this.m_needMall); ulong virtualItemCount = XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.GOLD); bool flag4 = this.m_needGold > virtualItemCount; if (flag4) { this.m_costLab.SetText(string.Format("[ff0000]{0}[-]", this.m_needGold)); } else { this.m_costLab.SetText(this.m_needGold.ToString()); } this.m_jadeTplPool1.ReturnAll(true); this.m_jadeTplPool2.ReturnAll(true); bool flag5 = needItems; GameObject gameObject2; if (flag5) { this.m_costMallLab.gameObject.SetActive(true); this.m_lackJadTipsLab.gameObject.SetActive(true); virtualItemCount = XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.DRAGON_COIN); bool flag6 = (ulong)this.m_needMall > virtualItemCount; if (flag6) { this.m_costMallLab.SetText(string.Format("[ff0000]{0}[-]", this.m_needMall)); } else { this.m_costMallLab.SetText(this.m_needMall.ToString()); } this.m_lackJadTipsLab.SetText(string.Format(XSingleton.singleton.GetString("NeedBuyOtherJade"), xtuple.Item2)); this.m_shopPos.SetActive(true); GameObject gameObject = this.m_shopPos.transform.Find("JadeTpl").gameObject; XSingleton.singleton.jadeItemDrawer.DrawItem(gameObject, (int)xtuple.Item1, (int)xtuple.Item2, false); ixuisprite = (gameObject.transform.Find("Icon/Icon").GetComponent("XUISprite") as IXUISprite); ixuisprite.ID = (ulong)xtuple.Item1; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSelectedItemClicked)); this.m_noShopPos.transform.parent.gameObject.SetActive(false); this.m_hadShopPos.transform.parent.gameObject.SetActive(true); gameObject2 = this.m_hadShopPos; for (int i = 0; i < list.Count; i++) { gameObject = this.m_jadeTplPool1.FetchGameObject(false); gameObject.transform.parent = gameObject2.transform; gameObject.transform.localScale = Vector3.one; gameObject.transform.localPosition = new Vector3((float)(i * this.m_jadeTplPool1.TplWidth), 0f, 0f); XSingleton.singleton.jadeItemDrawer.DrawItem(gameObject, (int)list[i].Item1, (int)list[i].Item2, false); ixuisprite = (gameObject.transform.Find("Icon/Icon").GetComponent("XUISprite") as IXUISprite); ixuisprite.ID = (ulong)list[i].Item1; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSelectedItemClicked)); } } else { this.m_shopPos.SetActive(false); this.m_costMallLab.gameObject.SetActive(false); this.m_lackJadTipsLab.gameObject.SetActive(false); this.m_hadShopPos.transform.parent.gameObject.SetActive(false); this.m_noShopPos.transform.parent.gameObject.SetActive(true); gameObject2 = this.m_noShopPos; for (int j = 0; j < list.Count; j++) { GameObject gameObject = this.m_jadeTplPool2.FetchGameObject(false); gameObject.transform.parent = gameObject2.transform; gameObject.transform.localScale = Vector3.one; gameObject.transform.localPosition = new Vector3((float)(j * this.m_jadeTplPool2.TplWidth), 0f, 0f); XSingleton.singleton.jadeItemDrawer.DrawItem(gameObject, (int)list[j].Item1, (int)list[j].Item2, false); ixuisprite = (gameObject.transform.Find("Icon/Icon").GetComponent("XUISprite") as IXUISprite); ixuisprite.ID = (ulong)list[j].Item1; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnSelectedItemClicked)); } } gameObject2.SetActive(false); gameObject2.SetActive(true); } } } private void PlayEffect() { this.m_effectIsEnd = false; bool flag = this.m_fx == null; if (flag) { this.m_fx = XSingleton.singleton.CreateUIFx("Effects/FX_Particle/UIfx/UI_lyqh_02", this.m_effectParentTra, false); } else { this.m_fx.Play(); } XSingleton.singleton.KillTimer(this.m_token); this.m_token = XSingleton.singleton.SetTimer(this.m_delayTime, new XTimerMgr.ElapsedEventHandler(this.DelayFill), null); } private void DelayFill(object o = null) { XSingleton.singleton.jadeItemDrawer.DrawItem(this.m_sourceJade, (int)this.m_itemId, 1, false); this.FillChangedItem(); this.m_effectIsEnd = true; } private bool OnClickClosed(IXUIButton btn) { base.SetVisible(false); return true; } private bool OnClickComposed(IXUIButton btn) { bool flag = !this.m_effectIsEnd; bool result; if (flag) { result = false; } else { bool flag2 = this.SetButtonCool(this.m_coolTime); if (flag2) { result = false; } else { bool flag3 = this.m_addLevel == 0u; if (flag3) { XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("JadeHadCurMax"), "fece00"); result = false; } else { ulong virtualItemCount = XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.GOLD); bool flag4 = virtualItemCount < this.m_needGold; if (flag4) { XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("ERR_LACKCOIN"), "fece00"); result = false; } else { virtualItemCount = XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.DRAGON_COIN); bool flag5 = virtualItemCount < (ulong)this.m_needMall; if (flag5) { DlgBase.singleton.ReqQuickCommonPurchase(ItemEnum.DRAGON_COIN); XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("ERR_AUCT_DRAGONCOINLESS"), "fece00"); result = false; } else { bool flag6 = this.m_needMall > 0u; if (flag6) { string message = string.Format(XSingleton.singleton.ReplaceReturn(XSingleton.singleton.GetString("JadeComposeTips")), this.m_needMall); XSingleton.singleton.ShowModalDialog(message, new ButtonClickEventHandler(this.DoOK)); } else { bool flag7 = this.m_type == -1; if (flag7) { this.m_doc.ReqComposeJade(this.m_jadeUid, this.m_addLevel); } else { this.m_doc.ReqUpdateJade((uint)this.m_type, this.m_addLevel); } } result = true; } } } } } return result; } private bool DoOK(IXUIButton btn) { XSingleton.singleton.CloseModalDlg(); bool flag = this.m_type == -1; if (flag) { this.m_doc.ReqComposeJade(this.m_jadeUid, this.m_addLevel); } else { this.m_doc.ReqUpdateJade((uint)this.m_type, this.m_addLevel); } return true; } private bool OnClickReduceBtn(IXUIButton btn) { bool flag = this.m_addLevel <= 1u; bool result; if (flag) { XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("JadeHadLeast"), "fece00"); result = false; } else { this.m_addLevel -= 1u; this.FillChangedItem(); result = true; } return result; } private bool OnClickAddBtn(IXUIButton btn) { bool flag = XSingleton.singleton.XPlayerData == null; bool result; if (flag) { result = false; } else { int num = this.m_doc.JadeLevelToMosaicLevel(this.m_curLevel + this.m_addLevel + 1u); bool flag2 = num == -1 || (long)num > (long)((ulong)XSingleton.singleton.XPlayerData.Level); if (flag2) { XSingleton.singleton.ShowSystemTip(XSingleton.singleton.GetString("JadeHadCurMax"), "fece00"); result = false; } else { this.m_addLevel += 1u; this.FillChangedItem(); result = true; } } return result; } private void OnSelectedItemClicked(IXUISprite iSp) { ulong id = iSp.ID; XItem xitem = XSingleton.singleton.Doc.XBagDoc.GetItemByUID(id); bool flag = xitem == null; if (flag) { xitem = XBagDocument.MakeXItem((int)id, false); } XSingleton.singleton.ShowTooltipDialog(xitem, null, iSp, false, 0u); } private bool SetButtonCool(float time) { float num = Time.realtimeSinceStartup - this.m_fLastClickBtnTime; bool flag = num < time; bool result; if (flag) { result = true; } else { this.m_fLastClickBtnTime = Time.realtimeSinceStartup; result = false; } return result; } } }