1
0

Add ability to exit to main menu

This commit is contained in:
Victor 2014-03-22 21:46:39 +02:00
parent eef936e397
commit 7e51abf1df
4 changed files with 34 additions and 1 deletions

View File

@ -3,6 +3,8 @@ package com.annimon.turrets;
import java.awt.Canvas; import java.awt.Canvas;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
@ -12,7 +14,7 @@ import java.awt.image.BufferedImage;
* *
* @author aNNiMON * @author aNNiMON
*/ */
public abstract class DoubleBufferedCanvas extends Canvas implements MouseListener, MouseMotionListener { public abstract class DoubleBufferedCanvas extends Canvas implements MouseListener, MouseMotionListener, KeyListener {
private final Graphics2D G; private final Graphics2D G;
private final BufferedImage buffer; private final BufferedImage buffer;
@ -24,6 +26,7 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
addMouseListener(DoubleBufferedCanvas.this); addMouseListener(DoubleBufferedCanvas.this);
addMouseMotionListener(DoubleBufferedCanvas.this); addMouseMotionListener(DoubleBufferedCanvas.this);
addKeyListener(DoubleBufferedCanvas.this);
buffer = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB); buffer = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
G = buffer.createGraphics(); G = buffer.createGraphics();
@ -50,6 +53,8 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
protected abstract void mouseDragged(int x, int y); protected abstract void mouseDragged(int x, int y);
protected abstract void onExit();
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
} }
@ -81,6 +86,21 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
public void mouseMoved(MouseEvent e) { public void mouseMoved(MouseEvent e) {
} }
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
onExit();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
private final class DrawingThread extends Thread { private final class DrawingThread extends Thread {
private boolean keepRunning = true; private boolean keepRunning = true;

View File

@ -177,6 +177,17 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
private void finishGame(boolean instanceWin) { private void finishGame(boolean instanceWin) {
winState = (instanceWin) ? WIN : LOOSE; winState = (instanceWin) ? WIN : LOOSE;
gameStarted = false;
}
@Override
protected void onExit() {
if (socketHelper != null) {
try {
socketHelper.close();
} catch (IOException ex) { }
}
Main.getInstance().switchLayout(Main.getInstance().getMainMenu());
} }
private boolean allowMove() { private boolean allowMove() {

View File

@ -27,6 +27,7 @@ public class Main extends JFrame {
public Main() { public Main() {
super("Turrets"); super("Turrets");
setFocusable(true);
setResizable(Constants.RESIZABLE); setResizable(Constants.RESIZABLE);
setLocationByPlatform(true); setLocationByPlatform(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); setDefaultCloseOperation(EXIT_ON_CLOSE);

View File

@ -71,6 +71,7 @@ public class MenuPanel extends JPanel {
switch (index) { switch (index) {
case 0: // Create server case 0: // Create server
case 1: // Join client case 1: // Join client
menuList.removeSelectionInterval(0, 1);
GameCanvas canvas = new GameCanvas(index == 0); GameCanvas canvas = new GameCanvas(index == 0);
Main.getInstance().switchLayout(canvas); Main.getInstance().switchLayout(canvas);
new Thread(canvas).start(); new Thread(canvas).start();