コード例 #1
0
        private void ProcessWrite(MailWriteInfo info)
        {
            Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player;

            if (player == null)
            {
                return;
            }

            if (info.receiver.char_idx == 0)
            {
                Log.Warning("错误的收件人id:" + info.receiver.char_idx);
                return;
            }

            //存db
            MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>();

            mail_info.mail_type     = eMailType.NORMAL;
            mail_info.spid          = 0;//普通邮件,不区分渠道id
            mail_info.receiver_idx  = info.receiver.char_idx;
            mail_info.sender_idx    = m_char_idx;
            mail_info.sender_name   = player.char_name;
            mail_info.send_time     = Time.second_time;
            mail_info.expire_time   = 0;
            mail_info.delivery_time = 0;
            mail_info.flags         = (uint)eMailFlags.NONE;
            mail_info.subject       = info.subject;
            mail_info.bin_mail_content.content_type = eMailContentType.NORMAL;
            mail_info.bin_mail_content.bin_normal_content.content = info.content;
            SQLMailHandle.CreateMail(mail_info, player.db_id);
            CommonObjectPools.Despawn(mail_info);
        }
コード例 #2
0
        /// <summary>
        /// 发邮件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnBtnOK(object sender, EventArgs e)
        {
            MailWriteInfo info = new MailWriteInfo();

            //info.receiver_type = MailWriteInfo.eReceiverType.CHARID;
            //info.receiver_idx = long.Parse(m_txt_recv.Text);
            info.receiver.SetName(m_txt_recv.Text);
            info.subject = m_txt_subject.Text;
            info.content = m_txt_content.Text;
            ServerMsgSend.SendWriteMail(info);
        }
コード例 #3
0
        /// <summary>
        /// 发邮件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnBtnOK(object sender, EventArgs e)
        {
            MailWriteInfo info = new MailWriteInfo();

            if (m_comb_name_type.SelectedIndex == 0)
            {
                info.receiver.SetIdx(long.Parse(m_txt_recv.Text));
            }
            else
            {
                info.receiver.SetName(m_txt_recv.Text);
            }
            info.subject = m_txt_subject.Text;
            info.content = m_txt_content.Text;
            ServerMsgSend.SendWriteMail(info);
        }
コード例 #4
0
 /// <summary>
 /// 写邮件
 /// </summary>
 public void HandleWriteMail(MailWriteInfo info)
 {
     if (info.receiver.IsIdxValid())
     {
         ProcessWrite(info);
     }
     else
     {
         if (String.IsNullOrEmpty(info.receiver.char_name))
         {
             Log.Debug("错误的收件人name:" + info.receiver.char_name);
             return;
         }
         Player recv_player = UnitManager.Instance.GetPlayerByName(info.receiver.char_name);
         if (recv_player != null)
         {
             info.receiver.char_idx = recv_player.char_idx;
             ProcessWrite(info);
         }
         else
         {//需要查db
             Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player;
             if (player == null)
             {
                 return;
             }
             SQLCharHandle.QueryCharacterInfoByName(info.receiver.char_name, player.db_id, (ret, data) =>
             {//收件人必须是在同一个数据库
                 if (ret && m_char_idx > 0)
                 {
                     info.receiver.char_idx = data.char_idx;
                     ProcessWrite(info);
                 }
                 else
                 {//告诉客户端发送失败
                     ss2c.MailCommand msg_client = PacketPools.Get(ss2c.msg.MAIL_COMMAND) as ss2c.MailCommand;
                     msg_client.mail_idx         = 0;
                     msg_client.command_type     = eMailCommandType.WRITE_MAIL;
                     msg_client.error_type       = eMailCommandError.RECIPIENT_NOT_FOUND;
                     ServerNetManager.Instance.SendProxy(player.client_uid, msg_client);
                 }
             });
         }
     }
 }
コード例 #5
0
        private void ProcessWrite(MailWriteInfo info)
        {
            Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player;

            if (player == null)
            {
                return;
            }

            if (info.receiver.char_idx == 0)
            {
                Log.Debug("错误的收件人id:" + info.receiver.char_idx);
                return;
            }

            //存db
            MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>();

            mail_info.mail_idx      = IdSharedManager.Instance.GetNextMailIdx();
            mail_info.mail_type     = eMailType.NORMAL;
            mail_info.spid          = 0;//普通邮件,不区分渠道id
            mail_info.receiver_idx  = info.receiver.char_idx;
            mail_info.sender_idx    = m_char_idx;
            mail_info.sender_name   = player.char_name;
            mail_info.send_time     = Time.second_time;
            mail_info.expire_time   = 0;
            mail_info.delivery_time = 0;
            mail_info.flags         = (uint)eMailFlags.NONE;
            mail_info.subject       = info.subject;
            mail_info.bin_mail_content.content_type = eMailContentType.NORMAL;
            mail_info.bin_mail_content.bin_normal_content.content = info.content;
            SQLMailHandle.CreateMail(mail_info, player.db_id);
            CommonObjectPools.Despawn(mail_info);

            //告诉客户端发送成功
            ss2c.MailCommand msg_client = PacketPools.Get(ss2c.msg.MAIL_COMMAND) as ss2c.MailCommand;
            msg_client.mail_idx     = 0;
            msg_client.command_type = eMailCommandType.WRITE_MAIL;
            msg_client.error_type   = eMailCommandError.NONE;
            ServerNetManager.Instance.SendProxy(player.client_uid, msg_client);
        }
