Exemple #1
0
        public void AddMemberToRoom(Client roomHost, ref Client memberToAdd)
        {
            Room room;

            lock (_roomListLock)
            {
                room = _roomList.FirstOrDefault(myRoom => myRoom.Host == roomHost);
            }

            if (room == null) return;

            //
            // First, remove the member from his previous room.
            //

            RemoveMemberfromRoom(memberToAdd.Room.Host, memberToAdd);

            //
            // Now add the member to the new room.
            //

            room.Members.Add(memberToAdd);
            memberToAdd.Room = room;

            //
            // Send a message to all the existing members in the room indicating who has joined.
            //

            MessageSender.BroadcastMessage(
                room.Members,
                PacketType.s_UserJoinedRoom,
                memberToAdd.UserInfo,
                memberToAdd);

            //
            // Now send a message to the person who has joined containing the list of room
            // members.
            //

            var friendList = new FriendList();

            foreach (var c in room.Members)
            {
                friendList.Friends.Add(c.UserInfo);
            }

            MessageSender.SendMessage(
                memberToAdd,
                PacketType.s_RoomList,
                friendList);

            //
            // Now tell the joining person who the room host is.
            //

            MessageSender.SendMessage(
                memberToAdd,
                PacketType.s_HostTransfer,
                room.Host.UserInfo);
        }
        /// <summary>
        /// Helper method that creates a sendable URL string from a given list of user data types.
        /// This method takes the fields of each user class and stringifies them together, and then
        /// combines all of the user strings together.
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public static FriendList CreateFriendListFromUserList(IEnumerable<user> users)
        {
            var friendList = new FriendList();

            if (null == users)
            {
                return null;
            }

            foreach (var user in users)
            {
                var friend = GetFriendFromUser(user);

                friendList.Friends.Add(friend);
            }

            return friendList;
        }