diff --git a/src/HumanPlayer.java b/src/HumanPlayer.java index ae0e298..4dfdbe1 100644 --- a/src/HumanPlayer.java +++ b/src/HumanPlayer.java @@ -1,4 +1,8 @@ public class HumanPlayer extends LocalPlayer { - + @Override + public void shoot(Point point) { + this.myTurn = false; + enemy.receiveShoot(point); + } } diff --git a/src/LocalPlayer.java b/src/LocalPlayer.java index f3e434b..ab19f20 100644 --- a/src/LocalPlayer.java +++ b/src/LocalPlayer.java @@ -10,6 +10,8 @@ public class LocalPlayer extends Player { @Override public synchronized void receiveShoot(Point point) { + if (!this.enemy.myTurn) return; + HitResponse hitResponse = board.getHitResponseOnPoint(point); if (!(hitResponse == null)){ enemy.receiveHit(hitResponse); @@ -46,10 +48,13 @@ public class LocalPlayer extends Player { } } + /** + * sends shot to enemy player. + * should ONLY be called on HumanPlayer + */ @Override public void shoot(Point point){ - this.myTurn = false; - enemy.receiveShoot(point); + return; } @Override diff --git a/src/OnlinePlayer.java b/src/OnlinePlayer.java index 14f3edb..4f0d56b 100644 --- a/src/OnlinePlayer.java +++ b/src/OnlinePlayer.java @@ -25,4 +25,10 @@ public abstract class OnlinePlayer extends Player implements AsyncSocketListener @Override public abstract void receiveCoin(boolean coin); + @Override + public void destroy() { + super.destroy(); + this.socket.close(); + } + } diff --git a/src/OnlinePlayer_1_1_0.java b/src/OnlinePlayer_1_1_0.java index a9b513d..eab7f1e 100644 --- a/src/OnlinePlayer_1_1_0.java +++ b/src/OnlinePlayer_1_1_0.java @@ -34,8 +34,8 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { case "COIN": if(!this.hasReceivedCoinPackage && (p.getData().equals("1") || p.getData().equals("0"))){ this.myCoin = p.getData().equals("1"); - this.ready(); this.hasReceivedCoinPackage = true; + this.ready(); } break; @@ -75,6 +75,7 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { @Override public synchronized void receiveShoot(Point point){ + if (!this.enemy.myTurn) return; super.socket.send(new SocketPackage("SHOOT",point.toString())); } @@ -94,6 +95,7 @@ public class OnlinePlayer_1_1_0 extends OnlinePlayer { @Override public synchronized void shoot(Point point) { - super.socket.send(new SocketPackage("SHOOT", point.toString())); + // SHOULD NEVER BE CALLED ON ONLINE PLAYER. ONLY ON HUMAN PLAYER + return; } } \ No newline at end of file diff --git a/src/Player.java b/src/Player.java index f36702d..5ea7ba7 100644 --- a/src/Player.java +++ b/src/Player.java @@ -77,4 +77,11 @@ public abstract class Player { public boolean isReady() { return this.sentCoin; } + + public void destroy() { + this.myTurn = false; + this.gameRunning = false; + this.board = null; + this.enemy = null; + } }