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

117 lines
3.2 KiB
C#

using cfg;
using cfg.ActorCfg;
using Framework;
using Gameplay.Net;
using NLDPB;
namespace Gameplay
{
public class SingleMail : Mail
{
DataMail mCfg;
private RedPointNode _redPointNode;
public RedPointNode RedPointNode => _redPointNode;
public DataMail Cfg => mCfg;
public MailDisplayStatus mailDisplayStatus;
public enum 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;
if (mail.MailData != null)
{
MailData = mail.MailData;
}
RefreshMailDisplayStatus(mail.Status);
}
public bool IsHaveItem()
{
if(MailData==null)
{
return false;
}
return MailData.Items.Count > 0;
}
public void RefreshMailDisplayStatus(uint status)
{
if(status==(uint)MailStatus.New)
{
if(IsHaveItem())
{
mailDisplayStatus = MailDisplayStatus.NoReadAndHaveItem;
}else
{
mailDisplayStatus = MailDisplayStatus.NoReadAndNoItem;
}
}
else
{
if(status==(uint)MailStatus.Opened)
{
if(MailData!=null)
{
if(IsHaveItem())
{
mailDisplayStatus = MailDisplayStatus.ReadAndNotClaim;
}else
{
mailDisplayStatus = MailDisplayStatus.ReadAndClaim;
}
}else
{
mailDisplayStatus = MailDisplayStatus.ReadAndClaim;
}
}else
{
mailDisplayStatus = MailDisplayStatus.ReadAndClaim;
}
}
}
public void SetStatus(uint stu)
{
EventManager.Instance.Send(EventManager.EventName.MailStateChange);
if (Status==MailSystem.MailStatus_Cliamed)
{
return;
}
Status = stu;
RefreshMailDisplayStatus(stu);
}
}
}