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);
|
}
|
|
|
}
|