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.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
@ -12,7 +14,7 @@ import java.awt.image.BufferedImage;
*
* @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 BufferedImage buffer;
@ -24,6 +26,7 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
addMouseListener(DoubleBufferedCanvas.this);
addMouseMotionListener(DoubleBufferedCanvas.this);
addKeyListener(DoubleBufferedCanvas.this);
buffer = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
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 onExit();
@Override
public void mouseClicked(MouseEvent e) {
}
@ -80,6 +85,21 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
@Override
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 {

View File

@ -177,6 +177,17 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
private void finishGame(boolean instanceWin) {
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() {

View File

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

View File

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