From bedd742c9325ec59256b4e9c3f86ca25af15eb6c Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Mon, 14 Aug 2017 13:26:51 +1200 Subject: [PATCH 01/15] Started on Request/Response packets for the Boat customization to begin the boat customization process. tags: #story[1142] --- .../server/messages/ChatterMessage.java | 4 +-- .../messages/CustomizeRequestMessage.java | 19 +++++++++++ .../server/messages/CustomizeRequestType.java | 31 +++++++++++++++++ .../messages/CustomizeResponseType.java | 34 +++++++++++++++++++ 4 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java create mode 100644 src/main/java/seng302/gameServer/server/messages/CustomizeRequestType.java create mode 100644 src/main/java/seng302/gameServer/server/messages/CustomizeResponseType.java diff --git a/src/main/java/seng302/gameServer/server/messages/ChatterMessage.java b/src/main/java/seng302/gameServer/server/messages/ChatterMessage.java index 1295b725..08cce58f 100644 --- a/src/main/java/seng302/gameServer/server/messages/ChatterMessage.java +++ b/src/main/java/seng302/gameServer/server/messages/ChatterMessage.java @@ -1,8 +1,6 @@ package seng302.gameServer.server.messages; -/** - * Created by kre39 on 20/07/17. - */ + public class ChatterMessage extends Message { private final long MESSAGE_VERSION_NUMBER = 1; diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java new file mode 100644 index 00000000..943da0ba --- /dev/null +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java @@ -0,0 +1,19 @@ +package seng302.gameServer.server.messages; + + +public class CustomizeRequestMessage extends Message { + + CustomizeRequestType customizeType; + private static int MESSAGE_LENGTH = 2; + + private Double sourceID; + + public CustomizeRequestMessage(CustomizeRequestType customizeType, Double sourceID,) + + @Override + public int getSize() { + return 1; // placeholder + } + + +} diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestType.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestType.java new file mode 100644 index 00000000..86aae5a5 --- /dev/null +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestType.java @@ -0,0 +1,31 @@ +package seng302.gameServer.server.messages; + +// TODO: 14/08/17 ajm412: this may eventually need adjusting due to conforming to the agreed spec. +public enum CustomizeRequestType { + NAME(0x00), + COLOR(0x01), + SHAPE(0x02); + + private int type; + + CustomizeRequestType(int type) { + this.type = type; + } + + int getType() { + return this.type; + } + + public static CustomizeRequestType getRequestType(int typeCode) { + switch (typeCode) { + case 0x00: + return NAME; + case 0x01: + return COLOR; + case 0x02: + return SHAPE; + default: + return null; + } + } +} diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeResponseType.java b/src/main/java/seng302/gameServer/server/messages/CustomizeResponseType.java new file mode 100644 index 00000000..b26780b9 --- /dev/null +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeResponseType.java @@ -0,0 +1,34 @@ +package seng302.gameServer.server.messages; + +// TODO: 14/08/17 ajm412: this may eventually need adjusting due to conforming to the agreed spec. +public enum CustomizeResponseType { + SUCCESS(0x00), + FAILURE(0x01), + FAILURE_MALFORMED_DATA(0x02), + FAILURE_INCOMPATIBLE(0x03); + + private int type; + + CustomizeResponseType(int type) { + this.type = type; + } + + int getType() { + return this.type; + } + + public static CustomizeResponseType getResponseType(int typeCode) { + switch (typeCode) { + case 0x00: + return SUCCESS; + case 0x01: + return FAILURE; + case 0x02: + return FAILURE_MALFORMED_DATA; + case 0x03: + return FAILURE_INCOMPATIBLE; + default: + return null; + } + } +} From 9420717b442630ce0581f030d6cc2cc1e0f0b2d0 Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Mon, 14 Aug 2017 13:38:41 +1200 Subject: [PATCH 02/15] Added Messages to MessageType, continued working on request. tags: #story[1142] --- .../server/messages/CustomizeRequestMessage.java | 14 ++++++++++++-- .../gameServer/server/messages/MessageType.java | 5 ++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java index 943da0ba..1f5bd126 100644 --- a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java @@ -3,12 +3,22 @@ package seng302.gameServer.server.messages; public class CustomizeRequestMessage extends Message { - CustomizeRequestType customizeType; + private static int MESSAGE_LENGTH = 2; + //Message fields private Double sourceID; + private CustomizeRequestType customizeType; - public CustomizeRequestMessage(CustomizeRequestType customizeType, Double sourceID,) + public CustomizeRequestMessage(CustomizeRequestType customizeType, Double sourceID) { + setHeader( + new Header(MessageType.CUSTOMIZATION_REQUEST, sourceID.intValue(), (short) getSize())); + + allocateBuffer(); + writeHeaderToBuffer(); + + + } @Override public int getSize() { diff --git a/src/main/java/seng302/gameServer/server/messages/MessageType.java b/src/main/java/seng302/gameServer/server/messages/MessageType.java index 4552d781..6b32fd65 100644 --- a/src/main/java/seng302/gameServer/server/messages/MessageType.java +++ b/src/main/java/seng302/gameServer/server/messages/MessageType.java @@ -19,7 +19,10 @@ public enum MessageType { AVERAGE_WIND(47), BOAT_ACTION(100), REGISTRATION_REQUEST(101), - REGISTRATION_RESPONSE(102); + REGISTRATION_RESPONSE(102), + CUSTOMIZATION_REQUEST(103), + CUSTOMIZATION_RESPONSE(104); + private int code; From 3754b71f4dd21ac4e8ab29062c031ca99e2b5dcf Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Mon, 14 Aug 2017 14:31:02 +1200 Subject: [PATCH 03/15] Merged updated develop into branch. tags: #story[1142] --- .../gameServer/server/messages/CustomizeRequestMessage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java index 1f5bd126..e08d6e61 100644 --- a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java @@ -1,6 +1,6 @@ package seng302.gameServer.server.messages; - +// TODO: 14/08/17 ajm412: this may eventually need adjusting due to conforming to the agreed spec. public class CustomizeRequestMessage extends Message { @@ -22,7 +22,7 @@ public class CustomizeRequestMessage extends Message { @Override public int getSize() { - return 1; // placeholder + return MESSAGE_LENGTH; // placeholder } From 1f09005147184c54c04c9828dfbc3bd9c75f3dfe Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Mon, 14 Aug 2017 15:30:42 +1200 Subject: [PATCH 04/15] Message types for Request and Response created, and Messages for them also created. tags: #story[1142] --- .../messages/CustomizeRequestMessage.java | 18 ++++++++---- .../messages/CustomizeResponseMessage.java | 28 +++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 src/main/java/seng302/gameServer/server/messages/CustomizeResponseMessage.java diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java index e08d6e61..8c2eb5a4 100644 --- a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java @@ -4,25 +4,31 @@ package seng302.gameServer.server.messages; public class CustomizeRequestMessage extends Message { - private static int MESSAGE_LENGTH = 2; + private static int MESSAGE_LENGTH = 6; //Message fields - private Double sourceID; private CustomizeRequestType customizeType; + private Integer payloadLength; - public CustomizeRequestMessage(CustomizeRequestType customizeType, Double sourceID) { - setHeader( - new Header(MessageType.CUSTOMIZATION_REQUEST, sourceID.intValue(), (short) getSize())); + public CustomizeRequestMessage(CustomizeRequestType customizeType, double sourceID, + byte[] payload) { + setHeader(new Header(MessageType.CUSTOMIZATION_REQUEST, 1, (short) getSize())); allocateBuffer(); writeHeaderToBuffer(); + payloadLength = payload.length; + putInt((int) sourceID, 4); + putInt((int) customizeType.getType(), 2); + putBytes(payload); + writeCRC(); + rewind(); } @Override public int getSize() { - return MESSAGE_LENGTH; // placeholder + return MESSAGE_LENGTH + payloadLength; // placeholder } diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeResponseMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeResponseMessage.java new file mode 100644 index 00000000..d3380ea8 --- /dev/null +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeResponseMessage.java @@ -0,0 +1,28 @@ +package seng302.gameServer.server.messages; + +/** + * Created by ajm412 on 14/08/17. + */ +public class CustomizeResponseMessage extends Message { + + private static int MESSAGE_LENGTH = 2; + + public CustomizeResponseMessage(CustomizeResponseType responseType) { + setHeader(new Header(MessageType.CUSTOMIZATION_RESPONSE, 1, (short) getSize())); + + allocateBuffer(); + writeHeaderToBuffer(); + + putInt(responseType.getType(), 2); + + writeCRC(); + rewind(); + } + + @Override + public int getSize() { + return MESSAGE_LENGTH; // placeholder + } + + +} From 9cb5956f3c3a991f5bd50651d1383da00ecaea3b Mon Sep 17 00:00:00 2001 From: Alistair McIntyre Date: Tue, 15 Aug 2017 16:48:23 +1200 Subject: [PATCH 05/15] Updated lobby controller to pass the player ID through, and the lobby view to have a customize button. tags: #story[1142] --- src/main/java/seng302/visualiser/GameClient.java | 8 +++++--- .../visualiser/controllers/LobbyController.java | 14 ++++++++++++++ src/main/resources/views/LobbyView.fxml | 4 +++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 028ea1e3..2a2ce3d4 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -72,7 +72,6 @@ public class GameClient { socketThread.addStreamObserver(this::parsePackets); LobbyController lobbyController = loadLobby(); - lobbyController.setPlayerListSource(clientLobbyList); lobbyController.disableReadyButton(); lobbyController.setTitle("Connected to host - IP : " + ipAddress + " Port : " + portNumber); lobbyController.addCloseListener((exitCause) -> this.loadStartScreen()); @@ -93,7 +92,6 @@ public class GameClient { } socketThread.addStreamObserver(this::parsePackets); LobbyController lobbyController = loadLobby(); - lobbyController.setPlayerListSource(clientLobbyList); lobbyController.setTitle("Hosting Lobby - IP : " + ipAddress + " Port : " + portNumber); lobbyController.addCloseListener(exitCause -> { if (exitCause == CloseStatus.READY) { @@ -133,7 +131,11 @@ public class GameClient { } catch (IOException e) { e.printStackTrace(); } - return fxmlLoader.getController(); + LobbyController lobbyController = fxmlLoader.getController(); + lobbyController.setPlayerListSource(clientLobbyList); + lobbyController.setPlayerID(socketThread.getClientId()); + + return lobbyController; } private void loadRaceView() { diff --git a/src/main/java/seng302/visualiser/controllers/LobbyController.java b/src/main/java/seng302/visualiser/controllers/LobbyController.java index 809bd3b5..113ae70e 100644 --- a/src/main/java/seng302/visualiser/controllers/LobbyController.java +++ b/src/main/java/seng302/visualiser/controllers/LobbyController.java @@ -14,6 +14,7 @@ import javafx.scene.image.ImageView; import javafx.scene.text.Text; import seng302.gameServer.GameStages; import seng302.gameServer.GameState; +import seng302.visualiser.GameView; /** * A class describing the actions of the lobby screen @@ -72,6 +73,7 @@ public class LobbyController { private List