diff options
| author | chai <chaifix@163.com> | 2021-01-25 14:28:30 +0800 | 
|---|---|---|
| committer | chai <chaifix@163.com> | 2021-01-25 14:28:30 +0800 | 
| commit | 6eb915c129fc90c6f4c82ae097dd6ffad5239efc (patch) | |
| tree | 7dd2be50edf41f36b60fac84696e731c13afe617 /Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs | |
+scripts
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs')
| -rw-r--r-- | Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs | 472 | 
1 files changed, 472 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs b/Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs new file mode 100644 index 00000000..71b53863 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/XWelfareYyMallHandler.cs @@ -0,0 +1,472 @@ +using System;
 +using System.Collections.Generic;
 +using UILib;
 +using UnityEngine;
 +using XUtliPoolLib;
 +
 +namespace XMainClient.UI
 +{
 +	public class XWelfareYyMallHandler : DlgHandlerBase
 +	{
 +		protected override string FileName
 +		{
 +			get
 +			{
 +				return "GameSystem/Welfare/YyMallHandler";
 +			}
 +		}
 +
 +		private const int colNum = 5;
 +
 +		private IXUIButton _refreshBtn;
 +
 +		private IXUIButton _detailBtn;
 +
 +		private IXUIScrollView _scrollView;
 +
 +		private IXUILabel _freeNumLabel;
 +
 +		private IXUILabel _privilegeFreeLabel;
 +
 +		private IXUILabel _dragonCoinLabel;
 +
 +		private IXUISprite _itemSprite;
 +
 +		private Transform _noneTimesTrans;
 +
 +		protected XUIPool _shopItemPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
 +
 +		private XFx _refreshTaskEffect;
 +
 +		private Transform _effectPanel;
 +
 +		private IXUISprite _extraRefresh;
 +
 +		private IXUISprite _courtPrivilege;
 +
 +		private XYYMallCategoryHandler _XYYMallCategoryHandler;
 +
 +		protected override void Init()
 +		{
 +			base.Init();
 +			this.InitProperties();
 +		}
 +
 +		protected override void OnShow()
 +		{
 +			base.OnShow();
 +			XWelfareDocument.Doc.RefreshYYMallRedPoint();
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			specificDocument.ReqGoodsList(XSysDefine.XSys_Welfare_YyMall);
 +			bool flag = this._refreshTaskEffect != null;
 +			if (flag)
 +			{
 +				this._refreshTaskEffect.SetActive(false);
 +			}
 +		}
 +
 +		public override void RegisterEvent()
 +		{
 +			base.RegisterEvent();
 +		}
 +
 +		public override void RefreshData()
 +		{
 +			base.RefreshData();
 +			this.RefreshScorllViewContent();
 +			this.RefreshBtnState();
 +			this.RefreshPrivilegeCount();
 +		}
 +
 +		public override void OnUnload()
 +		{
 +			bool flag = this._refreshTaskEffect != null;
 +			if (flag)
 +			{
 +				XSingleton<XFxMgr>.singleton.DestroyFx(this._refreshTaskEffect, true);
 +			}
 +			DlgHandlerBase.EnsureUnload<XYYMallCategoryHandler>(ref this._XYYMallCategoryHandler);
 +			base.OnUnload();
 +		}
 +
 +		public void PlayRefreshEffect()
 +		{
 +			bool flag = this._refreshTaskEffect != null;
 +			if (flag)
 +			{
 +				this._refreshTaskEffect.SetActive(true);
 +				this._refreshTaskEffect.Play(this._effectPanel, Vector3.zero, Vector3.one, 1f, true, false);
 +			}
 +		}
 +
 +		private void RefreshPrivilegeCount()
 +		{
 +			int privilegeFreeRefreshCount = XWelfareDocument.Doc.GetPrivilegeFreeRefreshCount(MemberPrivilege.KingdomPrivilege_Adventurer);
 +			int num = XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Adventurer) ? Math.Max(0, privilegeFreeRefreshCount - XWelfareDocument.Doc.PayMemberPrivilege.usedRefreshShopCount) : privilegeFreeRefreshCount;
 +			this._privilegeFreeLabel.SetText(num + "/" + privilegeFreeRefreshCount);
 +			this._courtPrivilege.SetGrey(XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Court));
 +			this._extraRefresh.SetGrey(XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Adventurer));
 +		}
 +
 +		private void RefreshBtnState()
 +		{
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			ShopTypeTable.RowData shopTypeData = specificDocument.GetShopTypeData(XSysDefine.XSys_Welfare_YyMall);
 +			uint rereshCount = specificDocument.RereshCount;
 +			this._refreshBtn.SetEnable(true, false);
 +			bool flag = shopTypeData != null;
 +			if (flag)
 +			{
 +				SeqRef<uint> refreshCount = shopTypeData.RefreshCount;
 +				SeqListRef<uint> refreshCost = shopTypeData.RefreshCost;
 +				bool flag2 = rereshCount >= refreshCount[0] + refreshCount[1];
 +				if (flag2)
 +				{
 +					this._freeNumLabel.gameObject.SetActive(false);
 +					this._dragonCoinLabel.gameObject.SetActive(false);
 +					this._noneTimesTrans.gameObject.SetActive(true);
 +					this._refreshBtn.SetEnable(false, false);
 +				}
 +				else
 +				{
 +					bool flag3 = rereshCount >= refreshCount[0];
 +					if (flag3)
 +					{
 +						this._freeNumLabel.gameObject.SetActive(false);
 +						this._dragonCoinLabel.gameObject.SetActive(true);
 +						this._noneTimesTrans.gameObject.SetActive(false);
 +						int index = (int)Mathf.Min(new float[]
 +						{
 +							rereshCount - refreshCount[0],
 +							refreshCount[1] - 1u,
 +							(float)(refreshCost.Count - 1)
 +						});
 +						int itemID = (int)refreshCost[index, 0];
 +						ItemList.RowData itemConf = XBagDocument.GetItemConf(itemID);
 +						bool flag4 = itemConf != null;
 +						if (flag4)
 +						{
 +							this._itemSprite.SetSprite(itemConf.ItemIcon1[0]);
 +						}
 +						this._dragonCoinLabel.SetText(refreshCost[index, 1].ToString());
 +					}
 +					else
 +					{
 +						this._freeNumLabel.gameObject.SetActive(true);
 +						this._dragonCoinLabel.gameObject.SetActive(false);
 +						this._noneTimesTrans.gameObject.SetActive(false);
 +						this._freeNumLabel.SetText(refreshCount[0] - rereshCount + "/" + refreshCount[0]);
 +					}
 +				}
 +			}
 +		}
 +
 +		private void RefreshScorllViewContent()
 +		{
 +			this._shopItemPool.ReturnAll(false);
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			List<XNormalShopGoods> goodsList = specificDocument.GoodsList;
 +			for (int i = 0; i < goodsList.Count; i++)
 +			{
 +				XNormalShopGoods xnormalShopGoods = goodsList[i];
 +				ShopTable.RowData dataById = XNormalShopDocument.GetDataById((uint)xnormalShopGoods.item.uid);
 +				bool flag = dataById != null;
 +				if (flag)
 +				{
 +					float num = 0f;
 +					GameObject gameObject = this._shopItemPool.FetchGameObject(false);
 +					IXUISprite ixuisprite = gameObject.transform.Find("UnCompleted").GetComponent("XUISprite") as IXUISprite;
 +					ixuisprite.gameObject.SetActive(false);
 +					bool flag2 = i == 4 || i == 9;
 +					if (flag2)
 +					{
 +						num = 15f;
 +						bool flag3 = !XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Court);
 +						if (flag3)
 +						{
 +							ixuisprite.gameObject.SetActive(true);
 +							ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnOpenCourtPriviege));
 +						}
 +					}
 +					gameObject.transform.localPosition = this._shopItemPool.TplPos + new Vector3((float)(i % 5 * this._shopItemPool.TplWidth) + num, (float)(-(float)i / 5 * this._shopItemPool.TplHeight), 0f);
 +					XSingleton<XItemDrawerMgr>.singleton.normalItemDrawer.DrawItem(gameObject.transform.Find("Item").gameObject, xnormalShopGoods.item.itemID, (int)dataById.ItemOverlap, false);
 +					IXUISprite ixuisprite2 = gameObject.transform.Find("Item/Icon").GetComponent("XUISprite") as IXUISprite;
 +					ixuisprite2.ID = (ulong)((long)xnormalShopGoods.item.itemID);
 +					ixuisprite2.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnClickItemIcon));
 +					IXUIButton ixuibutton = gameObject.transform.Find("BtnBuy").GetComponent("XUIButton") as IXUIButton;
 +					ixuibutton.ID = (ulong)((long)i);
 +					ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnBuyShopItem));
 +					IXUISprite ixuisprite3 = gameObject.transform.Find("BtnBuy/MoneyCost/Icon").GetComponent("XUISprite") as IXUISprite;
 +					string itemSmallIcon = XBagDocument.GetItemSmallIcon(xnormalShopGoods.priceType, 0u);
 +					ixuisprite3.SetSprite(itemSmallIcon);
 +					Transform transform = gameObject.transform.Find("buyed2");
 +					transform.gameObject.SetActive(dataById.IsPrecious);
 +					GameObject gameObject2 = gameObject.transform.Find("discount").gameObject;
 +					gameObject2.SetActive(dataById.Benefit[1] > 0u && dataById.Benefit[1] != 100u);
 +					IXUILabel ixuilabel = gameObject.transform.Find("discount/t").GetComponent("XUILabel") as IXUILabel;
 +					float num2 = dataById.Benefit[1] / 10f;
 +					ixuilabel.SetText(num2.ToString());
 +					IXUILabel ixuilabel2 = gameObject.transform.Find("BtnBuy/MoneyCost").GetComponent("XUILabel") as IXUILabel;
 +					ixuilabel2.SetText(Mathf.FloorToInt((float)xnormalShopGoods.priceValue * num2 / 10f).ToString());
 +					GameObject gameObject3 = gameObject.transform.Find("buyed").gameObject;
 +					uint dailyCountCondition = (uint)dataById.DailyCountCondition;
 +					int weekCountCondition = (int)dataById.WeekCountCondition;
 +					int num3 = 0;
 +					bool flag4 = dataById.CountCondition > 0u;
 +					if (flag4)
 +					{
 +						num3 = xnormalShopGoods.totalSoldNum;
 +					}
 +					else
 +					{
 +						bool flag5 = dailyCountCondition > 0u;
 +						if (flag5)
 +						{
 +							num3 = xnormalShopGoods.soldNum;
 +						}
 +						else
 +						{
 +							bool flag6 = weekCountCondition != 0;
 +							if (flag6)
 +							{
 +								num3 = (int)xnormalShopGoods.weeklyBuyCount;
 +							}
 +						}
 +					}
 +					int countCondition = (int)dataById.CountCondition;
 +					bool flag7 = dailyCountCondition == 0u && countCondition == 0 && weekCountCondition == 0;
 +					if (flag7)
 +					{
 +						ixuibutton.SetEnable(true, false);
 +					}
 +					else
 +					{
 +						bool flag8 = countCondition != 0;
 +						if (flag8)
 +						{
 +							bool flag9 = num3 >= countCondition;
 +							if (flag9)
 +							{
 +								ixuibutton.SetEnable(false, false);
 +								gameObject3.SetActive(true);
 +							}
 +							else
 +							{
 +								ixuibutton.SetEnable(true, false);
 +								gameObject3.SetActive(false);
 +							}
 +						}
 +						else
 +						{
 +							bool flag10 = dailyCountCondition != 0u && (long)num3 >= (long)((ulong)dailyCountCondition);
 +							if (flag10)
 +							{
 +								ixuibutton.SetEnable(false, false);
 +								gameObject3.SetActive(true);
 +							}
 +							else
 +							{
 +								bool flag11 = weekCountCondition != 0 && num3 >= weekCountCondition;
 +								if (flag11)
 +								{
 +									ixuibutton.SetEnable(false, false);
 +									gameObject3.SetActive(false);
 +								}
 +								else
 +								{
 +									ixuibutton.SetEnable(true, false);
 +									gameObject3.SetActive(false);
 +								}
 +							}
 +						}
 +					}
 +				}
 +			}
 +			this._scrollView.ResetPosition();
 +		}
 +
 +		private void OnOpenAdventurerPriviege(IXUISprite uiSprite)
 +		{
 +			bool flag = !XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Adventurer);
 +			if (flag)
 +			{
 +				XSingleton<UiUtility>.singleton.ShowModalDialog(XStringDefineProxy.GetString("KingdomPrivilege_Adventurer2Unlock"), XStringDefineProxy.GetString("COMMON_OK"), XStringDefineProxy.GetString("COMMON_CANCEL"), new ButtonClickEventHandler(this.OpenAdventurePriviege));
 +			}
 +		}
 +
 +		private bool OpenAdventurePriviege(IXUIButton button)
 +		{
 +			XSingleton<UiUtility>.singleton.CloseModalDlg();
 +			XSingleton<XGameSysMgr>.singleton.OpenSystem(XSysDefine.XSys_Welfare_KingdomPrivilege_Adventurer, 0UL);
 +			return true;
 +		}
 +
 +		private void OnOpenCourtPriviege(IXUISprite uiSprite)
 +		{
 +			bool flag = !XWelfareDocument.Doc.IsOwnMemberPrivilege(MemberPrivilege.KingdomPrivilege_Court);
 +			if (flag)
 +			{
 +				XSingleton<UiUtility>.singleton.ShowModalDialog(XStringDefineProxy.GetString("KingdomPrivilege_Court2Unlock"), XStringDefineProxy.GetString("COMMON_OK"), XStringDefineProxy.GetString("COMMON_CANCEL"), new ButtonClickEventHandler(this.OpenCourtPriviege));
 +			}
 +		}
 +
 +		private bool OpenCourtPriviege(IXUIButton button)
 +		{
 +			XSingleton<UiUtility>.singleton.CloseModalDlg();
 +			XSingleton<XGameSysMgr>.singleton.OpenSystem(XSysDefine.XSys_Welfare_KingdomPrivilege_Court, 0UL);
 +			return true;
 +		}
 +
 +		private void OnClickItemIcon(IXUISprite spr)
 +		{
 +			bool flag = spr.ID > 0UL;
 +			if (flag)
 +			{
 +				XItem mainItem = XBagDocument.MakeXItem((int)spr.ID, false);
 +				XSingleton<UiUtility>.singleton.ShowTooltipDialogWithSearchingCompare(mainItem, spr, false, 0u);
 +			}
 +		}
 +
 +		private bool OnBuyShopItem(IXUIButton button)
 +		{
 +			int index = (int)button.ID;
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			specificDocument.ReqBuy(index);
 +			return true;
 +		}
 +
 +		private void InitProperties()
 +		{
 +			Transform transform = base.transform.Find("ShopItemList");
 +			GameObject gameObject = transform.Find("ShopItemTpl").gameObject;
 +			this._shopItemPool.SetupPool(transform.gameObject, gameObject, 8u, false);
 +			this._scrollView = (transform.GetComponent("XUIScrollView") as IXUIScrollView);
 +			this._refreshBtn = (base.transform.Find("BtnRefresh").GetComponent("XUIButton") as IXUIButton);
 +			this._refreshBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnRefreshShopList));
 +			this._detailBtn = (base.transform.Find("Detail").GetComponent("XUIButton") as IXUIButton);
 +			this._detailBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickOnDetail));
 +			this._freeNumLabel = (base.transform.Find("BtnRefresh/FreeNum").GetComponent("XUILabel") as IXUILabel);
 +			this._privilegeFreeLabel = (base.transform.Find("ExtraRefresh/Count").GetComponent("XUILabel") as IXUILabel);
 +			this._dragonCoinLabel = (base.transform.Find("BtnRefresh/DragonCoinNum").GetComponent("XUILabel") as IXUILabel);
 +			this._noneTimesTrans = base.transform.Find("BtnRefresh/NoneTimes");
 +			this._itemSprite = (base.transform.Find("BtnRefresh/DragonCoinNum/p").GetComponent("XUISprite") as IXUISprite);
 +			this._effectPanel = base.transform.Find("Effect");
 +			this._refreshTaskEffect = XSingleton<XFxMgr>.singleton.CreateFx("Effects/FX_Particle/UIfx/UI_YyMallHandler_Clip01", null, true);
 +			this._refreshTaskEffect.SetActive(false);
 +			this._courtPrivilege = (base.transform.Find("Privilege").GetComponent("XUISprite") as IXUISprite);
 +			this._courtPrivilege.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnOpenCourtPriviege));
 +			this._extraRefresh = (base.transform.Find("ExtraRefresh").GetComponent("XUISprite") as IXUISprite);
 +			this._extraRefresh.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnOpenAdventurerPriviege));
 +			DlgHandlerBase.EnsureCreate<XYYMallCategoryHandler>(ref this._XYYMallCategoryHandler, base.transform, false, this);
 +		}
 +
 +		private bool OnClickOnDetail(IXUIButton button)
 +		{
 +			bool flag = this._XYYMallCategoryHandler != null;
 +			if (flag)
 +			{
 +				this._XYYMallCategoryHandler.SetVisible(true);
 +			}
 +			return true;
 +		}
 +
 +		private bool OnRefreshShopList(IXUIButton button)
 +		{
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			bool flag = specificDocument.CanBuyPreciousShopItem();
 +			if (flag)
 +			{
 +				XSingleton<UiUtility>.singleton.ShowModalDialog(XStringDefineProxy.GetString("YYMallPreciousTip"), XStringDefineProxy.GetString("COMMON_OK"), XStringDefineProxy.GetString("COMMON_CANCEL"), new ButtonClickEventHandler(this.DoRefreshShop));
 +			}
 +			else
 +			{
 +				this.DoRefreshShop(null);
 +			}
 +			return true;
 +		}
 +
 +		private bool DoRefreshShop(IXUIButton button)
 +		{
 +			XSingleton<UiUtility>.singleton.CloseModalDlg();
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			bool flag = !specificDocument.IsMoneyOrItemEnough((int)this.GetMoneyId(), (int)this.GetRefreshCost());
 +			bool result;
 +			if (flag)
 +			{
 +				specificDocument.ProcessItemOrMoneyNotEnough((int)this.GetMoneyId());
 +				result = false;
 +			}
 +			else
 +			{
 +				RpcC2G_QueryShopItem rpcC2G_QueryShopItem = new RpcC2G_QueryShopItem();
 +				rpcC2G_QueryShopItem.oArg.isrefresh = true;
 +				rpcC2G_QueryShopItem.oArg.type = specificDocument.GetShopId(XSysDefine.XSys_Welfare_YyMall);
 +				XSingleton<XClientNetwork>.singleton.Send(rpcC2G_QueryShopItem);
 +				this.PlayRefreshEffect();
 +				result = true;
 +			}
 +			return result;
 +		}
 +
 +		private uint GetRefreshCost()
 +		{
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			ShopTypeTable.RowData shopTypeData = specificDocument.GetShopTypeData(XSysDefine.XSys_Welfare_YyMall);
 +			bool flag = shopTypeData == null;
 +			uint result;
 +			if (flag)
 +			{
 +				XSingleton<XDebug>.singleton.AddErrorLog(string.Format("ShopTypeTable not find this systenId = {0}", XSysDefine.XSys_Welfare_YyMall), null, null, null, null, null);
 +				result = 0u;
 +			}
 +			else
 +			{
 +				uint num = 0u;
 +				uint rereshCount = specificDocument.RereshCount;
 +				SeqRef<uint> refreshCount = shopTypeData.RefreshCount;
 +				SeqListRef<uint> refreshCost = shopTypeData.RefreshCost;
 +				bool flag2 = rereshCount >= refreshCount[0];
 +				if (flag2)
 +				{
 +					int index = (int)Mathf.Min(rereshCount - refreshCount[0], (float)(refreshCost.count - 1));
 +					num = refreshCost[index, 1];
 +				}
 +				result = num;
 +			}
 +			return result;
 +		}
 +
 +		private uint GetMoneyId()
 +		{
 +			XNormalShopDocument specificDocument = XDocuments.GetSpecificDocument<XNormalShopDocument>(XNormalShopDocument.uuID);
 +			ShopTypeTable.RowData shopTypeData = specificDocument.GetShopTypeData(XSysDefine.XSys_Welfare_YyMall);
 +			bool flag = shopTypeData == null;
 +			uint result;
 +			if (flag)
 +			{
 +				XSingleton<XDebug>.singleton.AddErrorLog(string.Format("ShopTypeTable not find this systenId = {0}", XSysDefine.XSys_Welfare_YyMall), null, null, null, null, null);
 +				result = 0u;
 +			}
 +			else
 +			{
 +				uint rereshCount = specificDocument.RereshCount;
 +				uint num = 0u;
 +				SeqRef<uint> refreshCount = shopTypeData.RefreshCount;
 +				SeqListRef<uint> refreshCost = shopTypeData.RefreshCost;
 +				bool flag2 = rereshCount >= refreshCount[0];
 +				if (flag2)
 +				{
 +					int num2 = (int)Mathf.Min(rereshCount - refreshCount[0], refreshCount[1] - 1u);
 +					bool flag3 = num2 >= refreshCost.Count;
 +					if (flag3)
 +					{
 +						num2 = refreshCost.Count - 1;
 +					}
 +					num = refreshCost[num2, 0];
 +				}
 +				result = num;
 +			}
 +			return result;
 +		}
 +	}
 +}
  | 
