Exemplo n.º 1
0
        public async ValueTask DisconnectAsync(DisconnectReason reason, string?message = null)
        {
            if (!Connection.IsConnected)
            {
                return;
            }

            using var writer = MessageWriter.Get();
            MessageDisconnect.Serialize(writer, true, reason, message);

            await Connection.DisconnectAsync(message ?? reason.ToString(), writer);
        }
        public override void Run(params object[] args)
        {
            var id       = (uint)args[0];
            var netEvent = (Event)args[1];

            var peersToSend = Server.clients.FindAll(x => x.Status == ClientStatus.InGame && x.ID != id).Select(x => x.Peer).ToArray();
            var message     = new MessageDisconnect(netEvent.Peer.ID);

            Network.Broadcast(ServerPacketType.ClientDisconnected, message, peersToSend);

            netEvent.Peer.Disconnect(netEvent.Peer.ID);
            //Console.Log($"Client '{netEvent.Peer.ID}' disconnected");
        }