using System; using System.Collections.Generic; using System.Text; using KKSG; using UILib; using UnityEngine; using XMainClient.UI.UICommon; using XUpdater; using XUtliPoolLib; namespace XMainClient.UI { internal class XWelfareKingdomPrivilegeHandler : DlgHandlerBase { protected override string FileName { get { return "GameSystem/Welfare/KingdomPrivilege"; } } private XUIPool m_PrivilegeTypePool = new XUIPool(XSingleton.singleton.m_uiTool); private IXUIList m_PrivilegeTypeList; private List m_LeftTimeLabel = new List(); private List m_LeftTime = new List(); private uint _CDToken = 0u; protected override void Init() { base.Init(); Transform transform = base.PanelObject.transform.Find("ListType/Grid/Tpl"); this.m_PrivilegeTypePool.SetupPool(transform.parent.parent.gameObject, transform.gameObject, 3u, false); this.m_PrivilegeTypeList = (base.PanelObject.transform.Find("ListType/Grid").GetComponent("XUIList") as IXUIList); } protected override void OnHide() { base.OnHide(); XSingleton.singleton.KillTimer(this._CDToken); XSingleton.singleton.DestroyTextureInActivePool(this.m_PrivilegeTypePool, "Icon"); } public override void RefreshData() { XWelfareDocument specificDocument = XDocuments.GetSpecificDocument(XWelfareDocument.uuID); PayMemberTable payMemberTable = XWelfareDocument.PayMemberTable; List payMemeberInfo = specificDocument.PayMemeberInfo; this.m_LeftTimeLabel.Clear(); this.m_LeftTime.Clear(); bool flag = payMemeberInfo == null; if (!flag) { this.m_PrivilegeTypePool.FakeReturnAll(); for (int i = 0; i < payMemberTable.Table.Length; i++) { int systemID = payMemberTable.Table[i].SystemID; int id = payMemberTable.Table[i].ID; bool flag2 = XSingleton.singleton.IsSystemOpen(systemID); if (flag2) { GameObject gameObject = this.m_PrivilegeTypePool.FetchGameObject(false); gameObject.transform.parent = this.m_PrivilegeTypeList.gameObject.transform; gameObject.transform.localScale = Vector3.one; bool flag3 = false; for (int j = 0; j < payMemeberInfo.Count; j++) { bool flag4 = id == payMemeberInfo[j].ID; if (flag4) { flag3 = true; this.SetBaseInfo(gameObject, payMemberTable.Table[i], payMemeberInfo[j]); } } bool flag5 = !flag3; if (flag5) { this.SetBaseInfo(gameObject, payMemberTable.Table[i], null); } } } this.m_PrivilegeTypeList.Refresh(); this.m_PrivilegeTypePool.ActualReturnAll(false); XSingleton.singleton.KillTimer(this._CDToken); this._CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdate), null); } } private void SetBaseInfo(GameObject item, PayMemberTable.RowData baseInfo, PayMember info) { float num = (float)baseInfo.Price / 100f; IXUILabel ixuilabel = item.transform.Find("Title").GetComponent("XUILabel") as IXUILabel; ixuilabel.SetText(baseInfo.Name); XWelfareDocument specificDocument = XDocuments.GetSpecificDocument(XWelfareDocument.uuID); IXUISprite ixuisprite = item.transform.Find("TqIcon").GetComponent("XUISprite") as IXUISprite; ixuisprite.SetSprite(specificDocument.GetMemberPrivilegeIcon((MemberPrivilege)baseInfo.ID)); IXUITexture ixuitexture = item.transform.Find("Icon").GetComponent("XUITexture") as IXUITexture; ixuitexture.SetTexturePath(baseInfo.Icon); IXUILabel ixuilabel2 = item.transform.Find("Value").GetComponent("XUILabel") as IXUILabel; ixuilabel2.SetText(XStringDefineProxy.GetString("PAY_KINGDOM_VALUE", new object[] { baseInfo.Value[1], XSingleton.singleton.ChooseProfString(XBagDocument.GetItemConf((int)baseInfo.Value[0]).ItemName, 0u) })); IXUILabel ixuilabel3 = item.transform.Find("Detail/DetailDesc").GetComponent("XUILabel") as IXUILabel; string[] array = baseInfo.Desc.Split(new char[] { '|' }); int num2 = 3; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < array.Length; i++) { bool flag = i < num2; if (flag) { stringBuilder.Append(array[i]); } else { bool flag2 = i == num2; if (flag2) { stringBuilder.Append("......"); break; } } bool flag3 = i != array.Length - 1 && i != num2; if (flag3) { stringBuilder.Append("\n"); } } ixuilabel3.SetText(stringBuilder.ToString()); IXUIButton ixuibutton = item.transform.Find("Btn").GetComponent("XUIButton") as IXUIButton; IXUILabel ixuilabel4 = item.transform.Find("LeftTime").GetComponent("XUILabel") as IXUILabel; IXUILabel ixuilabel5 = item.transform.Find("Btn/T").GetComponent("XUILabel") as IXUILabel; this.m_LeftTimeLabel.Add(ixuilabel4); bool flag4 = info != null; if (flag4) { this.m_LeftTime.Add(info.ExpireTime); this.SetLeftTime(ixuilabel4, info.ExpireTime); ixuilabel5.SetText((info.ExpireTime > 0) ? XSingleton.singleton.GetString("PAY_KINGDOM_BUY_AGAIN") : baseInfo.Tip); int @int = XSingleton.singleton.GetInt("WelfareMemberPrivilegeRenewDays"); bool visible = info.ExpireTime <= 86400 * @int; ixuibutton.SetVisible(visible); } else { ixuilabel4.SetVisible(false); ixuilabel5.SetText(baseInfo.Tip); this.m_LeftTime.Add(0); ixuibutton.SetVisible(true); } ixuibutton.ID = (ulong)((long)baseInfo.ID); ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnBuyBtnClicked)); IXUISprite ixuisprite2 = item.transform.Find("Bg").GetComponent("XUISprite") as IXUISprite; ixuisprite2.ID = (ulong)((long)baseInfo.ID); ixuisprite2.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnDetailBtnClicked)); } private void SetLeftTime(IXUILabel leftTime, int time) { leftTime.SetVisible(time > 0); bool flag = time > 86400; if (flag) { int num = time / 86400; leftTime.SetText(string.Format("{0}{1}", XStringDefineProxy.GetString("PAY_KINGDOM_LEFTTIME", new object[] { num }), XSingleton.singleton.GetString("DAY_DUARATION"))); } else { leftTime.SetText(XStringDefineProxy.GetString("PAY_KINGDOM_LEFTTIME", new object[] { XSingleton.singleton.TimeFormatString(time, 3, 3, 4, false, true) })); } } private void LeftTimeUpdate(object o) { for (int i = 0; i < this.m_LeftTime.Count; i++) { bool flag = this.m_LeftTime[i] > 0; if (flag) { List leftTime = this.m_LeftTime; int index = i; int num = leftTime[index]; leftTime[index] = num - 1; int @int = XSingleton.singleton.GetInt("WelfareMemberPrivilegeRenewDays"); bool flag2 = this.m_LeftTime[i] == 0 || this.m_LeftTime[i] == 86400 * @int; if (flag2) { XWelfareDocument specificDocument = XDocuments.GetSpecificDocument(XWelfareDocument.uuID); specificDocument.ReqPayAllInfo(); } } bool flag3 = i < this.m_LeftTimeLabel.Count; if (flag3) { this.SetLeftTime(this.m_LeftTimeLabel[i], this.m_LeftTime[i]); } } XSingleton.singleton.KillTimer(this._CDToken); this._CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdate), null); } private bool OnBuyBtnClicked(IXUIButton btn) { int num = (int)btn.ID; XWelfareDocument specificDocument = XDocuments.GetSpecificDocument(XWelfareDocument.uuID); PayMemberTable payMemberTable = XWelfareDocument.PayMemberTable; List payMemeberInfo = specificDocument.PayMemeberInfo; bool flag = payMemeberInfo == null; bool result; if (flag) { result = false; } else { for (int i = 0; i < payMemberTable.Table.Length; i++) { int id = payMemberTable.Table[i].ID; bool flag2 = id == num; if (flag2) { for (int j = 0; j < payMemeberInfo.Count; j++) { bool flag3 = id == payMemeberInfo[j].ID; if (flag3) { bool flag4 = payMemeberInfo[j].ExpireTime > 0; if (flag4) { DlgBase.singleton.Show(payMemberTable.Table[i], false, 0); return true; } } } XRechargeDocument specificDocument2 = XDocuments.GetSpecificDocument(XRechargeDocument.uuID); bool flag5 = XSingleton.singleton.XPlatform.Platfrom() == XPlatformType.Android; if (flag5) { specificDocument2.SDKSubscribe(payMemberTable.Table[i].Price, 1, payMemberTable.Table[i].ServiceCode, payMemberTable.Table[i].Name, payMemberTable.Table[i].ParamID, PayParamType.PAY_PARAM_MEMBER); } else { bool flag6 = XSingleton.singleton.XPlatform.Platfrom() == XPlatformType.IOS; if (flag6) { specificDocument2.SDKSubscribe(payMemberTable.Table[i].Price, payMemberTable.Table[i].Days, payMemberTable.Table[i].ServiceCode, payMemberTable.Table[i].Name, payMemberTable.Table[i].ParamID, PayParamType.PAY_PARAM_MEMBER); } } return true; } } result = true; } return result; } private void OnDetailBtnClicked(IXUISprite sp) { int num = (int)sp.ID; PayMemberTable payMemberTable = XWelfareDocument.PayMemberTable; for (int i = 0; i < payMemberTable.Table.Length; i++) { int id = payMemberTable.Table[i].ID; bool flag = id == num; if (flag) { DlgBase.singleton.ShowDetail(payMemberTable.Table[i], true); break; } } } } }