Beispiel #1
0
        internal IPromise <Nothing> ExpellAll(UserRoom userRoom)
        {
            Log.Debug("Expelling everyone from user room {identifier}", userRoom.Identifier);
            PlayerHandle[] lobbyPlayers = new PlayerHandle[] { };

            lock (this.server)
            {
                var lobby = this.server.World.FindLobby(userRoom.Identifier);
                if (lobby != null)
                {
                    lobbyPlayers = lobby.Players.ToArray();
                }
            }

            return(new CombinedPromise <Nothing>(lobbyPlayers.Select(a => a.Stream.Write(Responses.UserRoomClosed(userRoom)))));
        }
Beispiel #2
0
        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());
            }
        }
Beispiel #3
0
        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());
            }
        }