117 lines
3.2 KiB
C#
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);
|
|
|
|
}
|
|
}
|
|
} |