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); } } }