public void gameUpdated(GameUpdateType type)
	{
		// find our super parent frame -- needed for dialogs
		Component c = this;
		while (null != c.getParent())
			c = c.getParent();

		switch (type)
		{
		case GAMEOVER:
			if(!is_recursive)
			{
				fast = false;
				controlPanel.play.setEnabled(false);
				controlPanel.step.setEnabled(false);
				controlPanel.pause.setEnabled(false);
				controlPanel.stop.setEnabled(false);
				controlPanel.begin.setEnabled(true);
				controlPanel.tournament.setEnabled(true);
				configPanel.setEnabled(true);
				int caught = engine.getBoard().mosquitosCaught;
				int total = engine.getConfig().getNumMosquitos();
				double percent = 100.0*caught/total;
				String s = "Caught " + percent + "% at t=" + (engine.getCurrentRound()-1) + "; power used=" + engine.getBoard().powerUsed;
				JOptionPane.showMessageDialog((Frame) c, s, "Game Over", JOptionPane.INFORMATION_MESSAGE);
			}
			break;
		case MOVEPROCESSED:
			controlPanel.roundText.setText("" + engine.getCurrentRound());
			boardFrame.round.setText("Round: " + engine.getCurrentRound());
			boardFrame.bp.repaint();
			boardPanel.repaint();
			configPanel.updateScore(engine.getBoard().mosquitosCaught);
//			configPanel.updateScores(engine.getScores());
			break;
		case STARTING:
			controlPanel.roundText.setText("0");
			break;
		case MOUSEMOVED:
			configPanel.setMouseCoords(BoardPanel.MouseCoords);
		case REPAINT:
			boardFrame.bp.repaint();
			boardPanel.repaint();
		default:
			// nothing.
		}
	}