示例#1
0
        public void KickClient(GameClient clientToKick)
        {
            _connectedClients.KickClient(clientToKick);
            foreach (var netObj in _netObjects.Values.Where(x => x.GameClientId == clientToKick.Id))
            {
                _udpServer.MessageSender.SendDestroyNetObjToOtherClients(clientToKick, netObj.Id);
            }
            NetObj removedNetObj = null;

            _netObjects.Where(x => x.Value.GameClientId == clientToKick.Id).ToList().ForEach(x => _netObjects.Remove(x.Key, out removedNetObj));
            if (removedNetObj == null)
            {
                throw new Exception("Failed to remove netobj");
            }
            _udpServer.MessageSender.SendPlayerDisconnectedToAllClients(clientToKick);
        }