using System; using UnityEngine; namespace vnxbqy.UI { public class MailWin : UIBase { [SerializeField] Transform transPersonal; [SerializeField] Transform transGlobal; [SerializeField] ScrollerController scrPersonal; [SerializeField] ScrollerController scrGlobal; [SerializeField] ButtonEx btnDeleteRead; [SerializeField] ButtonEx btnClaimAll; [SerializeField] ToggleEx togTab0; [SerializeField] RedpointBehaviour rpTab0; [SerializeField] ToggleEx togTab1; [SerializeField] RedpointBehaviour rpTab1; [SerializeField] Transform transNoMail; MailManager model { get { return MailManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnDeleteRead.SetListener(OnDeleteRead); btnClaimAll.SetListener(OnClaimAll); togTab0.SetListener(OnTab0); togTab1.SetListener(OnTab1); } protected override void OnPreOpen() { model.OnUpdateMailListEvent += OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; scrPersonal.OnRefreshCell += OnRefreshPersonalCell; scrGlobal.OnRefreshCell += OnRefreshGlobalCell; rpTab0.redpointId = model.GetTabRedpointId(MailCategory.Personal); rpTab1.redpointId = model.GetTabRedpointId(MailCategory.Global); transNoMail.SetActive(false); } protected override void OnPreClose() { model.OnUpdateMailListEvent -= OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; scrPersonal.OnRefreshCell -= OnRefreshPersonalCell; scrGlobal.OnRefreshCell -= OnRefreshGlobalCell; } private void OnTab0(bool value) { if (value) { transPersonal.SetActive(true); transGlobal.SetActive(false); model.nowMailCategory = MailCategory.Personal; CreatePersonalScr(model.nowMailCategory); } } private void OnTab1(bool value) { if (value) { transPersonal.SetActive(false); transGlobal.SetActive(true); model.nowMailCategory = MailCategory.Global; CreateGlobalScr(model.nowMailCategory); } } protected override void OnOpen() { togTab0.isOn = true; togTab1.isOn = false; model.nowMailCategory = MailCategory.Personal; CreatePersonalScr(model.nowMailCategory); } private void OnRefreshPersonalCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, cell); } private void OnRefreshGlobalCell(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(); } public void CreatePersonalScr(MailCategory mailCategory) { scrPersonal.Refresh(); var list = model.GetSortMailScrList(mailCategory); if (list != null) { for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)mailCategory; scrPersonal.AddCell(ScrollerDataType.Header, i, cellInfo); } } scrPersonal.Restart(); } public void CreateGlobalScr(MailCategory mailCategory) { scrGlobal.Refresh(); var list = model.GetSortMailScrList(mailCategory); if (list != null) { for (int i = 0; i < list.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = (int)mailCategory; scrGlobal.AddCell(ScrollerDataType.Header, i, cellInfo); } } scrGlobal.Restart(); } private void OnUpdateMailStateChangeEvent() { RefreshScr(); } private void OnUpdateMailListEvent() { RefreshScr(); } private void RefreshScr() { var list = model.GetSortMailScrList(model.nowMailCategory); if (list.IsNullOrEmpty()) { transNoMail.SetActive(true); } else { transNoMail.SetActive(false); scrPersonal.m_Scorller.RefreshActiveCellViews(); scrGlobal.m_Scorller.RefreshActiveCellViews(); } } } }