Esempio n. 1
0
        private void OnPlayerDisconnect(ushort id)
        {
            // Always propagate this packet to the NetServer
            _netServer.OnClientDisconnect(id);

            if (!_playerData.TryGetValue(id, out _))
            {
                Logger.Warn(this, $"Player disconnect, but player with ID {id} is not in mapping");
                return;
            }

            // Send a player disconnect packet
            var playerDisconnectPacket = new ClientPlayerDisconnectPacket {
                Id       = id,
                Username = _playerData[id].Username
            };

            foreach (var idScenePair in _playerData.GetCopy())
            {
                if (idScenePair.Key == id)
                {
                    continue;
                }

                _netServer.SendTcp(idScenePair.Key, playerDisconnectPacket.CreatePacket());
            }

            // Now remove the client from the player data mapping
            _playerData.Remove(id);
        }
Esempio n. 2
0
        private void OnPlayerDisconnect(ClientPlayerDisconnectPacket packet)
        {
            Logger.Info(this, $"Received PlayerDisconnect packet for ID: {packet.Id}");

            // Destroy player object
            _playerManager.DestroyPlayer(packet.Id);

            // Destroy map icon
            _mapManager.RemovePlayerIcon(packet.Id);

            UI.UIManager.InfoBox.AddMessage($"Player '{packet.Username}' disconnected from the server");
        }