Aura.Msgr.Network.Send.FriendOptionChanged C# (CSharp) Метод

FriendOptionChanged() публичный статический Метод

Updates user's status and nickname for all friends.
public static FriendOptionChanged ( List friends, Aura.Msgr.Database.User user ) : void
friends List
user Aura.Msgr.Database.User
Результат void
		public static void FriendOptionChanged(List<User> friends, User user)
		{
			var packet = new Packet(Op.Msgr.FriendOptionChanged, 0);
			packet.PutInt(user.Id);
			packet.PutString(user.Nickname);
			packet.PutByte((byte)user.Status);

			foreach (var friendUser in friends)
				friendUser.Client.Send(packet);
		}

Usage Example

Пример #1
0
        public void ChangeOptions(MsgrClient client, Packet packet)
        {
            var nickname    = packet.GetString();
            var status      = (ContactStatus)packet.GetByte();
            var chatOptions = (ChatOptions)packet.GetUInt();

            var user = client.User;

            // Check nickname
            if (nickname.Length > 50)
            {
                Log.Warning("User '{0}' tried to use a nickname that's longer than 50 characters.", user.AccountId);
                Send.ChangeOptionsR(client, false);
                return;
            }

            // Check status
            if (!Enum.IsDefined(typeof(ContactStatus), status))
            {
                Log.Warning("User '{0}' tried to use an invalid or unknown status ({1}).", user.AccountId, status);
                Send.ChangeOptionsR(client, false);
                return;
            }

            // Check options
            if (!Enum.IsDefined(typeof(ChatOptions), chatOptions))
            {
                Log.Warning("User '{0}' tried to use a invalid or unknown options ({1}).", user.AccountId, status);
                Send.ChangeOptionsR(client, false);
                return;
            }

            var prevStatus = user.Status;

            // Change options
            user.Nickname    = nickname;
            user.Status      = status;
            user.ChatOptions = chatOptions;

            MsgrServer.Instance.Database.SaveOptions(user);

            Send.ChangeOptionsR(client, true);

            // Update friends
            var friendUsers = MsgrServer.Instance.UserManager.Get(user.GetNormalFriendIds());

            if (friendUsers.Count == 0)
            {
                return;
            }

            // Set offline if prev was not offline, set online if prev was offline,
            // and just update the options if not offline.
            if (prevStatus != ContactStatus.Offline && status == ContactStatus.Offline)
            {
                Send.FriendOffline(friendUsers, user);
            }
            else if (prevStatus == ContactStatus.Offline && status != ContactStatus.Offline)
            {
                Send.FriendOnline(friendUsers, user);
            }
            else if (status != ContactStatus.Offline)
            {
                Send.FriendOptionChanged(friendUsers, user);
            }
        }