1
0

Add game network connecting

This commit is contained in:
Victor 2014-03-16 13:52:02 +02:00
parent 480263c78f
commit f466f5ad52

View File

@ -1,50 +1,80 @@
package com.annimon.turrets; package com.annimon.turrets;
import java.awt.Color;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException;
/** /**
* *
* @author aNNiMON * @author aNNiMON
*/ */
public class GameCanvas extends DoubleBufferedCanvas implements NetworkListener { public class GameCanvas extends DoubleBufferedCanvas implements Runnable, NetworkListener {
private final BufferedImage background; private final BufferedImage background;
private final Terrain terrain; private Terrain terrain;
private Turret serverTurret, clientTurret; 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); background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
initBackground(); initBackground();
terrain = new Terrain(Constants.WIDTH); gameStarted = false;
terrain.generate(System.currentTimeMillis());
serverTurret = new Turret(Turret.SERVER, terrain.getFirstBlockHeight(), terrain);
clientTurret = new Turret(Turret.CLIENT, terrain.getLastBlockHeight(), terrain);
} }
@Override @Override
protected void draw(Graphics2D g) { protected void draw(Graphics2D g) {
g.drawImage(background, 0, 0, null); g.drawImage(background, 0, 0, null);
terrain.draw(g); if (gameStarted) {
serverTurret.draw(g); terrain.draw(g);
clientTurret.draw(g); serverTurret.draw(g);
clientTurret.draw(g);
} else {
g.setColor(Color.WHITE);
g.drawString("Please, wait...", Constants.WIDTH - 100, Constants.HEIGHT - 20);
}
} }
@Override @Override
public void onStatusChanged(int status, Object data) { public void onStatusChanged(int status, Object data) {
switch (status) { switch (status) {
case ON_CONNECT: 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; break;
} }
} }
@Override @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() { private void initBackground() {
@ -55,16 +85,19 @@ public class GameCanvas extends DoubleBufferedCanvas implements NetworkListener
@Override @Override
protected void mousePressed(int x, int y) { protected void mousePressed(int x, int y) {
if (!gameStarted) return;
clientTurret.setBarrelParams(x, Constants.HEIGHT - y); clientTurret.setBarrelParams(x, Constants.HEIGHT - y);
} }
@Override @Override
protected void mouseReleased(int x, int y) { protected void mouseReleased(int x, int y) {
if (!gameStarted) return;
clientTurret.shoot(); clientTurret.shoot();
} }
@Override @Override
protected void mouseDragged(int x, int y) { protected void mouseDragged(int x, int y) {
if (!gameStarted) return;
clientTurret.setBarrelParams(x, Constants.HEIGHT - y); clientTurret.setBarrelParams(x, Constants.HEIGHT - y);
} }
} }