Add ability to exit to main menu
This commit is contained in:
parent
eef936e397
commit
7e51abf1df
@ -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) {
|
||||
}
|
||||
@ -81,6 +86,21 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
|
||||
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 boolean keepRunning = true;
|
||||
|
@ -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() {
|
||||
|
@ -27,6 +27,7 @@ public class Main extends JFrame {
|
||||
|
||||
public Main() {
|
||||
super("Turrets");
|
||||
setFocusable(true);
|
||||
setResizable(Constants.RESIZABLE);
|
||||
setLocationByPlatform(true);
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user