mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
fast server connection
This commit is contained in:
@@ -146,7 +146,7 @@ public final class ConnectedLayer extends Layer {
|
|||||||
.listen(NetworkEvents.GameMatchResponse.class, e -> {
|
.listen(NetworkEvents.GameMatchResponse.class, e -> {
|
||||||
if (e.clientId() == this.clientId) {
|
if (e.clientId() == this.clientId) {
|
||||||
pollTimer.cancel();
|
pollTimer.cancel();
|
||||||
App.activate(new TicTacToeLayer(information, this.clientId));
|
App.activate(new TicTacToeLayer(information, this.clientId, e));
|
||||||
}
|
}
|
||||||
}, false).postEvent();
|
}, false).postEvent();
|
||||||
// ^
|
// ^
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ public final class TicTacToeLayer extends Layer {
|
|||||||
private final BlockingQueue<Game.Move> playerMoveQueue = new LinkedBlockingQueue<>();
|
private final BlockingQueue<Game.Move> playerMoveQueue = new LinkedBlockingQueue<>();
|
||||||
|
|
||||||
// Todo: set these from the server
|
// Todo: set these from the server
|
||||||
private char currentPlayerMove = Game.EMPTY;
|
|
||||||
private String player2Name = "";
|
private String player2Name = "";
|
||||||
|
|
||||||
final AtomicBoolean firstPlayerIsMe = new AtomicBoolean(true);
|
final AtomicBoolean firstPlayerIsMe = new AtomicBoolean(true);
|
||||||
@@ -56,8 +55,16 @@ public final class TicTacToeLayer extends Layer {
|
|||||||
playerMoveQueue.put(new Game.Move(cell, 'O'));
|
playerMoveQueue.put(new Game.Move(cell, 'O'));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (information.isPlayerHuman()[0] && currentPlayerMove != Game.EMPTY) {
|
if (information.isPlayerHuman()[0]) {
|
||||||
playerMoveQueue.put(new Game.Move(cell, firstPlayerIsMe.get()? 'X' : 'O'));
|
if (ticTacToe.get().getCurrentTurn() == 0) {
|
||||||
|
if (firstPlayerIsMe.get()) {
|
||||||
|
playerMoveQueue.put(new Game.Move(cell, 'X'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!firstPlayerIsMe.get()) {
|
||||||
|
playerMoveQueue.put(new Game.Move(cell, 'O'));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (InterruptedException _) {}
|
} catch (InterruptedException _) {}
|
||||||
@@ -88,6 +95,18 @@ public final class TicTacToeLayer extends Layer {
|
|||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TicTacToeLayer(GameInformation information, long clientID, NetworkEvents.GameMatchResponse resp) {
|
||||||
|
this(information);
|
||||||
|
|
||||||
|
Thread a = new Thread(this::serverGameThread);
|
||||||
|
a.setDaemon(false);
|
||||||
|
a.start();
|
||||||
|
|
||||||
|
handleServerGameStart(resp);
|
||||||
|
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reload() {
|
public void reload() {
|
||||||
popAll();
|
popAll();
|
||||||
@@ -256,7 +275,11 @@ public final class TicTacToeLayer extends Layer {
|
|||||||
|
|
||||||
if (state != Game.State.NORMAL) { //todo differentiate between future draw guaranteed and is currently a draw
|
if (state != Game.State.NORMAL) { //todo differentiate between future draw guaranteed and is currently a draw
|
||||||
if (state == Game.State.WIN) {
|
if (state == Game.State.WIN) {
|
||||||
App.push(new GameFinishedPopup(false, information.playerName()[ticTacToe.get().getCurrentTurn()]));
|
if (!resp.player().equalsIgnoreCase(player2Name)) {
|
||||||
|
App.push(new GameFinishedPopup(false, information.playerName()[0]));
|
||||||
|
} else {
|
||||||
|
App.push(new GameFinishedPopup(false, player2Name));
|
||||||
|
}
|
||||||
} else if (state == Game.State.DRAW) {
|
} else if (state == Game.State.DRAW) {
|
||||||
App.push(new GameFinishedPopup(true, ""));
|
App.push(new GameFinishedPopup(true, ""));
|
||||||
}
|
}
|
||||||
@@ -278,6 +301,7 @@ public final class TicTacToeLayer extends Layer {
|
|||||||
if (information.isPlayerHuman()[0]) {
|
if (information.isPlayerHuman()[0]) {
|
||||||
try {
|
try {
|
||||||
position = playerMoveQueue.take().position();
|
position = playerMoveQueue.take().position();
|
||||||
|
System.out.println("TEST" + position);
|
||||||
} catch (InterruptedException _) {}
|
} catch (InterruptedException _) {}
|
||||||
} else {
|
} else {
|
||||||
final Game.Move move = ticTacToeAI.findBestMove(ticTacToe.get(), compurterDifficultyToDepth(10,
|
final Game.Move move = ticTacToeAI.findBestMove(ticTacToe.get(), compurterDifficultyToDepth(10,
|
||||||
|
|||||||
Reference in New Issue
Block a user