internal static void AddFriend(int id1, int id2, NMessageCharInfo info1, NMessageCharInfo info2) { TFriend friend1 = DBService.Instance.Entities.Friends.Where(x => x.FriendID == id2 && x.TCharacterID == id1).FirstOrDefault(); if (friend1 == null) { friend1 = GetTFriend(id1, info2); DBService.Instance.Entities.Friends.Add(friend1); } else { friend1.IsDelete = false; } TFriend friend2 = DBService.Instance.Entities.Friends.Where(x => x.FriendID == id1 && x.TCharacterID == id2).FirstOrDefault(); if (friend2 == null) { friend2 = GetTFriend(id2, info1); DBService.Instance.Entities.Friends.Add(friend2); } else { friend2.IsDelete = false; } }
public static void FriendAddNoisy(int owner, NMessageCharInfo info, Result result, bool isSender) { NetConnection<NetSession> session; if (SessionManager.Instance.GetSession(owner, out session)) { Log.Info($@"OwnerID:{owner} FriendID{info.Id} Reuslt:{result} IsSender:{isSender}"); session.Session.Character.friendManager.SetDirty(); string msg; if (isSender && result == Result.Success) { msg = $"玩家[{info.Name}](UID:{info.Id})接受了你的好友请求"; } else if (isSender && result == Result.Failed) { msg = $"玩家[{info.Name}](UID:{info.Id})拒绝了你的好友请求"; } else if (!isSender && result == Result.Success) { msg = $"已玩家[{info.Name}](UID:{info.Id})成为好友"; } else { msg = $"已拒绝玩家[{info.Name}](UID:{info.Id})的好友请求"; } MessageService.Instance.SendAddFriendResponse(session, result, msg); } }
public static TFriend GetTFriend(int ownerID, NMessageCharInfo friendInfo) { TFriend friend = new TFriend() { FriendID = friendInfo.Id, TCharacterID = ownerID, FriendClass = friendInfo.Class, FriendLevel = friendInfo.Level, FriendName = friendInfo.Name, }; return friend; }
/// <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(); } } }