| 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<MailCell>(); | 
|         _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); | 
|     } | 
|   | 
|   | 
| } |