Exemple #1
0
        private void OnPlayerLeaveScene(ClientPlayerLeaveScenePacket packet)
        {
            // Destroy corresponding player
            _playerManager.DestroyPlayer(packet.Id);

            Logger.Info(this, $"Player {packet.Id} left scene, destroying player");
        }
Exemple #2
0
        private void OnClientLeaveScene(ushort id, ServerPlayerLeaveScenePacket packet)
        {
            if (!_playerData.TryGetValue(id, out var playerData))
            {
                Logger.Warn(this, $"Received LeaveScene packet from {id}, but player is not in mapping");
                return;
            }

            var sceneName = playerData.CurrentScene;

            if (sceneName.Length == 0)
            {
                Logger.Info(this, $"Received LeaveScene packet from ID {id}, but there was no last scene registered");
                return;
            }

            Logger.Info(this, $"Received LeaveScene packet from ID {id}, last scene: {sceneName}");

            playerData.CurrentScene = "";

            // Create a PlayerLeaveScene packet containing the ID
            // of the player leaving the scene
            var leaveScenePacket = new ClientPlayerLeaveScenePacket {
                Id = id
            };

            leaveScenePacket.CreatePacket();

            foreach (var idPlayerDataPair in _playerData.GetCopy())
            {
                // Skip source player
                if (idPlayerDataPair.Key == id)
                {
                    continue;
                }

                var otherPlayerData = idPlayerDataPair.Value;

                // Send the packet to all clients on the scene that the player left
                // to indicate that this client has left their scene
                if (otherPlayerData.CurrentScene.Equals(sceneName))
                {
                    Logger.Info(this, $"Sending leave scene packet to {idPlayerDataPair.Key}");
                    _netServer.SendTcp(idPlayerDataPair.Key, leaveScenePacket);
                }
            }
        }