From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/UI/XTargetRewardView.cs | 328 +++++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/UI/XTargetRewardView.cs (limited to 'Client/Assets/Scripts/XMainClient/UI/XTargetRewardView.cs') diff --git a/Client/Assets/Scripts/XMainClient/UI/XTargetRewardView.cs b/Client/Assets/Scripts/XMainClient/UI/XTargetRewardView.cs new file mode 100644 index 00000000..e18fc42e --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/XTargetRewardView.cs @@ -0,0 +1,328 @@ +using System; +using UILib; +using UnityEngine; +using XUtliPoolLib; + +namespace XMainClient.UI +{ + internal class XTargetRewardView : DlgHandlerBase + { + private XTargetRewardDocument _doc = null; + + private XTargetRewardPopWindow popWindow = new XTargetRewardPopWindow(); + + private IXUICheckBox[] m_padTabs = new IXUICheckBox[4]; + + private IXUISprite[] m_padPoint = new IXUISprite[4]; + + public TargetRewardType m_targetRewardType; + + public IXUIWrapContent m_WrapContent; + + public IXUIScrollView m_PanelScrollView; + + private IXUIList m_GoalList; + + private int maxAwardNum = 4; + + protected override void Init() + { + base.Init(); + this.popWindow.panelObject = base.PanelObject.transform.Find("Top"); + this.popWindow.closeBtn = (base.PanelObject.transform.Find("Top/Bg/Close").GetComponent("XUIButton") as IXUIButton); + this.popWindow.wrapContent = (base.PanelObject.transform.Find("Top/Bg/detail/WrapContent").GetComponent("XUIWrapContent") as IXUIWrapContent); + this.popWindow.panelScrollView = (base.PanelObject.transform.Find("Top/Bg/detail").GetComponent("XUIScrollView") as IXUIScrollView); + this.popWindow.init(); + this._doc = XDocuments.GetSpecificDocument(XTargetRewardDocument.uuID); + this._doc.InitOpenGoalAward(); + int num = 0; + for (int i = 0; i < this.m_padTabs.Length; i++) + { + this.m_padTabs[i] = (base.PanelObject.transform.Find("padTabs/TabList/TabTpl" + i + "/Bg").GetComponent("XUICheckBox") as IXUICheckBox); + this.m_padPoint[i] = (base.PanelObject.transform.Find("padTabs/TabList/TabTpl" + i + "/Bg/RedPoint").GetComponent("XUISprite") as IXUISprite); + IXUISprite ixuisprite = base.PanelObject.transform.Find("padTabs/TabList/TabTpl" + i).GetComponent("XUISprite") as IXUISprite; + this.m_padPoint[i].gameObject.SetActive(false); + bool flag = this.m_padTabs[i] != null; + if (flag) + { + this.m_padTabs[i].ID = (ulong)i; + this.m_padTabs[i].RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this.OnTabControlStateChange)); + } + bool flag2 = ixuisprite != null; + if (flag2) + { + ixuisprite.gameObject.SetActive(this._doc.m_isGoalOpen[i + 1]); + bool flag3 = this._doc.m_isGoalOpen[i + 1] && num == 0; + if (flag3) + { + num = i; + this.m_padTabs[i].ForceSetFlag(true); + } + else + { + this.m_padTabs[i].ForceSetFlag(false); + } + } + } + this.m_GoalList = (base.PanelObject.transform.Find("padTabs/TabList").GetComponent("XUIList") as IXUIList); + this.m_PanelScrollView = (base.PanelObject.transform.Find("detail/detail").GetComponent("XUIScrollView") as IXUIScrollView); + this.m_WrapContent = (base.PanelObject.transform.Find("detail/detail/WrapContent").GetComponent("XUIWrapContent") as IXUIWrapContent); + this.m_WrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this.WrapContentItemUpdated)); + this.m_GoalList.Refresh(); + } + + private void WrapContentItemUpdated(Transform t, int index) + { + bool flag = this._doc != null; + if (flag) + { + bool flag2 = index < this._doc.targetAwardDetails.Count && index >= 0; + if (flag2) + { + TargetItemInfo info = this._doc.targetAwardDetails[index]; + this._SetRecord(t, info); + } + } + else + { + XSingleton.singleton.AddErrorLog("_doc is nil or index: ", index.ToString(), null, null, null, null); + } + } + + protected void _SetProgressBar(IXUILabel label, IXUIProgress progressBar, TargetItemInfo info) + { + int num = info.subItems.Count - 1; + int num2 = (int)Math.Min(info.gottenAwardsIndex, info.doneIndex); + num2 = Math.Min(num2, num); + GoalAwards.RowData rowData = info.subItems[num2]; + double num3 = info.totalvalue; + double num4 = rowData.AwardsValue; + bool flag = (ulong)info.gottenAwardsIndex == (ulong)((long)(num + 1)); + if (flag) + { + label.SetVisible(false); + progressBar.SetVisible(false); + } + else + { + label.SetVisible(true); + progressBar.SetVisible(true); + bool flag2 = rowData.ShowType == 2u; + if (flag2) + { + bool flag3 = info.gottenAwardsIndex < info.doneIndex; + if (flag3) + { + num3 = 1.0; + num4 = 1.0; + } + else + { + num3 = 0.0; + num4 = 1.0; + } + } + label.SetText(XSingleton.singleton.NumberFormat((ulong)num3) + " / " + XSingleton.singleton.NumberFormat((ulong)num4)); + bool flag4 = (ulong)info.gottenAwardsIndex < (ulong)((long)(num + 1)) && info.gottenAwardsIndex == info.doneIndex; + if (flag4) + { + bool flag5 = num3 < num4; + if (flag5) + { + progressBar.value = (float)(num3 / num4); + } + else + { + progressBar.value = 0f; + } + } + else + { + progressBar.value = 1f; + } + } + } + + protected void _SetRecord(Transform t, TargetItemInfo info) + { + IXUILabel ixuilabel = t.Find("TLabel").GetComponent("XUILabel") as IXUILabel; + IXUILabel ixuilabel2 = t.Find("DLabel").GetComponent("XUILabel") as IXUILabel; + IXUILabel ixuilabel3 = t.Find("ch").GetComponent("XUILabel") as IXUILabel; + IXUIButton ixuibutton = t.Find("Get").GetComponent("XUIButton") as IXUIButton; + IXUISprite ixuisprite = t.Find("Fini").GetComponent("XUISprite") as IXUISprite; + IXUISprite ixuisprite2 = t.Find("RedPoint").GetComponent("XUISprite") as IXUISprite; + IXUIProgress ixuiprogress = t.Find("slider").GetComponent("XUIProgress") as IXUIProgress; + IXUILabel label = t.Find("slider/PLabel").GetComponent("XUILabel") as IXUILabel; + Transform[] array = new Transform[this.maxAwardNum]; + for (int i = 0; i < this.maxAwardNum; i++) + { + array[i] = t.Find("tmp/ItemTpl1_" + (i + 1)); + } + int num = info.subItems.Count - 1; + int num2 = (int)Math.Min(info.gottenAwardsIndex, info.doneIndex); + num2 = Math.Min(num2, num); + GoalAwards.RowData rowData = info.subItems[num2]; + ixuilabel.SetText(rowData.Description); + ixuilabel2.SetText(rowData.Explanation); + ixuisprite.SetVisible((ulong)info.gottenAwardsIndex == (ulong)((long)(num + 1))); + ixuisprite2.SetVisible(info.gottenAwardsIndex < info.doneIndex); + this._SetProgressBar(label, ixuiprogress, info); + int num3 = Math.Min(this.maxAwardNum, rowData.Awards.Count); + bool flag = (ulong)info.gottenAwardsIndex == (ulong)((long)(num + 1)); + if (flag) + { + num3 = 0; + } + for (int j = 0; j < num3; j++) + { + array[j].gameObject.SetActive(true); + int num4 = (int)rowData.Awards[j, 0]; + int itemCount = (int)rowData.Awards[j, 1]; + XSingleton.singleton.normalItemDrawer.DrawItem(array[j].gameObject, num4, itemCount, false); + IXUISprite ixuisprite3 = array[j].gameObject.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite; + ixuisprite3.ID = (ulong)((long)num4); + ixuisprite3.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(XSingleton.singleton.OnItemClick)); + } + for (int k = num3; k < this.maxAwardNum; k++) + { + array[k].gameObject.SetActive(false); + } + bool visible = info.gottenAwardsIndex >= info.doneIndex && (ulong)info.gottenAwardsIndex != (ulong)((long)(num + 1)); + bool visible2 = info.gottenAwardsIndex < info.doneIndex; + ixuiprogress.SetVisible(visible); + ixuibutton.SetVisible(visible2); + ixuibutton.ID = (ulong)info.goalAwardsID; + ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnBtnClick)); + ixuilabel3.ID = (ulong)info.goalAwardsID; + ixuilabel3.RegisterLabelClickEventHandler(new LabelClickEventHandler(this.OnLabelClick)); + } + + private void OnLabelClick(IXUILabel uiSprite) + { + this.ShowDetailView((int)uiSprite.ID); + } + + private void ShowDetailView(int goalAwardsID) + { + TargetItemInfo info = new TargetItemInfo(); + bool flag = false; + for (int i = 0; i < this._doc.targetAwardDetails.Count; i++) + { + bool flag2 = (ulong)this._doc.targetAwardDetails[i].goalAwardsID == (ulong)((long)goalAwardsID); + if (flag2) + { + flag = true; + info = this._doc.targetAwardDetails[i]; + break; + } + } + bool flag3 = !flag; + if (!flag3) + { + this.popWindow.ShowPopView(info); + } + } + + private bool OnBtnClick(IXUIButton btn) + { + TargetItemInfo targetItemInfo = new TargetItemInfo(); + bool flag = false; + for (int i = 0; i < this._doc.targetAwardDetails.Count; i++) + { + bool flag2 = (ulong)this._doc.targetAwardDetails[i].goalAwardsID == (ulong)((long)((int)btn.ID)); + if (flag2) + { + flag = true; + targetItemInfo = this._doc.targetAwardDetails[i]; + break; + } + } + bool flag3 = flag && targetItemInfo.gottenAwardsIndex < targetItemInfo.doneIndex; + if (flag3) + { + this._doc.ClaimAchieve((int)btn.ID); + } + return true; + } + + public override void RegisterEvent() + { + base.RegisterEvent(); + } + + protected override void OnShow() + { + base.OnShow(); + this._doc = XDocuments.GetSpecificDocument(XTargetRewardDocument.uuID); + this._doc.rwdView = this; + this.RefreshRedPoint(); + this.m_padTabs[0].ForceSetFlag(true); + this.ReqDetailInfo(0); + } + + public override void OnUpdate() + { + base.OnUpdate(); + } + + protected override void OnHide() + { + base.OnHide(); + base.PanelObject.SetActive(false); + } + + public override void OnUnload() + { + this._doc = null; + base.OnUnload(); + } + + public bool OnTabControlStateChange(IXUICheckBox chkBox) + { + bool bChecked = chkBox.bChecked; + if (bChecked) + { + this.OnTabClick((int)chkBox.ID); + } + return true; + } + + private void OnTabClick(int index) + { + this.ReqDetailInfo(index); + } + + private void ReqDetailInfo(int index) + { + bool flag = this._doc != null; + if (flag) + { + this.m_targetRewardType = index + TargetRewardType.Athletics; + this._doc.FetchTargetRewardType(this.m_targetRewardType); + } + } + + public void RefreshDetails() + { + this.m_WrapContent.SetContentCount(this._doc.targetAwardDetails.Count, false); + this.m_PanelScrollView.ResetPosition(); + } + + public void RefreshRedPoint() + { + for (int i = 0; i < this.m_padPoint.Length; i++) + { + this.m_padPoint[i].SetVisible(false); + } + for (int j = 0; j < this._doc.m_redList.Count; j++) + { + int num = (int)this._doc.m_redList[j]; + bool flag = num <= this.m_padPoint.Length; + if (flag) + { + this.m_padPoint[num - 1].SetVisible(true); + } + } + } + } +} -- cgit v1.1-26-g67d0