/// <summary> /// Removes a user from the list and adds a DisconnectEvent to handle /// the notification to other users within this room. /// </summary> /// <param name="user">User to remove.</param> public void RemoveUser(User user) { if (user != null && users.Contains(user)) { users.Remove(user); // create the DisconnectEvent and add it to this room's list. DispatchEvent(new Event(user, new Property("disconnect", "true", false))); } }
/// <summary> /// Adds a new user to the room. /// </summary> /// <param name="user">User to add.</param> public void AddUser(User user) { if (!users.Contains(user)) { users.Add(user); user.Room = this; // clear optional events of a previous room user.Events.Clear(); } }
/// <summary> /// Retrieves the User object that represents myself. /// </summary> /// <param name="context">The current HttpContext.</param> /// <returns>My User instance.</returns> public User GetMyUser(HttpContext context) { // first check if a User is known for the current request User user = context.Items["Multiplayer.User"] as User; if (user != null) return user; // for multiple users per session, check user based on id if (MultipleUsersPerSession) { // check if an id was passed in the request string id = GetInput(context)["id"]; if (!String.IsNullOrEmpty(id)) { user = context.Session["Multiplayer.User." + id] as User; if (user == null) throw new Exception("User id " + id + " was not found in your session."); } if (user == null) { user = new User(); context.Session["Multiplayer.User." + user.Id] = user; } } // if only 1 user per session is allowed else { user = context.Session["Multiplayer.User"] as User; if (user == null) context.Session["Multiplayer.User"] = user = new User(); } // store the user for this request context.Items["Multiplayer.User"] = user; return user; }
/// <summary> /// Returns true if the requested User is currently present in this room. /// </summary> /// <param name="user">User to check.</param> /// <returns>True if the requested User is currently present in this room.</returns> public bool ContainsUser(User user) { return users.Contains(user); }
/// <summary> /// Creates a new property change Event instance for the give User /// and the given Property. /// </summary> /// <param name="user"></param> /// <param name="property"></param> public Event(User user, Property property) { this.user = user; this.property = property; }