/// <summary> /// Initiliazes all the chatrooms based on the <see cref="Dictionary{TKey, TValue}"/> parameter. /// </summary> public void InitializeChatrooms(Dictionary <int, Chatroom> rooms) { foreach (var item in rooms) { Chatroom room = item.Value; if (!Chatrooms.ContainsKey(room.ID)) { Chatrooms.Add(room.ID, room); ChatroomsList.Add(room); } } List <Chatroom> toRemove = new List <Chatroom>(); foreach (var item in Chatrooms) { if (!item.Value.IsPrivate && !rooms.ContainsKey(item.Key)) { toRemove.Add(item.Value); } } foreach (var item in toRemove) { Chatrooms.Remove(item.ID); ChatroomsList.Remove(item); } OnChatroomsChanged(new EventArgs()); }
/// <summary> /// Handles a chatroom voice message. /// </summary> public void HandleMessage(Voice.VoiceMessage message) { if (Chatrooms.ContainsKey(message.ChatroomID)) { Chatroom room = Chatrooms[message.ChatroomID]; room.NewMessage(message); } }
/// <summary> /// Sends a voice message to a certain <see cref="Chatroom"/>. /// </summary> public void SendMessage(int chatroomId, byte[] voice, ConnectionCore connection) { if (Chatrooms.ContainsKey(chatroomId)) { Chatroom room = Chatrooms[chatroomId]; room.SendMessage(connection, voice); } }
/// <summary> /// Sends a message to a certain <see cref="Chatroom"/>. /// </summary> public void SendMessage(int chatroomId, string chatmessage, ConnectionCore connection) { if (Chatrooms.ContainsKey(chatroomId)) { Chatroom room = Chatrooms[chatroomId]; room.SendMessage(connection, chatmessage); } }
/// <summary> /// Removes a chatroom based on the <see cref="Chatroom.ID"/>. /// </summary> public void RemoveChatroom(int chatroomId) { if (Chatrooms.ContainsKey(chatroomId)) { Chatroom room = Chatrooms[chatroomId]; DisconnectChatroom(room); ChatroomsList.Remove(room); Chatrooms.Remove(chatroomId); } }
/// <summary> /// Returns a <see cref="bool"/> value whether the user is in the chatroom. /// </summary> public bool IsInChatroom(int id) { if (Chatrooms.ContainsKey(id)) { Chatroom room = Chatrooms[id]; return(room.IsInChatroom); } return(false); }
public void ChatroomMenu() { Send("What chatroom would you like to join?"); string input = ""; do { input = GetUserInput(ListChatrooms + "\n"); } while (!Chatrooms.ContainsKey(input)); ChangeChatroom(Chatrooms[input]); }
/// <summary> /// Returns a <see cref="Chatroom"/> based on its ID. /// </summary> public Chatroom GetChatroom(int chatroomId) { try { if (Chatrooms.ContainsKey(chatroomId)) { return(Chatrooms[chatroomId]); } else { return(null); } } catch { return(null); } }
/// <summary> /// Joins a chatroom based on <see cref="Chatroom.ID"/>. /// </summary> public void JoinChatroom(int chatRoomId, JoinState state) { if (Chatrooms.ContainsKey(chatRoomId)) { Chatroom room = Chatrooms[chatRoomId]; OnChatroomJoined(new JoinedChatroomEventArgs(room, state)); if (ClientManager.ConnectionCore.ConnectionId != -1 && state == JoinState.JoinChatRoomOk) { ChatroomUser user = new ChatroomUser(ClientManager.ConnectionCore.ConnectionId, ClientManager.ConnectionCore.ConnectionData.Username); // room.ChatRoomUsers.Add(user.ConnectionId, user); room.IsInChatroom = true; } } else { OnChatroomJoined(new JoinedChatroomEventArgs(null, JoinState.JoinChatRoomError)); } }
/// <summary> /// Connects a user to a chatroom and returns a <see cref="JoinState"/>. /// </summary> public JoinState JoinChatroom(int chatRoomId, string password, ConnectionCore connection) { if (Chatrooms.ContainsKey(chatRoomId)) { Chatroom room = Chatrooms[chatRoomId]; if (string.IsNullOrEmpty(room.Password) || password == room.Password || room.Owner == connection.ID) { room.Join(connection); return(JoinState.JoinChatRoomOk); } else { return(JoinState.JoinChatRoomWrongPassword); } } else { return(JoinState.JoinChatRoomError); } }