private void CalculateBulletHit(BulletMp bullet)
        {
            foreach (var entity in _tickingEntities)
            {
                var player = entity as PlayerMp;
                if (player != null)
                {
                    if (bullet.OwnerGuid == player.Guid)
                    {
                        continue;
                    }

                    var leftUp    = new Vector2(player.Position.X - 5, player.Position.Y - 5);
                    var rightBott = new Vector2(player.Position.X + 5, player.Position.Y + 5);

                    if (bullet.Position.InRange(leftUp, rightBott) &&
                        player.Alive)
                    {
                        player.Hit(bullet.Damage);
                        bullet.Delete();
                        return;
                    }
                }
            }
        }
        private void Protocol_PacketArrived(object sender, TcpCompletedEventArgs e)
        {
            var clientSocket = (GameTcpServerConnection)sender;

            if (e.Error)
            {
                Console.WriteLine($"Server closed connection with client during error: {e.Data}");
                CloseConnectionWithClient(clientSocket);
            }
            else if (e.Data == null)
            {
                Console.WriteLine($"Client {clientSocket.RemoteEndPoint} disconnected.");
                CloseConnectionWithClient(clientSocket);
            }
            else
            {
                var    bytePacket = Packet.Deserialize((byte[])e.Data);
                Packet packet     = bytePacket as Packet;

                if (packet != null)
                {
                    var context = clients.Where(x => x.Key == clientSocket).FirstOrDefault().Value;
                    switch (packet.Type)
                    {
                    case PacketType.PLAYER_INFO:
                        context.Player = new PlayerMp((PlayerShared)packet.Content);
                        PacketProtocol.SendPacket(clientSocket, new Packet
                        {
                            Content = context.Player,
                            Type    = PacketType.PLAYER_INFO
                        });

                        BroadcastPacket(new Packet
                        {
                            Type    = PacketType.MESSAGE_SYSTEM,
                            Content = $"connected>{context.Player.Name}"
                        }, context.Player.Guid);

                        _tickingEntities.Add(context.Player);

                        break;

                    case PacketType.MESSAGE_CHAT:
                        BroadcastPacket(packet, Guid.Empty);
                        break;

                    case PacketType.PLAYER_MOVE:
                        context.Player.AddPos((Vector2)packet.Content);
                        break;

                    case PacketType.BULLET_SHOOT:
                        var bullet = new BulletMp((Vector2)packet.Content, context.Player.Position, context.Player.Guid);
                        _tickingEntities.Add(bullet);
                        break;

                    case PacketType.PLAYER_REVIVE:
                        context.Player.Spawn();
                        break;

                    default:
                        break;
                    }
                }
            }
        }