NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/Mail/SingleMail.cs

123 lines
3.3 KiB
C#
Raw Normal View History

2023-12-11 18:56:57 +08:00
using cfg;
using cfg.ActorCfg;
using Framework;
using Gameplay.Net;
using NLDPB;
2024-04-09 18:35:07 +08:00
using System;
2023-12-11 18:56:57 +08:00
namespace Gameplay
{
2024-01-19 19:13:27 +08:00
public class SingleMail : Mail
2023-12-11 18:56:57 +08:00
{
2024-04-09 18:35:07 +08:00
private DataMail mCfg;
2023-12-18 19:59:06 +08:00
private RedPointNode _redPointNode;
2024-04-09 18:35:07 +08:00
/// <summary>
/// 邮件发送时间
/// </summary>
private DateTime dSendTime;
2023-12-12 19:35:47 +08:00
2023-12-18 19:59:06 +08:00
public RedPointNode RedPointNode => _redPointNode;
public DataMail Cfg => mCfg;
2023-12-11 18:56:57 +08:00
2024-04-09 18:35:07 +08:00
public E_MailDisplayStatus mailDisplayStatus;
/// <summary>
/// 邮件发送时间
/// </summary>
public DateTime DSendTime
{
get { return dSendTime; }
}
public enum E_MailDisplayStatus
2024-01-19 19:13:27 +08:00
{
NoReadAndNoItem,
NoReadAndHaveItem,
ReadAndNotClaim,
ReadAndClaim,
}
2024-04-09 18:35:07 +08:00
2023-12-11 18:56:57 +08:00
public SingleMail(Mail mail)
{
Refresh(mail);
2023-12-18 19:59:06 +08:00
ConstructRedPointTree();
}
public void ConstructRedPointTree()
{
2024-04-09 18:35:07 +08:00
_redPointNode = RedPointManager.Instance.AddDynamicNode(cfg.RedPoint.NodeType.Normal, 20, mCfg.Id);
2023-12-11 18:56:57 +08:00
}
2024-04-09 18:35:07 +08:00
2023-12-11 18:56:57 +08:00
public void Refresh(Mail mail)
{
2023-12-18 19:59:06 +08:00
mCfg = TableManager.Instance.Tables.MailCfg.GetOrDefault((int)mail.MailID);
2024-04-09 18:35:07 +08:00
if (mCfg == null)
2023-12-12 19:35:47 +08:00
{
2024-04-09 18:35:07 +08:00
DebugUtil.LogError($"邮件配置没有id为{mail.MailID}");
2023-12-18 19:59:06 +08:00
mCfg = TableManager.Instance.Tables.MailCfg.DataList[0];
2023-12-12 19:35:47 +08:00
}
2024-04-09 18:35:07 +08:00
2023-12-11 18:56:57 +08:00
SendTime = mail.SendTime;
Status = mail.Status;
MailID = mail.MailID;
2023-12-12 19:35:47 +08:00
Id = mail.Id;
2023-12-11 18:56:57 +08:00
Title = mail.Title;
Body = mail.Body;
2024-04-09 18:35:07 +08:00
dSendTime = CommonUtils.GetTimeByTimestamp(mail.SendTime);
2023-12-11 18:56:57 +08:00
if (mail.MailData != null)
MailData = mail.MailData;
2024-01-19 19:13:27 +08:00
2024-04-09 18:35:07 +08:00
RefreshMailDisplayStatus(mail.Status);
2024-01-19 19:13:27 +08:00
}
2024-04-09 18:35:07 +08:00
/// <summary>
/// 是否有道具,不管领没领取
/// </summary>
/// <returns></returns>
public bool IsHaveItem()
2024-01-19 19:13:27 +08:00
{
2024-04-09 18:35:07 +08:00
if (MailData == null)
2024-01-19 19:13:27 +08:00
return false;
2024-04-09 18:35:07 +08:00
2024-01-19 19:13:27 +08:00
return MailData.Items.Count > 0;
}
2024-04-09 18:35:07 +08:00
/// <summary>
/// 刷新显示相关状态
/// </summary>
/// <param name="status"></param>
2024-01-19 19:13:27 +08:00
public void RefreshMailDisplayStatus(uint status)
{
2024-04-09 18:35:07 +08:00
if ((uint)MailStatus.New == status)
mailDisplayStatus = IsHaveItem() ? E_MailDisplayStatus.NoReadAndHaveItem : E_MailDisplayStatus.NoReadAndNoItem;
else if ((uint)MailStatus.Opened == status)
2024-01-19 19:13:27 +08:00
{
2024-04-09 18:35:07 +08:00
if (MailData != null)
mailDisplayStatus = IsHaveItem() ? E_MailDisplayStatus.ReadAndNotClaim : E_MailDisplayStatus.ReadAndClaim;
else
mailDisplayStatus = E_MailDisplayStatus.ReadAndClaim;
2024-01-19 19:13:27 +08:00
}
else
2024-04-09 18:35:07 +08:00
mailDisplayStatus = E_MailDisplayStatus.ReadAndClaim;
2023-12-11 18:56:57 +08:00
}
2024-04-09 18:35:07 +08:00
/// <summary>
/// 设置邮件状态
/// </summary>
/// <param name="stu"></param>
2023-12-11 18:56:57 +08:00
public void SetStatus(uint stu)
{
2024-04-09 18:35:07 +08:00
if (MailSystem.MailStatus_Cliamed == Status)
2023-12-13 16:51:07 +08:00
return;
2024-04-09 18:35:07 +08:00
2023-12-11 18:56:57 +08:00
Status = stu;
2024-04-09 18:35:07 +08:00
2024-01-22 16:19:00 +08:00
RefreshMailDisplayStatus(stu);
2024-04-09 18:35:07 +08:00
EventManager.Instance.Send(EventManager.EventName.MailStateChange);
2023-12-11 18:56:57 +08:00
}
}
}