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,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);
}
}