private JPanel createControlPanel() {
		JPanel controlPanel = new JPanel();

		controlPanel.setBorder(new EmptyBorder(4, 4, 4, 4));
		controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.X_AXIS));

		btnPause = new JButton("Pause");
		btnPause.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if(engine.isBattleRunning()) {
					setPauseResume(ButtonMode.PAUSE);
				} else {
					setPauseResume(ButtonMode.RESUME);
				}
			}
		});
		btnPause.setEnabled(false);
		controlPanel.add(btnPause);
		controlPanel.add(Box.createHorizontalStrut(4));

		btnStop = new JButton("Stop");
		btnStop.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				btnPause.setEnabled(false);
				btnStop.setEnabled(false);
				fpsSlider.setEnabled(false);

				engine.stopCurrentBattle();
			}
		});
		btnStop.setEnabled(false);
		controlPanel.add(btnStop);
		controlPanel.add(Box.createHorizontalStrut(4));

		JLabel lblFps = new JLabel("FPS");
		lblFps.setEnabled(false);
		controlPanel.add(lblFps);

		fpsSlider = new JSlider();
		fpsSlider.setMaximum(100);
		fpsSlider.setEnabled(false);
		fpsSlider.setPaintLabels(true);
		fpsSlider.setSnapToTicks(true);
		fpsSlider.setPaintTicks(true);
		fpsSlider.setMajorTickSpacing(10);
		fpsSlider.setValue(20);
		fpsSlider.setMinorTickSpacing(2);
		fpsSlider.addChangeListener(new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				if(!fpsSlider.getValueIsAdjusting()) {
					BattleRunner battle = engine.getCurrentBattle();
					if(battle != null) {
						battle.setFPS(fpsSlider.getValue());
					}
				}
			}
		});
		controlPanel.add(fpsSlider);

		controlPanel.add(Box.createHorizontalGlue());

		return controlPanel;
	}