public GamePanel(final Client client) {
		this.client = client;

		addComponentListener(new ComponentAdapter() {
			@Override
			public void componentShown(ComponentEvent event) {
				requestFocusInWindow();
			}
		});
		addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent event) {
				System.out.println(KeyEvent.getKeyText(event.getKeyCode()));
				//double shooterAngleDelta = Math.PI / 10;
				switch (event.getKeyCode()) {
				case KeyEvent.VK_SPACE:
					//game.getPlayer1().setShotsRemaining(20);
					//game.getPlayer2().setShotsRemaining(20);
					break;
				case KeyEvent.VK_A:
					tab = true;
					break;
				case KeyEvent.VK_S:
					//game.getPlayer1().setShooterAngleDelta(shooterAngleDelta);
					break;
				case KeyEvent.VK_W:
					//game.getPlayer1().setShooterAngleDelta(-shooterAngleDelta);
					break;
				case KeyEvent.VK_LEFT:
					//game.getPlayer2().shoot();
					break;
				case KeyEvent.VK_DOWN:
					//game.getPlayer2().setShooterAngleDelta(-shooterAngleDelta);
					break;
				case KeyEvent.VK_UP:
					//game.getPlayer2().setShooterAngleDelta(shooterAngleDelta);
					break;
				}
			}

			@Override
			public void keyReleased(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_A) {
					tab = false;
				}
			}
		});
		MouseAdapter mouseListener = new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				shooting = true;
			}

			@Override
			public void mouseDragged(MouseEvent e) {
				setCursor(e.getPoint());
			}

			@Override
			public void mouseMoved(MouseEvent e) {
				setCursor(e.getPoint());
			}

			@Override
			public void mouseReleased(MouseEvent e) {
				shooting = false;
			}
		};
		addMouseListener(mouseListener);
		addMouseMotionListener(mouseListener);
		setDoubleBuffered(true);
	}