using System; using System.Collections.Generic; using KKSG; using UILib; using UnityEngine; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient.UI { internal class WeddingEnterApplyView : DlgBase { public override string fileName { get { return "GameSystem/Wedding/WeddingEnterApplyDlg"; } } public override int layer { get { return 1; } } public override int group { get { return 1; } } public override bool autoload { get { return true; } } private int m_SelectedTab = -1; private uint _CDToken = 0u; private List m_TimeLabelList = new List(); private List m_TimeInvID = new List(); private Dictionary m_TimeDic = new Dictionary(); protected override void Init() { base.uiBehaviour.m_EmptyList.SetText(XSingleton.singleton.GetString("WeddingEnterEmpty")); } public override void RegisterEvent() { base.RegisterEvent(); base.uiBehaviour.m_ToggleEnter.RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this._OnToggleChanged)); base.uiBehaviour.m_ToggleApply.RegisterOnCheckEventHandler(new CheckBoxOnCheckEventHandler(this._OnToggleChanged)); base.uiBehaviour.m_WrapContent.RegisterItemUpdateEventHandler(new WrapItemUpdateEventHandler(this._WrapContentItemUpdated)); base.uiBehaviour.m_ClosedSpr.RegisterClickEventHandler(new ButtonClickEventHandler(this._OnCloseClicked)); base.uiBehaviour.m_GoApplyTab.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnGoApplyTabClicked)); } protected override void OnShow() { base.OnShow(); base.uiBehaviour.m_ToggleEnter.bChecked = true; XWeddingDocument specificDocument = XDocuments.GetSpecificDocument(XWeddingDocument.uuID); specificDocument.GetAllWeddingInfo(); } protected override void OnHide() { base.OnHide(); XSingleton.singleton.KillTimer(this._CDToken); } public override void StackRefresh() { XWeddingDocument specificDocument = XDocuments.GetSpecificDocument(XWeddingDocument.uuID); specificDocument.GetAllWeddingInfo(); } public void RefreshInfo() { bool flag = this.m_SelectedTab < 0; if (!flag) { bool active = this.m_SelectedTab == 0 && this.GetCurrWeddingList().Count == 0; base.uiBehaviour.m_EmptyList.gameObject.SetActive(active); base.uiBehaviour.m_GoApplyTab.gameObject.SetActive(active); bool active2 = this.m_SelectedTab == 1 && this.GetCurrWeddingList().Count == 0; base.uiBehaviour.m_EmptyList2.gameObject.SetActive(active2); this.StartTimer(); base.uiBehaviour.m_WrapContent.SetContentCount(this.GetCurrWeddingList().Count, false); } } private List GetCurrWeddingList() { XWeddingDocument specificDocument = XDocuments.GetSpecificDocument(XWeddingDocument.uuID); bool flag = this.m_SelectedTab == 0; List result; if (flag) { result = specificDocument.CanEnterWedding; } else { result = specificDocument.CanApplyWedding; } return result; } private void _WrapContentItemUpdated(Transform t, int index) { bool flag = this.m_SelectedTab < 0; if (!flag) { bool flag2 = index >= this.GetCurrWeddingList().Count; if (!flag2) { List currWeddingList = this.GetCurrWeddingList(); WeddingBriefInfo weddingBriefInfo = currWeddingList[index]; bool flag3 = weddingBriefInfo == null; if (!flag3) { IXUILabel ixuilabel = t.Find("Name").GetComponent("XUILabel") as IXUILabel; string @string = XStringDefineProxy.GetString((weddingBriefInfo.brief.type == WeddingType.WeddingType_Normal) ? "WeddingEnterApplyNameN" : "WeddingEnterApplyNameS", new object[] { weddingBriefInfo.brief.role1.name, weddingBriefInfo.brief.role2.name }); ixuilabel.SetText(@string); IXUILabel ixuilabel2 = t.Find("Invited").GetComponent("XUILabel") as IXUILabel; ixuilabel2.SetText((this.m_SelectedTab == 0) ? XStringDefineProxy.GetString("WeddingEnterApplyType1") : XStringDefineProxy.GetString("WeddingEnterApplyType2")); IXUIButton ixuibutton = t.Find("Invited/BtnInvite").GetComponent("XUIButton") as IXUIButton; ixuibutton.ID = weddingBriefInfo.brief.weddingid; ixuibutton.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnWeddingBtnClicked)); ixuilabel2.gameObject.SetActive(!weddingBriefInfo.isApply); GameObject gameObject = t.Find("Bg2").gameObject; gameObject.SetActive(weddingBriefInfo.isApply); IXUILabel ixuilabel3 = t.Find("Time").GetComponent("XUILabel") as IXUILabel; int num = this.m_TimeLabelList.IndexOf(ixuilabel3); bool flag4 = num >= 0 && num < this.m_TimeInvID.Count; if (flag4) { this.m_TimeInvID[num] = weddingBriefInfo.brief.weddingid; } else { this.m_TimeLabelList.Add(ixuilabel3); this.m_TimeInvID.Add(weddingBriefInfo.brief.weddingid); } uint num2; bool flag5 = this.m_TimeDic.TryGetValue(weddingBriefInfo.brief.weddingid, out num2); if (flag5) { bool flag6 = num2 > 0u; if (flag6) { ixuilabel3.SetText(XSingleton.singleton.TimeFormatString((int)num2, 2, 3, 4, false, true)); } else { ixuilabel3.SetText(XSingleton.singleton.GetString("WeddingEnterApplyEnd")); } } } } } } public void StartTimer() { bool flag = !base.IsVisible(); if (!flag) { this.m_TimeLabelList.Clear(); this.m_TimeInvID.Clear(); this.m_TimeDic.Clear(); List currWeddingList = this.GetCurrWeddingList(); for (int i = 0; i < currWeddingList.Count; i++) { this.m_TimeDic[currWeddingList[i].brief.weddingid] = currWeddingList[i].brief.lefttime; } XSingleton.singleton.KillTimer(this._CDToken); this._CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdate), null); } } private void LeftTimeUpdate(object o) { List currWeddingList = this.GetCurrWeddingList(); for (int i = 0; i < currWeddingList.Count; i++) { bool flag = currWeddingList[i].brief.lefttime > 0u; if (flag) { WeddingBrief brief = currWeddingList[i].brief; uint lefttime = brief.lefttime; brief.lefttime = lefttime - 1u; } this.m_TimeDic[currWeddingList[i].brief.weddingid] = currWeddingList[i].brief.lefttime; int num = this.m_TimeInvID.IndexOf(currWeddingList[i].brief.weddingid); bool flag2 = num >= 0 && num < this.m_TimeLabelList.Count; if (flag2) { IXUILabel ixuilabel = this.m_TimeLabelList[num]; bool flag3 = ixuilabel.IsVisible(); if (flag3) { bool flag4 = currWeddingList[i].brief.lefttime > 0u; if (flag4) { ixuilabel.SetText(XSingleton.singleton.TimeFormatString((int)currWeddingList[i].brief.lefttime, 2, 3, 4, false, true)); } else { ixuilabel.SetText(XSingleton.singleton.GetString("WeddingEnterApplyEnd")); } } } } XSingleton.singleton.KillTimer(this._CDToken); this._CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdate), null); } private bool OnWeddingBtnClicked(IXUIButton btn) { ulong id = btn.ID; XWeddingDocument specificDocument = XDocuments.GetSpecificDocument(XWeddingDocument.uuID); bool flag = this.m_SelectedTab == 0; if (flag) { specificDocument.EnterWedding(id); } else { specificDocument.WeddingInviteOperate(WeddingInviteOperType.Wedding_Apply, XSingleton.singleton.XPlayerData.RoleID, id); this.UpdateApplyBtnState(btn); } return true; } public void UpdateApplyBtnState(IXUIButton btn) { GameObject gameObject = btn.gameObject.transform.parent.parent.Find("Bg2").gameObject; gameObject.SetActive(true); btn.gameObject.transform.parent.gameObject.SetActive(false); } private bool OnGoApplyTabClicked(IXUIButton btn) { base.uiBehaviour.m_ToggleApply.bChecked = true; return true; } private bool _OnCloseClicked(IXUIButton iSp) { this.SetVisible(false, true); return true; } private bool _OnToggleChanged(IXUICheckBox go) { bool flag = !go.bChecked; bool result; if (flag) { result = true; } else { this.m_SelectedTab = (int)go.ID; base.uiBehaviour.m_Title.SetText((this.m_SelectedTab == 0) ? XStringDefineProxy.GetString("WeddingEnterApplyTab1") : XStringDefineProxy.GetString("WeddingEnterApplyTab2")); XWeddingDocument specificDocument = XDocuments.GetSpecificDocument(XWeddingDocument.uuID); specificDocument.GetAllWeddingInfo(); result = true; } return result; } } }