1
0

Make GameCanvas abstract

This commit is contained in:
Victor 2014-03-15 16:27:21 +02:00
parent 5e613206f6
commit 697f7729cf

View File

@ -9,12 +9,11 @@ import java.awt.image.BufferedImage;
* *
* @author aNNiMON * @author aNNiMON
*/ */
public class GameCanvas extends Canvas { public abstract class GameCanvas extends Canvas {
private final Graphics2D G; private final Graphics2D G;
private final BufferedImage buffer; private final BufferedImage buffer;
private final Terrain terrain; private final DrawingThread thread;
private BufferedImage background;
public GameCanvas() { public GameCanvas() {
setSize(Constants.WIDTH, Constants.HEIGHT); setSize(Constants.WIDTH, Constants.HEIGHT);
@ -22,18 +21,21 @@ public class GameCanvas extends Canvas {
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();
thread = new DrawingThread();
initBackground(); }
terrain = new Terrain(Constants.WIDTH);
terrain.generate(System.currentTimeMillis()); public void start() {
thread.start();
new DrawingThread().start(); }
public void stop() {
thread.keepRunning = false;
} }
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
G.drawImage(background, 0, 0, null); draw(G);
terrain.draw(G); G.dispose();
g.drawImage(buffer, 0, 0, null); g.drawImage(buffer, 0, 0, null);
} }
@ -42,20 +44,18 @@ public class GameCanvas extends Canvas {
paint(g); paint(g);
} }
private void initBackground() { protected abstract void draw(Graphics2D g);
background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = background.createGraphics(); protected abstract void update();
new Background().draw(g);
g.dispose();
}
private class DrawingThread extends Thread { private final class DrawingThread extends Thread {
private boolean keepRunning = true; private boolean keepRunning = true;
@Override @Override
public void run() { public void run() {
while (keepRunning) { while (keepRunning) {
update();
try { try {
Thread.sleep(100); Thread.sleep(100);
} catch (InterruptedException ex) {} } catch (InterruptedException ex) {}