diff --git a/src/AsyncSocket.java b/src/AsyncSocket.java index 506309f..1937afb 100644 --- a/src/AsyncSocket.java +++ b/src/AsyncSocket.java @@ -225,7 +225,10 @@ public class AsyncSocket { try { this.socket.close(); - if (this.checkerThread != null) this.checkerThread.join(); + if (this.checkerThread != null) { + this.checkerThread.interrupt(); + this.checkerThread.join(); + } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { diff --git a/src/HumanPlayer.java b/src/HumanPlayer.java index 6f00dbe..36203ec 100644 --- a/src/HumanPlayer.java +++ b/src/HumanPlayer.java @@ -9,7 +9,6 @@ public class HumanPlayer extends LocalPlayer { @Override public void shoot(Point point) { if (!this.myTurn) return; - this.myTurn = false; enemy.receiveShoot(point); } } diff --git a/src/LocalPlayer.java b/src/LocalPlayer.java index 2705263..aac063c 100644 --- a/src/LocalPlayer.java +++ b/src/LocalPlayer.java @@ -15,7 +15,11 @@ public class LocalPlayer extends Player { */ @Override public synchronized void receiveShoot(Point point) { - if (!this.enemy.myTurn) return; + if (!this.enemy.myTurn) { + System.out.println("enemy tried to fire when not their turn!"); + return; + } + this.enemy.myTurn = false; HitResponse hitResponse = board.getHitResponseOnPoint(point); if (!(hitResponse == null)){ @@ -29,7 +33,7 @@ public class LocalPlayer extends Player { switch (hitResponse.getType()) { case HIT, SUNK -> this.myTurn = false; case MISS -> this.myTurn = true; - case VICTORY -> GameController.getMainFrame().showPanelLose("", this); //TODO Was halt bei victory passiert ist hier wurder verloheren + case VICTORY -> GameController.getMainFrame().showPanelLose("LoseScreen", this); } GameController.getMainFrame().refreshGameBoard(); } @@ -45,7 +49,7 @@ public class LocalPlayer extends Player { switch (hitResponse.getType()) { case HIT, SUNK -> this.myTurn = true; case MISS -> this.myTurn = false; - case VICTORY -> GameController.getMainFrame().showPanelWin("", this); // TODO was halt beim victory passier ist hier wurde gewonnen + case VICTORY -> GameController.getMainFrame().showPanelWin("", this); } GameController.getMainFrame().refreshGameBoard(); } @@ -86,4 +90,4 @@ public class LocalPlayer extends Player { super.ready(); } -} \ No newline at end of file +} diff --git a/src/OnlinePlayer.java b/src/OnlinePlayer.java index 2db0a90..486a48d 100644 --- a/src/OnlinePlayer.java +++ b/src/OnlinePlayer.java @@ -22,12 +22,6 @@ public abstract class OnlinePlayer extends Player implements AsyncSocketListener public abstract void receive(String message); - @Override - public abstract void receiveShoot(Point point); - - @Override - public abstract void receiveHit(HitResponse hitResponse); - @Override public abstract void receiveCoin(boolean coin); diff --git a/src/OnlinePlayer_1_1_0.java b/src/OnlinePlayer_1_1_0.java index b401a6e..6ba3b96 100644 --- a/src/OnlinePlayer_1_1_0.java +++ b/src/OnlinePlayer_1_1_0.java @@ -58,7 +58,23 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { Point point = new Point(data.get(0)); int typeIndex = Integer.parseInt(data.get(1)); if (Point.isValidSyntax(data.get(0)) && typeIndex >= 0 && typeIndex < HitResponseType.values().length){ - this.enemy.receiveHit(new HitResponse(typeIndex, point)); + + HitResponse hitResponse = new HitResponse(typeIndex, point); + + this.enemy.receiveHit(hitResponse); + + switch (hitResponse.getType()) { + case HIT, SUNK: + this.myTurn = false; + break; + case MISS: + this.myTurn = true; + break; + + case VICTORY: + // GameController.getMainFrame().showPanelWin("", this.enemy); + break; + } } } break; @@ -102,6 +118,18 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { */ @Override public synchronized void receiveHit(HitResponse hitResponse) { + switch (hitResponse.getType()) { + case HIT, SUNK: + this.myTurn = true; + break; + case MISS: + this.myTurn = false; + break; + + case VICTORY: + // GameController.getMainFrame().showPanelLose("", this.enemy); + break; + } super.socket.send(new SocketPackage("HIT", hitResponse.toString())); } @@ -125,4 +153,4 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { // SHOULD NEVER BE CALLED ON ONLINE PLAYER. ONLY ON HUMAN PLAYER return; } -} \ No newline at end of file +}