1
0

Fix end game processing

This commit is contained in:
Victor 2014-03-23 18:17:54 +02:00
parent 97f69545e7
commit 466b88fab7

View File

@ -34,8 +34,8 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
private final boolean serverInstance; private final boolean serverInstance;
private SocketHelper socketHelper; private SocketHelper socketHelper;
private int roundWinCount, winState;
private boolean gameStarted, serverMove; private boolean gameStarted, serverMove;
private int serverWinCount, clientWinCount, winState;
public GameCanvas(boolean serverInstance) { public GameCanvas(boolean serverInstance) {
this.serverInstance = serverInstance; this.serverInstance = serverInstance;
@ -148,7 +148,8 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
gameStarted = true; gameStarted = true;
serverMove = true; serverMove = true;
roundWinCount = 0; serverWinCount = 0;
clientWinCount = 0;
winState = NOTHING; winState = NOTHING;
} }
@ -166,11 +167,27 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
} }
private void finishRound(boolean serverWinRound) { private void finishRound(boolean serverWinRound) {
if (serverInstance && serverWinRound) roundWinCount++; if (serverWinRound) serverWinCount++;
else if (!serverInstance && !serverWinRound) roundWinCount--; else clientWinCount++;
if (roundWinCount == Constants.MAX_ROUNDS) finishGame(true); final boolean serverWin = (serverWinCount == Constants.MAX_ROUNDS);
else if (roundWinCount == -Constants.MAX_ROUNDS) finishGame(false); final boolean clientWin = (clientWinCount == Constants.MAX_ROUNDS);
if (serverWin || clientWin) {
// Show winners.
finishGame( (serverWin && serverInstance) || (clientWin && !serverInstance) );
} else if (serverInstance) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) { }
long seed = System.currentTimeMillis();
newRound(seed);
socketHelper.sendNewRoundSeed(seed);
}
System.out.println(serverWinCount + " " + clientWinCount);
if (serverWinCount == Constants.MAX_ROUNDS) finishGame(true);
else if (serverWinCount == -Constants.MAX_ROUNDS) finishGame(false);
else { else {
if (serverInstance) { if (serverInstance) {
try { try {