Example #1
0
        /// <summary>
        /// Finalize the removal of the player from the network
        /// </summary>
        /// <param name="player">Player to remove</param>
        /// <param name="forced">Was the removal forced or not?</param>
        private void FinalizeRemovePlayer(NetworkingPlayer player, bool forced)
        {
            steamPlayers.Remove(player.SteamID);
            OnPlayerDisconnected(player);

            // TESTING STEAM NETWORKING DISCONNECTION CODE HERE INSTEAD OF IN THE CACHED CLIENT
            if (!SteamNetworking.CloseP2PSessionWithUser(player.SteamID))
            {
                if (player.SteamID != SteamClient.SteamId)
                {
                    Logging.BMSLog.LogWarning("Could not close P2P Session with user: "******"Closed P2PSession with user: " + player.SteamID.Value.ToString());
            }
            // END TEST ZONE

            if (forced)
            {
                ForcedDisconnectingPlayers.Remove(player);
            }
            else
            {
                DisconnectingPlayers.Remove(player);
            }
        }
        private void FinalizeRemovePlayer(NetworkingPlayer player, bool forced)
        {
            OnPlayerDisconnected(player);
            player.TcpClientHandle.Close();
            rawClients.Remove(player.TcpClientHandle);

            if (!forced)
            {
                //让所有事件侦听器知道客户端已经成功断开连接
                // Let all of the event listeners know that the client has successfully disconnected
                if (rawClientDisconnected != null)
                {
                    rawClientDisconnected(player.TcpClientHandle);
                }
                DisconnectingPlayers.Remove(player);
            }
            else
            {
                //让所有的事件监听器知道这是一个强制断开连接
                // Let all of the event listeners know that this was a forced disconnect
                if (forced && rawClientForceClosed != null)
                {
                    rawClientForceClosed(player.TcpClientHandle);
                }
                ForcedDisconnectingPlayers.Remove(player);
            }
        }
Example #3
0
        /// <summary>
        /// A wrapper around calling the playerGuidAssigned event from child classes
        /// </summary>
        /// <param name="player">The player which the guid was assigned to</param>
        /// <param name="rejected">Returns whether the player was rejected during the handling of the event</param>
        protected void OnPlayerGuidAssigned(NetworkingPlayer player, out bool rejected)
        {
            OnPlayerGuidAssigned(player);

            // Return if the player was rejected during the handling of the event.
            rejected = (player.IsDisconnecting || DisconnectingPlayers.Contains(player) ||
                        ForcedDisconnectingPlayers.Contains(player));
        }
Example #4
0
        /// <summary>
        /// A wrapper around calling the playerGuidAssigned event from child classes
        /// </summary>
        /// <param name="player">The player which the guid was assigned to</param>
        protected bool TryPlayerGuidAssignment(NetworkingPlayer player)
        {
            OnPlayerGuidAssigned(player);

            // Return if the player was rejected during the handling of the event.
            return(!player.IsDisconnecting &&
                   !DisconnectingPlayers.Contains(player) &&
                   !ForcedDisconnectingPlayers.Contains(player));
        }
Example #5
0
 /// <summary>
 /// Disconnects a client from this listener
 /// </summary>
 /// <param name="client">The target client to be disconnected</param>
 public void Disconnect(NetworkingPlayer player, bool forced)
 {
     if (forced)
     {
         DisconnectingPlayers.Add(player);
     }
     else
     {
         ForcedDisconnectingPlayers.Add(player);
     }
 }
Example #6
0
        // 删除玩家
        private void FinalizeRemovePlayer(NetworkingPlayer player, bool forced)
        {
            udpPlayers.Remove(player.Ip + "+" + player.Port);
            OnPlayerDisconnected(player);

            if (forced)
            {
                ForcedDisconnectingPlayers.Remove(player);
            }
            else
            {
                DisconnectingPlayers.Remove(player);
            }
        }
Example #7
0
        /// <summary>
        /// Finalize the removal of the player from the network
        /// </summary>
        /// <param name="player">Player to remove</param>
        /// <param name="forced">Was the removal forced or not?</param>
        private void FinalizeRemovePlayer(NetworkingPlayer player, bool forced)
        {
            steamPlayers.Remove(player.SteamID);
            OnPlayerDisconnected(player);

            if (forced)
            {
                ForcedDisconnectingPlayers.Remove(player);
            }
            else
            {
                DisconnectingPlayers.Remove(player);
            }
        }
Example #8
0
        private void FinalizeRemovePlayer(NetworkingPlayer player, bool forced)
        {
            Logging.BMSLog.LogFormat("SteamP2PServer:FinalizeRemovePlayer({0}:{1}, forced={2}", player.NetworkId, player.SteamID.m_SteamID, forced);
            steamPlayers.Remove(player.SteamID);
            OnPlayerDisconnected(player);

            if (forced)
            {
                ForcedDisconnectingPlayers.Remove(player);
            }
            else
            {
                DisconnectingPlayers.Remove(player);
            }
        }
Example #9
0
        /// <summary>
        /// Disconnects a client
        /// </summary>
        /// <param name="client">The target client to be disconnected</param>
        public void Disconnect(NetworkingPlayer player, bool forced)
        {
            if (player.IsDisconnecting || DisconnectingPlayers.Contains(player) || ForcedDisconnectingPlayers.Contains(player))
            {
                return;
            }

            if (!forced)
            {
                DisconnectingPlayers.Add(player);
            }
            else
            {
                ForcedDisconnectingPlayers.Add(player);
            }
        }
 /// <summary>
 /// Disconnects a client from this listener
 /// </summary>
 /// <param name="client">The target client to be disconnected</param>
 public void Disconnect(NetworkingPlayer player, bool forced)
 {
     if (!forced)
     {
         if (!DisconnectingPlayers.Contains(player))
         {
             DisconnectingPlayers.Add(player);
         }
     }
     else
     {
         if (!ForcedDisconnectingPlayers.Contains(player))
         {
             ForcedDisconnectingPlayers.Add(player);
         }
     }
 }
Example #11
0
        /// <summary>
        /// Goes through all of the pending disconnect players and disconnects them
        /// Pending disconnects are always forced
        /// </summary>
        protected void DisconnectPending(Action <NetworkingPlayer, bool> disconnectMethod)
        {
            if (DisconnectingPlayers.Count == 0 && ForcedDisconnectingPlayers.Count == 0)
            {
                return;
            }

            lock (Players)
            {
                for (int i = DisconnectingPlayers.Count - 1; i >= 0; --i)
                {
                    disconnectMethod(DisconnectingPlayers[i], false);
                }

                for (int i = ForcedDisconnectingPlayers.Count - 1; i >= 0; --i)
                {
                    disconnectMethod(ForcedDisconnectingPlayers[i], true);
                }

                DisconnectingPlayers.Clear();
                ForcedDisconnectingPlayers.Clear();
            }
        }