コード例 #6
0
        private void ProcessWrite(MailWriteInfo info)
        {
            PlayerCache player = PlayerCacheManager.Instance.GetMember(m_char_idx);

            if (player == null)
            {
                return;
            }

            if (info.receiver_idx <= 0)
            {
                Log.Warning("错误的收件人id:" + info.receiver_idx);
                return;
            }
            //存db
            MailInfo mail_info = CommonObjectPools.Spawn <MailInfo>();

            mail_info.mail_type     = eMailType.NORMAL;
            mail_info.spid          = 0;//普通邮件,不区分渠道id
            mail_info.receiver_idx  = info.receiver_idx;
            mail_info.sender_idx    = m_char_idx;
            mail_info.sender_name   = player.ss_data.char_name;
            mail_info.send_time     = Time.second_time;
            mail_info.expire_time   = 0;
            mail_info.delivery_time = 0;
            mail_info.flags         = (uint)eMailFlags.NONE;
            mail_info.subject       = info.subject;
            mail_info.bin_mail_content.content_type = eMailContentType.NORMAL;
            mail_info.bin_mail_content.bin_normal_content.content = info.content;
            SQLMailHandle.CreateMail(mail_info);
            CommonObjectPools.Despawn(mail_info);

            //返回结果给ss
            db2ss.MailCommand rep_msg = PacketPools.Get(db2ss.msg.MAIL_COMMAND) as db2ss.MailCommand;
            rep_msg.mail_idx     = 0;
            rep_msg.command_type = eMailCommandType.WRITE_MAIL;
            rep_msg.error_type   = eMailCommandError.NONE;
            ForServerNetManager.Instance.Send(player.ss_uid, rep_msg);
        }
コード例 #7
0
 /// <summary>
 /// 写邮件
 /// </summary>
 public void HandleWriteMail(MailWriteInfo info)
 {
     if (info.receiver.IsIdxValid())
     {
         ProcessWrite(info);
     }
     else
     {
         if (String.IsNullOrEmpty(info.receiver.char_name))
         {
             Log.Warning("错误的收件人name:" + info.receiver.char_name);
             return;
         }
         Player recv_player = UnitManager.Instance.GetPlayerByName(info.receiver.char_name);
         if (recv_player != null)
         {
             info.receiver.char_idx = recv_player.char_idx;
             ProcessWrite(info);
         }
         else
         {//需要查db
             Player player = UnitManager.Instance.GetUnitByIdx(m_char_idx) as Player;
             if (player == null)
             {
                 return;
             }
             SQLCharHandle.QueryCharacterInfoByName(info.receiver.char_name, player.db_id, (ret, data) =>
             {
                 if (ret && m_char_idx > 0)
                 {
                     info.receiver.char_idx = data.char_idx;
                     ProcessWrite(info);
                 }
             });
         }
     }
 }
コード例 #8
0
        /// <summary>
        /// 写邮件
        /// </summary>
        public void HandleWriteMail(MailWriteInfo info)
        {
            PlayerCache player = PlayerCacheManager.Instance.GetMember(m_char_idx);

            if (player == null)
            {
                return;
            }

            if (info.receiver_type == MailWriteInfo.eReceiverType.CHARID)
            {
                ProcessWrite(info);
            }
            else if (info.receiver_type == MailWriteInfo.eReceiverType.CHARNAME)
            {
                if (String.IsNullOrEmpty(info.receiver_name))
                {
                    Log.Warning("错误的收件人name:" + info.receiver_name);
                    return;
                }
                PlayerCache recv_player = PlayerCacheManager.Instance.GetMemberByName(info.receiver_name);
                if (recv_player != null)
                {
                    info.receiver_idx = recv_player.char_idx;
                    ProcessWrite(info);
                }
                else
                {//需要查db
                 //TODO
                }
            }
            else
            {
                Log.Warning("错误的收件人type:" + info.receiver_type);
                return;
            }
        }
コード例 #9
0
 /// <summary>
 /// 写邮件
 /// </summary>
 public static void SendWriteMail(MailWriteInfo info)
 {
     c2ss.MailWrite msg = PacketPools.Get(c2ss.msg.MAIL_WRITE) as c2ss.MailWrite;
     msg.info = info;
     ClientNetManager.Instance.Send(msg);
 }