summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs')
-rw-r--r--Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs270
1 files changed, 270 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs b/Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs
new file mode 100644
index 00000000..40b9a7b9
--- /dev/null
+++ b/Client/Assets/Scripts/XMainClient/UI/XRewardLevelView.cs
@@ -0,0 +1,270 @@
+using System;
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XUtliPoolLib;
+
+namespace XMainClient.UI
+{
+ internal class XRewardLevelView : DlgHandlerBase
+ {
+ public IXUIScrollView m_ScrollView;
+
+ public XUIPool m_RewardPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ public XUIPool m_RewardItemPool = new XUIPool(XSingleton<XGameUI>.singleton.m_uiTool);
+
+ public IXUILabel m_RemainTime;
+
+ protected XAchievementDocument _doc;
+
+ protected uint _remainTime;
+
+ protected uint _timer;
+
+ private uint _curID;
+
+ protected override void Init()
+ {
+ this._doc = (XSingleton<XGame>.singleton.Doc.GetXComponent(XAchievementDocument.uuID) as XAchievementDocument);
+ this._doc.RewardLevelView = this;
+ this.m_RemainTime = (base.PanelObject.transform.Find("RemainTime/Label").GetComponent("XUILabel") as IXUILabel);
+ Transform transform = base.PanelObject.transform.Find("Panel");
+ this.m_ScrollView = (transform.GetComponent("XUIScrollView") as IXUIScrollView);
+ Transform transform2 = base.PanelObject.transform.Find("Panel/RecordTpl/ItemReward/ItemTpl");
+ this.m_RewardItemPool.SetupPool(transform.gameObject, transform2.gameObject, 30u, false);
+ transform2 = base.PanelObject.transform.Find("Panel/RecordTpl");
+ this.m_RewardPool.SetupPool(transform2.parent.gameObject, transform2.gameObject, 10u, false);
+ }
+
+ public void UpdateRedPoint()
+ {
+ this._doc.HasCompleteAchivement(XSysDefine.XSys_ServerActivity);
+ }
+
+ protected override void OnShow()
+ {
+ base.OnShow();
+ this._remainTime = 0u;
+ RpcC2G_QueryOpenGameActivityTime rpc = new RpcC2G_QueryOpenGameActivityTime();
+ XSingleton<XClientNetwork>.singleton.Send(rpc);
+ this.RefreshList();
+ }
+
+ public override void OnUnload()
+ {
+ this._remainTime = 0u;
+ bool flag = this._timer > 0u;
+ if (flag)
+ {
+ XSingleton<XTimerMgr>.singleton.KillTimer(this._timer);
+ }
+ this._doc.RewardLevelView = null;
+ base.OnUnload();
+ }
+
+ protected string GetActivityString(string format, int catergory, int param, AchivementState state)
+ {
+ string result;
+ if (catergory - 502 > 1)
+ {
+ bool flag = state == AchivementState.Exceed || state == AchivementState.Not_Achive;
+ if (flag)
+ {
+ result = string.Format(format, "[ff0000]" + param + "[-]");
+ }
+ else
+ {
+ result = string.Format(format, "[00ff00]" + param + "[-]");
+ }
+ }
+ else
+ {
+ SceneTable.RowData sceneData = XSingleton<XSceneMgr>.singleton.GetSceneData((uint)param);
+ bool flag2 = state == AchivementState.Exceed || state == AchivementState.Not_Achive;
+ if (flag2)
+ {
+ result = string.Format(format, "[ff0000]" + sceneData.Comment + "[-]");
+ }
+ else
+ {
+ result = string.Format(format, "[00ff00]" + sceneData.Comment + "[-]");
+ }
+ }
+ return result;
+ }
+
+ protected bool OnFetchClicked(IXUIButton button)
+ {
+ this._curID = (uint)button.ID;
+ int achivementFatigue = this._doc.GetAchivementFatigue(this._curID);
+ int @int = XSingleton<XGlobalConfig>.singleton.GetInt("MaxFatigue");
+ int num = (int)XBagDocument.BagDoc.GetVirtualItemCount(ItemEnum.FATIGUE);
+ bool flag = achivementFatigue > 0 && num + achivementFatigue > @int;
+ if (flag)
+ {
+ XSingleton<UiUtility>.singleton.ShowFatigueSureDlg(new ButtonClickEventHandler(this.SureToFetch));
+ }
+ else
+ {
+ this._doc.FetchAchivement(this._curID);
+ }
+ return true;
+ }
+
+ protected bool SureToFetch(IXUIButton button)
+ {
+ XSingleton<UiUtility>.singleton.CloseModalDlg();
+ this._doc.FetchAchivement(this._curID);
+ return true;
+ }
+
+ protected bool OnLinkToClick(IXUIButton button)
+ {
+ return true;
+ }
+
+ private int ActivityCompare(int act1, int act2)
+ {
+ AchivementState achivementState = this._doc.GetAchivementState((uint)act1);
+ AchivementState achivementState2 = this._doc.GetAchivementState((uint)act2);
+ bool flag = achivementState > achivementState2;
+ int result;
+ if (flag)
+ {
+ result = -1;
+ }
+ else
+ {
+ bool flag2 = achivementState < achivementState2;
+ if (flag2)
+ {
+ result = 1;
+ }
+ else
+ {
+ result = act1.CompareTo(act2);
+ }
+ }
+ return result;
+ }
+
+ public void RefreshList()
+ {
+ this.UpdateRedPoint();
+ this.m_RewardPool.ReturnAll(false);
+ this.m_RewardItemPool.ReturnAll(false);
+ this.m_ScrollView.SetPosition(0f);
+ List<int> catergoryActivity = this._doc.GetCatergoryActivity(500);
+ catergoryActivity.Sort(new Comparison<int>(this.ActivityCompare));
+ for (int i = 0; i < catergoryActivity.Count; i++)
+ {
+ GameObject gameObject = this.m_RewardPool.FetchGameObject(false);
+ gameObject.name = "record" + catergoryActivity[i];
+ gameObject.transform.localPosition = this.m_RewardPool.TplPos - new Vector3(0f, (float)(this.m_RewardPool.TplHeight * i));
+ AchivementTable.RowData achivementData = this._doc.GetAchivementData((uint)catergoryActivity[i]);
+ bool flag = achivementData != null;
+ if (flag)
+ {
+ AchivementState achivementState = this._doc.GetAchivementState((uint)achivementData.AchievementID);
+ IXUILabel ixuilabel = gameObject.transform.Find("Name").GetComponent("XUILabel") as IXUILabel;
+ string activityString = this.GetActivityString(achivementData.AchievementDescription, achivementData.AchievementCategory, achivementData.AchievementParam, achivementState);
+ ixuilabel.SetText(activityString);
+ IXUIButton ixuibutton = gameObject.transform.Find("Fetch").GetComponent("XUIButton") as IXUIButton;
+ ixuibutton.ID = (ulong)((long)catergoryActivity[i]);
+ ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnFetchClicked));
+ GameObject gameObject2 = gameObject.transform.Find("Fetched").gameObject;
+ GameObject gameObject3 = gameObject.transform.Find("LinkTo").gameObject;
+ IXUIProgress ixuiprogress = gameObject.transform.Find("Progress").GetComponent("XUIProgress") as IXUIProgress;
+ ixuiprogress.gameObject.SetActive(false);
+ ixuibutton.gameObject.SetActive(false);
+ gameObject2.SetActive(false);
+ gameObject3.SetActive(false);
+ bool flag2 = achivementData.AchievementCategory == 504;
+ if (flag2)
+ {
+ ixuiprogress.gameObject.SetActive(true);
+ XFashionDocument specificDocument = XDocuments.GetSpecificDocument<XFashionDocument>(XFashionDocument.uuID);
+ int count = specificDocument.FashionBag.Count;
+ ixuiprogress.value = (float)count / (float)achivementData.AchievementParam;
+ IXUILabel ixuilabel2 = gameObject.transform.Find("Progress/T").GetComponent("XUILabel") as IXUILabel;
+ ixuilabel2.SetText(string.Format("{0}/{1}", count, achivementData.AchievementParam));
+ }
+ switch (achivementState)
+ {
+ case AchivementState.Exceed:
+ ixuibutton.gameObject.SetActive(true);
+ ixuibutton.SetEnable(false, false);
+ break;
+ case AchivementState.Fetched:
+ gameObject2.SetActive(true);
+ break;
+ case AchivementState.Not_Achive:
+ gameObject3.SetActive(true);
+ break;
+ case AchivementState.Achive_NoFetch:
+ ixuibutton.gameObject.SetActive(true);
+ ixuibutton.SetEnable(true, false);
+ break;
+ }
+ Transform parent = gameObject.transform.Find("ItemReward");
+ for (int j = 0; j < achivementData.AchievementItem.Count; j++)
+ {
+ int num = achivementData.AchievementItem[j, 0];
+ GameObject gameObject4 = this.m_RewardItemPool.FetchGameObject(false);
+ gameObject4.name = "reward item " + num;
+ gameObject4.transform.parent = parent;
+ gameObject4.transform.localPosition = this.m_RewardItemPool.TplPos + new Vector3((float)(this.m_RewardItemPool.TplWidth * j), 0f);
+ XSingleton<XItemDrawerMgr>.singleton.normalItemDrawer.DrawItem(gameObject4, num, achivementData.AchievementItem[j, 1], false);
+ IXUISprite ixuisprite = gameObject4.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite;
+ ixuisprite.ID = (ulong)((long)num);
+ ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.ShowItemDialog));
+ }
+ }
+ }
+ }
+
+ private void ShowItemDialog(IXUISprite spr)
+ {
+ XItem mainItem = XBagDocument.MakeXItem((int)spr.ID, false);
+ XSingleton<UiUtility>.singleton.ShowTooltipDialogWithSearchingCompare(mainItem, spr, false, 0u);
+ }
+
+ public void SetRemainTime(uint second)
+ {
+ this._remainTime = second;
+ this._RemainTime();
+ }
+
+ public void UpateRemainTime(object param)
+ {
+ bool flag = this._remainTime > 0u;
+ if (flag)
+ {
+ this._remainTime -= 1u;
+ this._RemainTime();
+ }
+ }
+
+ protected void _RemainTime()
+ {
+ bool flag = !base.IsVisible();
+ if (!flag)
+ {
+ bool flag2 = this._remainTime > 0u;
+ if (flag2)
+ {
+ string @string = XStringDefineProxy.GetString("REMAIN_TIME");
+ string text = XSingleton<UiUtility>.singleton.TimeFormatSince1970((int)this._remainTime, @string, false);
+ this.m_RemainTime.SetText(text);
+ this._timer = XSingleton<XTimerMgr>.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.UpateRemainTime), null);
+ }
+ else
+ {
+ string string2 = XStringDefineProxy.GetString("GUILD_REDPACKET_TIMEOVER");
+ this.m_RemainTime.SetText(string2);
+ }
+ }
+ }
+ }
+}