using Framework; using Gameplay; using Gameplay.Net; using JetBrains.Annotations; using PhxhSDK; using System.Collections.Generic; public class MailSystem : Singlenton, IInitable { public List DataList; public Dictionary DataDic; public bool isHaveAll; public const int MailStatus_New = 0; public const int MailStatus_Opened = 1; public const int MailStatus_Cliamed = 2; public void Init() { DataList = new List(); DataDic = new Dictionary(); isHaveAll = false; } public void Release() { DataList.Clear(); DataDic .Clear(); isHaveAll = false; } public void RemoveMail(ulong id) { SingleMail mail = null; if (DataDic.TryGetValue(id, out mail)) { DataDic.Remove(id); DataList.Remove(mail); } else { DebugUtil.LogError("移除id为{0}的邮件失败",id); } } public void AddMail(Mail mail) { SingleMail info2; if (DataDic.TryGetValue(mail.MailID, out info2)) { DataDic[mail.MailID].Refresh(mail); for (int i = 0; i < DataList.Count; i++) { if (DataList[i].MailID== mail.MailID) { DataList[i].Refresh(mail); return; } } } else { SingleMail newInfo = new SingleMail(mail); DataList.Add(newInfo); DataDic[mail.MailID] = newInfo; MailSystem.Instance.isHaveAll=true; } } public void SetStatus(ulong id,uint status) { DataDic[id].SetStatus(status); for (int i = 0; i < DataList.Count; i++) { if (DataList[i].Status==status) { DataList[i].SetStatus(status); return; } } } public void HandleIds(ulong id) { if(id==0) { for (int i = 0; i < DataList.Count; i++) { if ((DataList[i].Status == MailStatus_Opened) && (DataList[i].MailData!=null)) { DataList[i].SetStatus(MailStatus_Cliamed); DataDic[DataList[i].MailID].SetStatus(MailStatus_Cliamed); } } }else { for (int i = 0; i < DataList.Count; i++) { if (DataList[i].MailID==id) { DataList[i].SetStatus(MailStatus_Cliamed); DataDic[DataList[i].MailID].SetStatus(MailStatus_Cliamed); } } } } public SingleMail GetMail(uint mailID) { SingleMail mail = null; if(DataDic.TryGetValue(mailID,out mail)) { return mail; }else { DebugUtil.LogError("你莫得这个Id的邮件,不要找了: " + mailID); return null; } } }