| | |
| | | using UnityEngine; |
| | | using System; |
| | | using UnityEngine; |
| | | public class MailInfoWin : UIBase |
| | | { |
| | | [SerializeField] TextEx txtDate; |
| | |
| | | [SerializeField] RichText txtNoAwardInfo; |
| | | [SerializeField] Transform transAward; |
| | | [SerializeField] RichText txtAwardInfo; |
| | | [SerializeField] ScrollerController scrAwardItem; |
| | | [SerializeField] ScrollerController scrAward; |
| | | [SerializeField] TextEx txtExpiryDate; |
| | | [SerializeField] ImageEx imgHasAward; |
| | | [SerializeField] ButtonEx btnHave; |
| | | [SerializeField] ButtonEx btnDelete; |
| | | MailData nowMailData; |
| | |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell; |
| | | base.OnPreOpen(); |
| | | scrAward.OnRefreshCell += OnRefreshLowRewardCell; |
| | | model.OnUpdateMailListEvent += OnUpdateMailListEvent; |
| | | model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; |
| | | } |
| | | |
| | | protected override void OnOpen() |
| | | { |
| | | UpdateDataInfo(); |
| | | GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; |
| | | Display(); |
| | | CreateScrAward(); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell; |
| | | base.OnPreClose(); |
| | | scrAward.OnRefreshCell -= OnRefreshLowRewardCell; |
| | | model.OnUpdateMailListEvent -= OnUpdateMailListEvent; |
| | | model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent; |
| | | GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; |
| | | } |
| | | |
| | | private void OnSecondEvent() |
| | | { |
| | | txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime); |
| | | txtExpiryDate.text = model.FormatMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays); |
| | | txtExpiryDate.color = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays) >= 0 ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.Red); |
| | | } |
| | | |
| | | private void OnClickHaveButton() |
| | |
| | | |
| | | private void OnUpdateMailStateChangeEvent() |
| | | { |
| | | UpdateDataInfo(); |
| | | Display(); |
| | | CreateScrAward(); |
| | | } |
| | | |
| | | private void OnUpdateMailListEvent() |
| | | { |
| | | UpdateDataInfo(); |
| | | Display(); |
| | | CreateScrAward(); |
| | | } |
| | | |
| | | private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell) |
| | | { |
| | | var _cell = cell.GetComponent<MailInfoAwardItemCell>(); |
| | | var _cell = cell.GetComponent<MailInfoAwardCell>(); |
| | | _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) |
| | | if (!model.TryGetMailData(model.nowUuid, out nowMailData)) |
| | | { |
| | | UIManager.Instance.CloseWindow<MailInfoWin>(); |
| | | return; |
| | | } |
| | | isHasAward = nowMailData != null && nowMailData.HasAward(); |
| | | transNoAward.SetActive(!isHasAward); |
| | | transAward.SetActive(isHasAward); |
| | | btnHave.SetActive(isHasAward && nowMailData.MailState != 3); |
| | | imgHasAward.SetActive(nowMailData.MailState != 3 && nowMailData.HasAward()); |
| | | txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime); |
| | | |
| | | if (nowMailData.IsTemplateMail()) |
| | | |
| | | string key = nowMailData.GetTemplateKey(); |
| | | if (nowMailData.IsTemplateMail() && MailConfig.HasKey(key)) |
| | | { |
| | | string key = nowMailData.GetTemplateKey(); |
| | | if (MailConfig.HasKey(key)) |
| | | MailConfig config = MailConfig.Get(key); |
| | | var templateParams = nowMailData.GetTemplateParams(); |
| | | |
| | | // 打印出即将用于格式化的所有信息 |
| | | // Debug.Log($"[邮件调试] GUID: {nowMailData.GUID}"); |
| | | // Debug.Log($"[邮件调试] 原始参数JSON (nowMailData.Text): '{nowMailData.Text}'"); |
| | | // Debug.Log($"[邮件调试] 解析后的参数数量: {templateParams.Count}"); |
| | | // if (templateParams.Count > 0) |
| | | // { |
| | | // for(int i = 0; i < templateParams.Count; i++) |
| | | // { |
| | | // Debug.Log($"[邮件调试] 参数[{i}]: {templateParams[i]}"); |
| | | // } |
| | | // } |
| | | try |
| | | { |
| | | 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; |
| | | txtTitle.text = config.Title; |
| | | } |
| | | else |
| | | catch (System.Exception ex) |
| | | { |
| | | txtTitle.text = nowMailData.Title; |
| | | txtNoAwardInfo.text = nowMailData.Text; |
| | | txtAwardInfo.text = nowMailData.Text; |
| | | Debug.LogError($"MailInfoWin 解析邮件参数失败! GUID: {nowMailData.GUID}, " + |
| | | $"原始参数JSON: '{nowMailData.Text}', 错误: {ex.Message}"); |
| | | } |
| | | } |
| | | else |
| | |
| | | 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)) |
| | | txtExpiryDate.text = model.FormatMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays); |
| | | txtExpiryDate.color = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays) >= 0 ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.Red); |
| | | scrAward.Refresh(); |
| | | if (isHasAward) |
| | | { |
| | | UIManager.Instance.CloseWindow<MailInfoWin>(); |
| | | for (int i = 0; i < nowMailData.Items.Count; i++) |
| | | { |
| | | CellInfo cellInfo = new CellInfo(); |
| | | cellInfo.infoStr1 = nowMailData.GUID; |
| | | scrAward.AddCell(ScrollerDataType.Header, i, cellInfo); |
| | | } |
| | | } |
| | | isHasAward = nowMailData != null && nowMailData.Items != null; |
| | | scrAward.Restart(); |
| | | } |
| | | |
| | | } |
| | | |