Aura.Msgr.Network.Send.FriendConfirm C# (CSharp) Method

FriendConfirm() public static method

Sends live invitation from friend to user.
public static FriendConfirm ( Aura.Msgr.Database.User user, Aura.Msgr.Database.User friend ) : void
user Aura.Msgr.Database.User
friend Aura.Msgr.Database.User
return void
		public static void FriendConfirm(User user, User friend)
		{
			var packet = new Packet(Op.Msgr.FriendConfirm, 0);

			packet.PutInt(friend.Id);
			packet.PutString(friend.Name);
			packet.PutString(friend.Server);
			packet.PutString(friend.FullName);

			user.Client.Send(packet);
		}

Usage Example

コード例 #1
0
ファイル: MsgrHandlers.cs プロジェクト: anjhony6778/aura
        public void FriendInvite(MsgrClient client, Packet packet)
        {
            var characterName = packet.GetString();
            var serverName    = packet.GetString();

            // Get user
            var friend = MsgrServer.Instance.Database.GetFriendFromUser(characterName, serverName);

            if (friend == null)
            {
                Send.FriendInviteR(client, FriendInviteResult.UserNotFound);
                return;
            }

            // Check account
            if (friend.AccountId == client.User.AccountId)
            {
                Send.FriendInviteR(client, FriendInviteResult.OwnAccount);
                return;
            }

            // Check blacklist, don't let people add someone who blacklisted them
            if (MsgrServer.Instance.Database.IsBlacklisted(friend.Id, client.User.Id))
            {
                Send.FriendInviteR(client, FriendInviteResult.UnknownError);
                return;
            }

            // Check existing friends
            if (client.User.Friends.Exists(a => a.Id == friend.Id))
            {
                Send.FriendInviteR(client, FriendInviteResult.AlreadyFriends);
                return;
            }

            // Check max friends
            var max = MsgrServer.Instance.Conf.Msgr.MaxFriends;

            if (max != 0 && client.User.Friends.Count >= max)
            {
                Send.FriendInviteR(client, FriendInviteResult.MaxReached);
                return;
            }

            // Check friend's max friends
            var count = MsgrServer.Instance.Database.CountFriends(friend.Id);

            if (max != 0 && count >= max)
            {
                Send.FriendInviteR(client, FriendInviteResult.UserMaxReached);
                return;
            }

            friend.FriendshipStatus = FriendshipStatus.Inviting;

            // Add
            client.User.Friends.Add(friend);
            MsgrServer.Instance.Database.InviteFriend(client.User.Id, friend.Id);

            Send.FriendInviteR(client, FriendInviteResult.Success, friend);

            // Notify friend
            var friendUser = MsgrServer.Instance.UserManager.Get(friend.Id);

            if (friendUser != null)
            {
                // Get user as friend object to add to friend's friends,
                // otherwise the relation check in the live answer will fail.
                // TODO: I hate this, the current Friend concept sucks,
                //   they're not even *really* needed... remove them.
                var userAsFriend = MsgrServer.Instance.Database.GetFriendFromUser(client.User.Name, client.User.Server);
                if (userAsFriend == null)
                {
                    Log.Error("FriendInvite: Failed to query user as friend for new friend's friends. Friends friends friends.");
                }
                else
                {
                    userAsFriend.FriendshipStatus = FriendshipStatus.Invited;
                    friendUser.Friends.Add(userAsFriend);
                    Send.FriendConfirm(friendUser, client.User);
                }
            }
        }