GameFramework.MailSystem.GetMailList C# (CSharp) Method

GetMailList() private method

private GetMailList ( ulong userGuid ) : void
userGuid ulong
return void
        internal void GetMailList(ulong userGuid)
        {
            UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
            UserInfo user = dataProcess.GetUserInfo(userGuid);
            if (null != user) {
                List<MailInfoForMessage> mailList = new List<MailInfoForMessage>();
                List<MailInfo> mails;
                if (m_UserMails.TryGetValue(userGuid, out mails)) {
                    int ct = mails.Count;
                    for (int ix = 0; ix < ct; ++ix) {
                        MailInfo mailInfo = mails[ix];
                        if (mailInfo.m_ExpiryDate >= DateTime.Now) {
                            MailInfoForMessage mailInfoForMsg = new MailInfoForMessage();
                            mailInfoForMsg.m_AlreadyRead = mailInfo.m_AlreadyRead;
                            mailInfoForMsg.m_MailGuid = mailInfo.m_MailGuid;
                            mailInfoForMsg.m_Title = mailInfo.m_Title;
                            mailInfoForMsg.m_Sender = mailInfo.m_Sender;
                            mailInfoForMsg.m_SendTime = mailInfo.m_SendTime.ToString("yyyyMMddHHmmss");
                            mailInfoForMsg.m_Text = mailInfo.m_Text;
                            mailInfoForMsg.m_Money = mailInfo.m_Money;
                            mailInfoForMsg.m_Gold = mailInfo.m_Gold;
                            int itemCt = mailInfo.m_Items.Count;
                            if (itemCt > 0) {
                                for (int index = 0; index < itemCt; ++index) {
                                    MailItemForMessage mailItem = new MailItemForMessage();
                                    mailItem.m_ItemId = mailInfo.m_Items[index].m_ItemId;
                                    mailItem.m_ItemNum = mailInfo.m_Items[index].m_ItemNum;
                                    mailInfoForMsg.m_Items.Add(mailItem);
                                }
                            }
                            mailList.Add(mailInfoForMsg);
                        }
                    }
                }
                MailStateInfo mailStateInfo = user.MailStateInfo;
                //这里不对用户数据加锁,因为用户的邮件状态的改变都在这个线程完成(除上线时的数据加载)
                int wholeMailCt = m_WholeMails.Count;
                for (int ix = 0; ix < wholeMailCt; ++ix) {
                    MailInfo mailInfo = m_WholeMails[ix];
                    if (mailInfo.m_LevelDemand <= user.Level
                      && mailInfo.m_SendTime >= user.CreateTime
                      && mailInfo.m_ExpiryDate >= DateTime.Now
                      && !mailStateInfo.IsAlreadyReceived(mailInfo.m_MailGuid)) {
                        if (!mailStateInfo.HaveMail(mailInfo.m_MailGuid)) {
                            mailStateInfo.AddMail(mailInfo.m_MailGuid, mailInfo.m_ExpiryDate);
                        }
                        MailInfoForMessage mailInfoForMsg = new MailInfoForMessage();
                        mailInfoForMsg.m_AlreadyRead = mailStateInfo.IsAlreadyRead(mailInfo.m_MailGuid);
                        mailInfoForMsg.m_MailGuid = mailInfo.m_MailGuid;
                        mailInfoForMsg.m_Title = mailInfo.m_Title;
                        mailInfoForMsg.m_Sender = mailInfo.m_Sender;
                        mailInfoForMsg.m_SendTime = mailInfo.m_SendTime.ToString("yyyyMMddHHmmss");
                        mailInfoForMsg.m_Text = mailInfo.m_Text;
                        mailInfoForMsg.m_Money = mailInfo.m_Money;
                        mailInfoForMsg.m_Gold = mailInfo.m_Gold;
                        int itemCt = mailInfo.m_Items.Count;
                        if (itemCt > 0) {
                            for (int index = 0; index < itemCt; ++index) {
                                MailItemForMessage mailItem = new MailItemForMessage();
                                mailItem.m_ItemId = mailInfo.m_Items[index].m_ItemId;
                                mailItem.m_ItemNum = mailInfo.m_Items[index].m_ItemNum;
                                mailInfoForMsg.m_Items.Add(mailItem);
                            }
                        }
                        mailList.Add(mailInfoForMsg);
                    }
                }
                NodeMessage syncMailListMsg = new NodeMessage(LobbyMessageDefine.Msg_LC_SyncMailList, userGuid);
                GameFrameworkMessage.Msg_LC_SyncMailList protoMsg = new Msg_LC_SyncMailList();
                protoMsg.m_Mails.AddRange(mailList);
                syncMailListMsg.m_ProtoData = protoMsg;
                NodeMessageDispatcher.SendNodeMessage(user.NodeName, syncMailListMsg);
            }
        }