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; }