internal IPromise <Nothing> NotifyLobbyAboutLeavingPlayer(PlayerHandle player, Lobby lobby) { PlayerHandle[] lobbyPlayers = new PlayerHandle[] { }; lock (this.manager) { lobbyPlayers = lobby.Players.ToArray(); } if (lobbyPlayers.Count() > 0) { return(new CombinedPromise <Nothing>(lobbyPlayers.Select(b => b.Stream.Write(Responses.PlayerLeave(player))))); } else { return(Nothing.Resolved()); } }
internal IPromise <Nothing> CloseRoom(UserRoom room) { PlayerHandle[] lobbyPlayers = new PlayerHandle[] { }; lock (this.server) { var lobby = this.server.World.FindLobby(room.Identifier); if (lobby != null) { lobbyPlayers = lobby.Players.ToArray(); } this.server.World.RemoveUserRoom(room.Identifier); } if (lobbyPlayers.Count() > 0) { return(new CombinedPromise <Nothing>(lobbyPlayers.Select(a => a.Stream.Write(Responses.UserRoomClosed(room))))); } else { return(Nothing.Resolved()); } }