123 lines
3.0 KiB
C#
123 lines
3.0 KiB
C#
using Framework;
|
||
using Gameplay;
|
||
using Gameplay.Net;
|
||
using JetBrains.Annotations;
|
||
using PhxhSDK;
|
||
using System.Collections.Generic;
|
||
|
||
public class MailSystem : Singlenton<MailSystem>, IInitable
|
||
{
|
||
public List<SingleMail> DataList;
|
||
public Dictionary<ulong, SingleMail> 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<SingleMail>();
|
||
DataDic = new Dictionary<ulong, SingleMail>();
|
||
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;
|
||
}
|
||
}
|
||
|
||
|
||
}
|