Пример #1
0
        /// <summary>
        /// 消息回复响应
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="message"></param>
        private void OnMessageReply(NetConnection <NetSession> sender, MessageReplyRequest message)
        {
            sender.Session.Response.messageReplyResponse = new MessageReplyResponse();
            MessageManager messageManager = sender.Session.Character.messageManager;
            NMessageInfo   nMessageInfo;

            if (!messageManager.HasManager(message.Id, out nMessageInfo, message.Type))
            {
                sender.Session.Response.messageReplyResponse.Errormsg = "找不到消息";
                sender.Session.Response.messageReplyResponse.Result   = Result.Failed;
                sender.SendResponse();
                return;
            }
            int accept = sender.Session.Character.Id;  //message的接收者
            int send   = nMessageInfo.FromInfo.Id;
            NMessageCharInfo acceptInfo = MessageManager.GetMessageCharInfo(accept);
            NMessageCharInfo sendInfo   = MessageManager.GetMessageCharInfo(send);

            if (nMessageInfo.Type == MessageType.Friend)
            {
                if (message.Reply == MessageReply.Accept)
                {
                    if (FriendManager.HasFriend(accept, send) || FriendManager.HasFriend(send, accept))
                    {
                        sender.Session.Response.messageReplyResponse.Errormsg = "已存在的好友";
                        sender.Session.Response.messageReplyResponse.Result   = Result.Failed;
                        sender.SendResponse();
                        return;
                    }

                    FriendManager.AddFriend(accept, send, acceptInfo, sendInfo);
                    messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2);
                    sender.Session.Response.messageReplyResponse.Result = Result.Success;
                    sender.SendResponse();
                    FriendManager.FriendAddNoisy(send, acceptInfo, Result.Success, true);//添加好友成功
                    FriendManager.FriendAddNoisy(accept, sendInfo, Result.Success, false);
                    return;
                }
                else if (message.Reply == MessageReply.Refuse)
                {
                    messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2);
                    sender.Session.Response.messageReplyResponse.Result = Result.Success;
                    sender.SendResponse();
                    FriendManager.FriendAddNoisy(send, acceptInfo, Result.Failed, true);
                    FriendManager.FriendAddNoisy(accept, sendInfo, Result.Failed, false);
                    return;
                }
            }
            else if (nMessageInfo.Type == MessageType.Mail)
            {
                //TODO:邮件接受
            }
            else if (nMessageInfo.Type == MessageType.Global)
            {
                if (message.Reply == MessageReply.Accept && nMessageInfo.Status == 0)
                {
                    foreach (var item in nMessageInfo.Items)
                    {
                        sender.Session.Character.itemManager.AddItem(item.Id, item.Count);
                    }
                    if (nMessageInfo.Gold > 0)
                    {
                        sender.Session.Character.Gold += nMessageInfo.Gold;
                    }
                    messageManager.SetMessageState(message.Id, nMessageInfo.Type, 1);
                    DBService.Instance.Save(false);
                    sender.Session.Response.messageReplyResponse.Result = Result.Success;
                    sender.SendResponse();
                }
                else if (message.Reply == MessageReply.Delete && nMessageInfo.Status == 1)
                {
                    messageManager.SetMessageState(message.Id, nMessageInfo.Type, 2);
                    DBService.Instance.Save(false);
                    sender.Session.Response.messageReplyResponse.Result = Result.Success;
                    sender.SendResponse();
                }
            }
        }