using UnityEngine; public class MailInfoWin : UIBase { [SerializeField] TextEx txtDate; [SerializeField] TextEx txtTitle; [SerializeField] Transform transNoAward; [SerializeField] RichText txtNoAwardInfo; [SerializeField] Transform transAward; [SerializeField] RichText txtAwardInfo; [SerializeField] ScrollerController scrAwardItem; [SerializeField] TextEx txtExpiryDate; [SerializeField] ButtonEx btnHave; [SerializeField] ButtonEx btnDelete; MailData nowMailData; bool isHasAward = false; MailManager model { get { return MailManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnHave.SetListener(OnClickHaveButton); btnDelete.SetListener(OnClickDeleteButton); } protected override void OnPreOpen() { scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell; model.OnUpdateMailListEvent += OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; } protected override void OnOpen() { UpdateDataInfo(); Display(); CreateScrAward(); } protected override void OnPreClose() { scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell; model.OnUpdateMailListEvent -= OnUpdateMailListEvent; model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; } private void OnClickHaveButton() { if (model.nowUuid == null || model.nowUuid == string.Empty) { Debug.Log("当前查看的邮件没有UUID"); return; } model.ClaimMail(model.nowUuid); } private void OnClickDeleteButton() { if (model.nowUuid == null || model.nowUuid == string.Empty) { Debug.Log("当前查看的邮件没有UUID"); return; } model.DeleteMail(model.nowUuid); UIManager.Instance.CloseWindow(); //邮件删除成功 SysNotifyMgr.Instance.ShowTip("Mail01"); } private void OnUpdateMailStateChangeEvent() { UpdateDataInfo(); Display(); CreateScrAward(); } private void OnUpdateMailListEvent() { UpdateDataInfo(); Display(); CreateScrAward(); } private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, cell); } private void CreateScrAward() { scrAwardItem.Refresh(); if (isHasAward) { for (int i = 0; i < nowMailData.Items.Count; i++) { CellInfo cellInfo = new CellInfo(); cellInfo.infoInt1 = nowMailData.MailState; scrAwardItem.AddCell(ScrollerDataType.Header, i); } } scrAwardItem.Restart(); } private void Display() { if (nowMailData == null) return; transNoAward.SetActive(!isHasAward); transAward.SetActive(isHasAward); txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime); if (nowMailData.IsTemplateMail()) { string key = nowMailData.GetTemplateKey(); if (MailConfig.HasKey(key)) { MailConfig config = MailConfig.Get(key); var templateParams = nowMailData.GetTemplateParams(); string content = string.Format(config.Content, templateParams.ToArray()); txtTitle.text = config.Title; txtNoAwardInfo.text = content; txtAwardInfo.text = content; } else { txtTitle.text = nowMailData.Title; txtNoAwardInfo.text = nowMailData.Text; txtAwardInfo.text = nowMailData.Text; } } else { txtTitle.text = nowMailData.Title; txtNoAwardInfo.text = nowMailData.Text; txtAwardInfo.text = nowMailData.Text; } int expiryDays = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays); txtExpiryDate.text = expiryDays > 0 ? Language.Get("Mail07", expiryDays) : string.Empty; } private void UpdateDataInfo() { if (!model.TryGetMailData(model.nowUuid, out nowMailData)) { UIManager.Instance.CloseWindow(); } isHasAward = nowMailData != null && nowMailData.Items != null; } }