From 425cc7f91faf648536ea8a2a0ae318bb9781ba94 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Fri, 4 Aug 2017 21:27:53 +1200 Subject: [PATCH 1/2] Changed ControlKey to use BoatActionEnum instead of magic numbers. --- .../visualiser/gameController/ControllerClient.java | 6 +++--- .../visualiser/gameController/Keys/ControlKey.java | 11 ++++++----- .../visualiser/gameController/Keys/DownWindKey.java | 4 +++- .../gameController/Keys/SailsToggleKey.java | 10 ++++++++-- .../visualiser/gameController/Keys/TackGybeKey.java | 4 +++- .../visualiser/gameController/Keys/UpWindKey.java | 4 +++- .../java/visualiser/gameController/Keys/VMGKey.java | 3 ++- 7 files changed, 28 insertions(+), 14 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java b/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java index eb46d361..a0f1af75 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java +++ b/racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java @@ -47,11 +47,11 @@ public class ControllerClient { * @throws IOException if socket write fails */ public void sendKey(ControlKey key) throws IOException { - int protocolCode = key.getProtocolCode(); - if(protocolCode > -1) { + BoatActionEnum protocolCode = key.getProtocolCode(); + if(protocolCode != BoatActionEnum.NOT_A_STATUS) { byte[] bytes = new byte[4]; - ByteBuffer.wrap(bytes).putInt(key.getProtocolCode()); + ByteBuffer.wrap(bytes).putInt(protocolCode.getValue()); BoatActionEnum boatActionEnum = BoatActionEnum.fromByte(bytes[3]); BoatAction boatAction = new BoatAction(boatActionEnum); diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/ControlKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/ControlKey.java index ad8a559a..dd489f73 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/ControlKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/ControlKey.java @@ -1,6 +1,7 @@ package visualiser.gameController.Keys; import javafx.scene.input.KeyCode; +import network.Messages.Enums.BoatActionEnum; /** * Key for the controller, part of the abstract factory KeyFactory @@ -8,14 +9,14 @@ import javafx.scene.input.KeyCode; public abstract class ControlKey { private String name; - protected int protocolCode; + protected BoatActionEnum protocolCode; /** * Constructor for key state with specified protocol code * @param name of action - * @param protocolCode -1 if not sent + * @param protocolCode NOT_A_STATUS if not sent */ - public ControlKey(String name, int protocolCode) { + public ControlKey(String name, BoatActionEnum protocolCode) { this.name = name; this.protocolCode = protocolCode; } @@ -26,10 +27,10 @@ public abstract class ControlKey { */ public ControlKey(String name){ this.name = name; - this.protocolCode = -1; + this.protocolCode = BoatActionEnum.NOT_A_STATUS; } - public int getProtocolCode() { + public BoatActionEnum getProtocolCode() { return protocolCode; } diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/DownWindKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/DownWindKey.java index 6d929ca1..e4b5455a 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/DownWindKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/DownWindKey.java @@ -1,5 +1,7 @@ package visualiser.gameController.Keys; +import network.Messages.Enums.BoatActionEnum; + /** * Key to send downwind packet to server */ @@ -11,7 +13,7 @@ public class DownWindKey extends ControlKey { * */ public DownWindKey(String name) { - super(name, 6); + super(name, BoatActionEnum.DOWNWIND); } @Override diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java index bc9b81a6..15b88512 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/SailsToggleKey.java @@ -1,5 +1,7 @@ package visualiser.gameController.Keys; +import network.Messages.Enums.BoatActionEnum; + /** * Key to toggle the sails */ @@ -11,7 +13,7 @@ public class SailsToggleKey extends ControlKey { * */ public SailsToggleKey(String name) { - super(name, 2); + super(name, BoatActionEnum.SAILS_IN); } /** @@ -19,7 +21,11 @@ public class SailsToggleKey extends ControlKey { */ @Override public void onAction() { - protocolCode = protocolCode == 2? 3 : 2; + if(protocolCode == BoatActionEnum.SAILS_IN) { + protocolCode = BoatActionEnum.SAILS_OUT; + } else { + protocolCode = BoatActionEnum.SAILS_IN; + } } @Override diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/TackGybeKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/TackGybeKey.java index cf9a0699..80252e73 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/TackGybeKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/TackGybeKey.java @@ -1,5 +1,7 @@ package visualiser.gameController.Keys; +import network.Messages.Enums.BoatActionEnum; + /** * key to toggle between tacking and gybing */ @@ -11,7 +13,7 @@ public class TackGybeKey extends ControlKey { * */ public TackGybeKey(String name) { - super(name, 4); + super(name, BoatActionEnum.TACK_GYBE); } @Override diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/UpWindKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/UpWindKey.java index 85f7fc4b..333e5f1f 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/UpWindKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/UpWindKey.java @@ -1,5 +1,7 @@ package visualiser.gameController.Keys; +import network.Messages.Enums.BoatActionEnum; + /** * Key to go upwind */ @@ -11,7 +13,7 @@ public class UpWindKey extends ControlKey { * */ public UpWindKey(String name) { - super(name, 5); + super(name, BoatActionEnum.UPWIND); } @Override diff --git a/racevisionGame/src/main/java/visualiser/gameController/Keys/VMGKey.java b/racevisionGame/src/main/java/visualiser/gameController/Keys/VMGKey.java index e6d82ba7..c01658bb 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/Keys/VMGKey.java +++ b/racevisionGame/src/main/java/visualiser/gameController/Keys/VMGKey.java @@ -1,6 +1,7 @@ package visualiser.gameController.Keys; import javafx.scene.input.KeyCode; +import network.Messages.Enums.BoatActionEnum; /** * Key to trigger auto VMG @@ -13,7 +14,7 @@ public class VMGKey extends ControlKey{ * @param name name of the key */ public VMGKey(String name) { - super(name, 1); + super(name, BoatActionEnum.AUTO_PILOT); } @Override From e021dd328dcaf940393092398230f51a96fcd231 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Tue, 8 Aug 2017 23:56:59 +1200 Subject: [PATCH 2/2] Changed CompositeCommand stack to queue #story[1096] --- .../mock/model/commandFactory/CompositeCommand.java | 11 ++++++----- .../visualiser/gameController/ControllerServer.java | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java index 12690d29..74c5e95b 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java @@ -1,23 +1,24 @@ package mock.model.commandFactory; -import java.util.Stack; +import java.util.ArrayDeque; +import java.util.Queue; /** * Wraps multiple commands into a composite to execute queued commands during a frame. */ public class CompositeCommand implements Command { - private Stack commands; + private Queue commands; public CompositeCommand() { - this.commands = new Stack<>(); + this.commands = new ArrayDeque<>(); } public void addCommand(Command command) { - commands.push(command); + commands.add(command); } @Override public void execute() { - while(!commands.isEmpty()) commands.pop().execute(); + while(!commands.isEmpty()) commands.remove().execute(); } } diff --git a/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java b/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java index c95a0789..66e98d89 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java +++ b/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java @@ -64,6 +64,7 @@ public class ControllerServer extends Observable implements Runnable { BoatActionDecoder boatActionDecoder = new BoatActionDecoder(encodedMessage.getMessageBody()); action = boatActionDecoder.getBoatAction(); + // Notify observers of most recent action this.notifyObservers(); this.setChanged(); }