Sync moves in network game
This commit is contained in:
parent
061c7647c3
commit
63f76b6151
@ -19,7 +19,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
|
|||||||
private final boolean serverInstance;
|
private final boolean serverInstance;
|
||||||
private SocketHelper socketHelper;
|
private SocketHelper socketHelper;
|
||||||
|
|
||||||
private boolean gameStarted;
|
private boolean gameStarted, serverMove;
|
||||||
|
|
||||||
public GameCanvas(boolean serverInstance) {
|
public GameCanvas(boolean serverInstance) {
|
||||||
this.serverInstance = serverInstance;
|
this.serverInstance = serverInstance;
|
||||||
@ -56,6 +56,10 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
|
|||||||
socketHelper.sendSeed(seed);
|
socketHelper.sendSeed(seed);
|
||||||
startGame(seed);
|
startGame(seed);
|
||||||
break;
|
break;
|
||||||
|
case ON_MOVE_RECEIVED:
|
||||||
|
clientTurret.setTurretInfo((TurretInfo) data);
|
||||||
|
clientTurret.shoot(clientTurretListener);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +68,10 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
|
|||||||
case ON_SEED_RECEIVED:
|
case ON_SEED_RECEIVED:
|
||||||
startGame((long) data);
|
startGame((long) data);
|
||||||
break;
|
break;
|
||||||
|
case ON_MOVE_RECEIVED:
|
||||||
|
serverTurret.setTurretInfo((TurretInfo) data);
|
||||||
|
serverTurret.shoot(serverTurretListener);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,23 +108,52 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
|
|||||||
clientTurret = new Turret(Turret.CLIENT, terrain.getLastBlockHeight(), terrain);
|
clientTurret = new Turret(Turret.CLIENT, terrain.getLastBlockHeight(), terrain);
|
||||||
|
|
||||||
gameStarted = true;
|
gameStarted = true;
|
||||||
|
serverMove = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean allowMove() {
|
||||||
|
return (gameStarted && !(serverInstance ^ serverMove));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void mousePressed(int x, int y) {
|
protected void mousePressed(int x, int y) {
|
||||||
if (!gameStarted) return;
|
if (!allowMove()) return;
|
||||||
clientTurret.setBarrelParams(x, Constants.HEIGHT - y);
|
if (serverInstance) serverTurret.setBarrelParams(x, Constants.HEIGHT - y);
|
||||||
|
else 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;
|
if (!allowMove()) return;
|
||||||
clientTurret.shoot();
|
if (serverInstance) {
|
||||||
|
socketHelper.sendMove(serverTurret.getTurretInfo());
|
||||||
|
serverTurret.shoot(serverTurretListener);
|
||||||
|
} else {
|
||||||
|
socketHelper.sendMove(clientTurret.getTurretInfo());
|
||||||
|
clientTurret.shoot(clientTurretListener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void mouseDragged(int x, int y) {
|
protected void mouseDragged(int x, int y) {
|
||||||
if (!gameStarted) return;
|
if (!allowMove()) return;
|
||||||
clientTurret.setBarrelParams(x, Constants.HEIGHT - y);
|
if (serverInstance) serverTurret.setBarrelParams(x, Constants.HEIGHT - y);
|
||||||
|
else clientTurret.setBarrelParams(x, Constants.HEIGHT - y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Turret.TurretListener serverTurretListener = new Turret.TurretListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shootComplete(int x) {
|
||||||
|
serverMove = !serverMove;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private Turret.TurretListener clientTurretListener = new Turret.TurretListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shootComplete(int x) {
|
||||||
|
serverMove = !serverMove;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user