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.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;
|
||||||
|
@ -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() {
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user