Add game network connecting
This commit is contained in:
parent
480263c78f
commit
f466f5ad52
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user