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