From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/GameMallShopHandler.cs | 287 +++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/GameMallShopHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/GameMallShopHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/GameMallShopHandler.cs b/Client/Assets/Scripts/XMainClient/GameMallShopHandler.cs new file mode 100644 index 00000000..e02a06c6 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/GameMallShopHandler.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using UILib; +using UnityEngine; +using XMainClient.UI; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class GameMallShopHandler : DlgHandlerBase + { + private XGameMallDocument _doc = null; + + public XUIPool m_ShopTypePool = new XUIPool(XSingleton.singleton.m_uiTool); + + private List _ShopGo = new List(); + + protected override void Init() + { + base.Init(); + GameObject gameObject = base.transform.Find("Bg/RechargeFrame/ScrollView/Grid/TplMall").gameObject; + this.m_ShopTypePool.SetupPool(gameObject.transform.parent.gameObject, gameObject, 7u, false); + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + } + + protected override void OnShow() + { + base.OnShow(); + bool flag = this._doc == null; + if (flag) + { + this._doc = XDocuments.GetSpecificDocument(XGameMallDocument.uuID); + } + this.OnInitShops(); + this.RefreshRedPoint(); + } + + public void Refresh() + { + } + + private void OnInitShops() + { + List list = new List(); + List shopSystems = this._doc.ShopSystems; + int index = 2; + for (int i = 0; i < shopSystems.Count; i++) + { + bool flag = shopSystems[i] >= XSysDefine.XSys_LevelElite_Shop1 && shopSystems[i] <= XSysDefine.XSys_LevelElite_Shop4; + if (flag) + { + index = i; + break; + } + } + for (int j = 335; j <= 338; j++) + { + ShopTypeTable.RowData shopTypeData = this._doc.GetShopTypeData((XSysDefine)j); + bool flag2 = shopTypeData != null && XSingleton.singleton.Player.PlayerAttributes.Level >= shopTypeData.ShopLevel; + if (flag2) + { + shopSystems[index] = (XSysDefine)j; + } + } + index = 3; + for (int k = 0; k < shopSystems.Count; k++) + { + bool flag3 = shopSystems[k] >= XSysDefine.XSys_Mall_32A && shopSystems[k] <= XSysDefine.XSys_Mall_60A; + if (flag3) + { + index = k; + break; + } + } + for (int l = 330; l <= 333; l++) + { + ShopTypeTable.RowData shopTypeData2 = this._doc.GetShopTypeData((XSysDefine)l); + bool flag4 = shopTypeData2 != null && XSingleton.singleton.Player.PlayerAttributes.Level >= shopTypeData2.ShopLevel; + if (flag4) + { + shopSystems[index] = (XSysDefine)l; + } + } + for (int m = 0; m < shopSystems.Count; m++) + { + ShopTypeTable.RowData shopTypeData3 = this._doc.GetShopTypeData(shopSystems[m]); + bool flag5 = shopTypeData3 != null; + if (flag5) + { + list.Add(shopTypeData3.ShopName); + } + } + List list2 = new List(); + for (int n = 0; n < list.Count; n++) + { + ShopTypeTable.RowData shopTypeData4 = this._doc.GetShopTypeData(shopSystems[n]); + bool flag6 = shopTypeData4 != null; + if (flag6) + { + bool flag7 = XSingleton.singleton.IsSystemOpened(shopSystems[n]) && XSingleton.singleton.Player.PlayerAttributes.Level >= shopTypeData4.ShopLevel; + if (flag7) + { + list2.Add(n); + } + } + } + for (int num = 0; num < list.Count; num++) + { + ShopTypeTable.RowData shopTypeData5 = this._doc.GetShopTypeData(shopSystems[num]); + bool flag8 = !XSingleton.singleton.IsSystemOpened(shopSystems[num]) || (shopTypeData5 != null && XSingleton.singleton.Player.PlayerAttributes.Level < shopTypeData5.ShopLevel); + if (flag8) + { + list2.Add(num); + } + } + this.m_ShopTypePool.ReturnAll(false); + this._ShopGo.Clear(); + int num2 = 0; + while (num2 < list.Count) + { + int index2 = list2[num2]; + GameObject gameObject = this.m_ShopTypePool.FetchGameObject(false); + gameObject.transform.localPosition = new Vector3(this.m_ShopTypePool.TplPos.x + (float)(num2 % 3 * this.m_ShopTypePool.TplWidth), this.m_ShopTypePool.TplPos.y - (float)(num2 / 3 * this.m_ShopTypePool.TplHeight), this.m_ShopTypePool.TplPos.z); + IXUILabel ixuilabel = gameObject.transform.Find("shopname").GetComponent("XUILabel") as IXUILabel; + IXUITexture ixuitexture = gameObject.transform.Find("Icon").GetComponent("XUITexture") as IXUITexture; + IXUISprite ixuisprite = gameObject.transform.GetComponent("XUISprite") as IXUISprite; + IXUITexture ixuitexture2 = gameObject.transform.Find("Lock").GetComponent("XUITexture") as IXUITexture; + this._ShopGo.Add(gameObject); + ShopTypeTable.RowData shopTypeData6 = this._doc.GetShopTypeData(shopSystems[index2]); + ixuilabel.SetText(list[index2]); + bool flag9 = shopTypeData6 != null && !string.IsNullOrEmpty(shopTypeData6.ShopIcon); + if (flag9) + { + ixuitexture.SetTexturePath("atlas/UI/GameSystem/Activity/" + shopTypeData6.ShopIcon); + } + ixuisprite.ID = (ulong)((long)shopSystems[index2]); + bool flag10 = false; + int hour = DateTime.Now.Hour; + int minute = DateTime.Now.Minute; + bool flag11 = shopTypeData6 != null; + if (flag11) + { + flag10 = this.IsShopOpen(shopSystems[index2]); + } + bool flag12 = !XSingleton.singleton.IsSystemOpened(shopSystems[index2]) || XSingleton.singleton.Player.PlayerAttributes.Level < shopTypeData6.ShopLevel; + if (flag12) + { + ixuitexture.SetEnabled(false); + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.CannotOpenShop)); + ixuitexture2.SetVisible(true); + } + else + { + bool flag13 = shopSystems[index2] == XSysDefine.XSys_Mall_Guild; + if (flag13) + { + XGuildDocument specificDocument = XDocuments.GetSpecificDocument(XGuildDocument.uuID); + bool flag14 = !specificDocument.bInGuild; + if (flag14) + { + ixuitexture2.SetVisible(true); + ixuitexture.SetEnabled(false); + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnOpenGuild)); + goto IL_5C8; + } + } + bool flag15 = !flag10; + if (flag15) + { + ixuitexture2.SetVisible(true); + ixuitexture.SetEnabled(false); + } + else + { + ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnOpenShop)); + ixuitexture2.SetVisible(false); + ixuisprite.SetEnabled(true); + ixuitexture.SetEnabled(true); + } + } + IL_5C8: + num2++; + continue; + goto IL_5C8; + } + } + + protected override void OnHide() + { + base.OnHide(); + XSingleton.singleton.DestroyTextureInActivePool(this.m_ShopTypePool, "Icon"); + } + + public override void RefreshData() + { + base.RefreshData(); + } + + public bool IsShopOpen(XSysDefine sys) + { + int hour = DateTime.Now.Hour; + int minute = DateTime.Now.Minute; + bool result = false; + bool flag = this._doc == null; + if (flag) + { + this._doc = XDocuments.GetSpecificDocument(XGameMallDocument.uuID); + } + ShopTypeTable.RowData shopTypeData = this._doc.GetShopTypeData(sys); + bool flag2 = shopTypeData != null; + if (flag2) + { + bool flag3 = shopTypeData.ShopOpen.Count == 0; + if (flag3) + { + result = true; + } + for (int i = 0; i < shopTypeData.ShopOpen.Count; i++) + { + int num = hour * 100 + minute; + bool flag4 = (long)num >= (long)((ulong)shopTypeData.ShopOpen[i, 0]) && (long)num <= (long)((ulong)shopTypeData.ShopOpen[i, 1]); + if (flag4) + { + result = true; + } + } + } + return result; + } + + public void OnOpenShop(IXUISprite sp) + { + bool flag = this._doc.shopRedPoint.Contains((XSysDefine)sp.ID); + if (flag) + { + this._doc.RefreshShopRedPoint((XSysDefine)sp.ID, false); + } + XSysDefine sys = (XSysDefine)sp.ID; + DlgBase.singleton.m_OpenFromGeneral = true; + DlgBase.singleton.ShowShopSystem(sys, 0UL); + } + + public void CannotOpenShop(IXUISprite sp) + { + XSysDefine xsysDefine = (XSysDefine)sp.ID; + int sysOpenLevel = XSingleton.singleton.GetSysOpenLevel((int)sp.ID); + XSingleton.singleton.ShowSystemTip(string.Format(XStringDefineProxy.GetString("SHOP_OPEN_LEVEL"), sysOpenLevel), "fece00"); + } + + public void OnOpenGuild(IXUISprite sp) + { + XSingleton.singleton.OpenSystem(XSysDefine.XSys_Guild, 0UL); + } + + public void RefreshRedPoint() + { + bool flag = false; + for (int i = 0; i < this._ShopGo.Count; i++) + { + IXUISprite ixuisprite = this._ShopGo[i].transform.GetComponent("XUISprite") as IXUISprite; + IXUISprite ixuisprite2 = this._ShopGo[i].transform.Find("RedPoint").GetComponent("XUISprite") as IXUISprite; + bool flag2 = this._doc.shopRedPoint.Contains((XSysDefine)ixuisprite.ID); + if (flag2) + { + flag = true; + ixuisprite2.SetVisible(true); + } + else + { + ixuisprite2.SetVisible(false); + } + } + bool flag3 = !flag; + if (flag3) + { + this._doc.shopRedPoint.Clear(); + } + XSingleton.singleton.SetSysRedPointState(XSysDefine.XSys_Mall, flag); + XSingleton.singleton.RecalculateRedPointState(XSysDefine.XSys_Mall, true); + } + } +} -- cgit v1.1-26-g67d0