using System; using UnityEngine; public class MailWin : FunctionsBaseWin { [SerializeField] ScrollerController scrMail; [SerializeField] ButtonEx btnDeleteAllRead; [SerializeField] ButtonEx btnClaimAll; [SerializeField] RedpointBehaviour rpTab0; [SerializeField] RedpointBehaviour rpTab1; [SerializeField] Transform transNoMail; [SerializeField] Transform transCurrentMailCount; [SerializeField] TextEx txtCurrentMailCount; MailManager model { get { return MailManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnDeleteAllRead.SetListener(OnDeleteRead); btnClaimAll.SetListener(OnClaimAll); } protected override void OnPreOpen() { base.OnPreOpen(); tabButtons[functionOrder].SelectBtn(true); model.nowMailCategory = MailCategory.Personal; rpTab0.redpointId = model.GetTabRedpointId(MailCategory.Personal); rpTab1.redpointId = model.GetTabRedpointId(MailCategory.Global); transNoMail.SetActive(true); btnDeleteAllRead.SetActive(true); btnClaimAll.SetActive(true); transCurrentMailCount.SetActive(true); model.OnUpdateMailListEvent += OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; scrMail.OnRefreshCell += OnRefreshCell; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; DisPlay(); } protected override void OnPreClose() { base.OnPreClose(); model.OnUpdateMailListEvent -= OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; scrMail.OnRefreshCell -= OnRefreshCell; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; } private void OnSecondEvent() { scrMail.m_Scorller.RefreshActiveCellViews(); int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); } protected override void OpenSubUIByTabIndex() { switch (functionOrder) { case 0: model.nowMailCategory = MailCategory.Personal; btnDeleteAllRead.SetActive(true); btnClaimAll.SetActive(true); transCurrentMailCount.SetActive(true); int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); DisPlay(); break; case 1: model.nowMailCategory = MailCategory.Global; btnDeleteAllRead.SetActive(false); btnClaimAll.SetActive(false); transCurrentMailCount.SetActive(false); DisPlay(); break; default: Debug.LogWarning("未知的标签索引: " + functionOrder); break; } } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, cell); } private void OnDeleteRead() { ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), Language.Get("Mail10"), (bool isOk) => { if (isOk) { model.DeleteMail(); //邮件删除成功 SysNotifyMgr.Instance.ShowTip("Mail01"); } }); } private void OnClaimAll() { if (!model.IsCanHaveMail()) { SysNotifyMgr.Instance.ShowTip("Mail02"); return; } model.ClaimMail(); } private void OnUpdateMailStateChangeEvent() { DisPlay(); } private void OnUpdateMailListEvent() { DisPlay(); } private void DisPlay() { scrMail.Refresh(); scrMail.Restart(); MailCategory mailCategory = model.nowMailCategory; var list = model.GetSortMailScrList(mailCategory); if (list.IsNullOrEmpty()) { transNoMail.SetActive(true); } else { transNoMail.SetActive(false); scrMail.Refresh(); for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)mailCategory; scrMail.AddCell(ScrollerDataType.Header, i, cellInfo); } scrMail.Restart(); } int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal); txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount); } }