From f466f5ad52662edf1bc1a2164aff041972900f64 Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 16 Mar 2014 13:52:02 +0200 Subject: [PATCH] Add game network connecting --- src/com/annimon/turrets/GameCanvas.java | 65 +++++++++++++++++++------ 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/src/com/annimon/turrets/GameCanvas.java b/src/com/annimon/turrets/GameCanvas.java index a9f81d6..61d7b80 100644 --- a/src/com/annimon/turrets/GameCanvas.java +++ b/src/com/annimon/turrets/GameCanvas.java @@ -1,52 +1,82 @@ package com.annimon.turrets; +import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; +import java.io.IOException; /** * * @author aNNiMON */ -public class GameCanvas extends DoubleBufferedCanvas implements NetworkListener { +public class GameCanvas extends DoubleBufferedCanvas implements Runnable, NetworkListener { private final BufferedImage background; - private final Terrain terrain; + private Terrain terrain; private Turret serverTurret, clientTurret; - public GameCanvas() { + private final boolean serverInstance; + private SocketHelper socketHelper; + + private boolean gameStarted; + + public GameCanvas(boolean serverInstance) { + this.serverInstance = serverInstance; + background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB); initBackground(); - terrain = new Terrain(Constants.WIDTH); - terrain.generate(System.currentTimeMillis()); - - serverTurret = new Turret(Turret.SERVER, terrain.getFirstBlockHeight(), terrain); - clientTurret = new Turret(Turret.CLIENT, terrain.getLastBlockHeight(), terrain); + gameStarted = false; } @Override protected void draw(Graphics2D g) { g.drawImage(background, 0, 0, null); - terrain.draw(g); - serverTurret.draw(g); - clientTurret.draw(g); + if (gameStarted) { + terrain.draw(g); + serverTurret.draw(g); + clientTurret.draw(g); + } else { + g.setColor(Color.WHITE); + g.drawString("Please, wait...", Constants.WIDTH - 100, Constants.HEIGHT - 20); + } } @Override public void onStatusChanged(int status, Object data) { switch (status) { case ON_CONNECT: - System.out.println("connect!"); + gameStarted = true; + + terrain = new Terrain(Constants.WIDTH); + terrain.generate(System.currentTimeMillis()); + + serverTurret = new Turret(Turret.SERVER, terrain.getFirstBlockHeight(), terrain); + clientTurret = new Turret(Turret.CLIENT, terrain.getLastBlockHeight(), terrain); break; } } - + @Override - protected void update() { - + public void run() { + initNetwork(); } - + + private void initNetwork() { + try { + if (serverInstance) { + GameServer server = new GameServer(this); + socketHelper = server.getHelper(); + } else { + GameClient client = new GameClient("localhost", this); + socketHelper = client.getHelper(); + } + socketHelper.start(); + } catch (IOException ex) { + } + } + private void initBackground() { final Graphics g = background.createGraphics(); new Background().draw(g); @@ -55,16 +85,19 @@ public class GameCanvas extends DoubleBufferedCanvas implements NetworkListener @Override protected void mousePressed(int x, int y) { + if (!gameStarted) return; clientTurret.setBarrelParams(x, Constants.HEIGHT - y); } @Override protected void mouseReleased(int x, int y) { + if (!gameStarted) return; clientTurret.shoot(); } @Override protected void mouseDragged(int x, int y) { + if (!gameStarted) return; clientTurret.setBarrelParams(x, Constants.HEIGHT - y); } }