diff --git a/src/main/java/seng302/gameServer/ServerToClientThread.java b/src/main/java/seng302/gameServer/ServerToClientThread.java index bae4216c..9b773ac1 100644 --- a/src/main/java/seng302/gameServer/ServerToClientThread.java +++ b/src/main/java/seng302/gameServer/ServerToClientThread.java @@ -203,6 +203,9 @@ public class ServerToClientThread implements Runnable, Observer { completeRegistration(requestedType); break; + + case RACE_CUSTOMIZATION_REQUEST: + System.out.println("CUSTOMIZATION RECEIVED"); } } else { logger.warn("Packet has been dropped", 1); diff --git a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java index 8c2eb5a4..9407603b 100644 --- a/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java +++ b/src/main/java/seng302/gameServer/server/messages/CustomizeRequestMessage.java @@ -12,12 +12,12 @@ public class CustomizeRequestMessage extends Message { public CustomizeRequestMessage(CustomizeRequestType customizeType, double sourceID, byte[] payload) { + payloadLength = payload.length; 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); diff --git a/src/main/java/seng302/model/stream/packets/PacketType.java b/src/main/java/seng302/model/stream/packets/PacketType.java index 1a38ae14..baf2ff42 100644 --- a/src/main/java/seng302/model/stream/packets/PacketType.java +++ b/src/main/java/seng302/model/stream/packets/PacketType.java @@ -1,8 +1,5 @@ package seng302.model.stream.packets; -/** - * Created by Kusal on 4/24/2017. - */ public enum PacketType { HEARTBEAT, RACE_STATUS, @@ -21,7 +18,9 @@ public enum PacketType { BOAT_ACTION, OTHER, RACE_REGISTRATION_REQUEST, - RACE_REGISTRATION_RESPONSE; + RACE_REGISTRATION_RESPONSE, + RACE_CUSTOMIZATION_REQUEST, + RACE_CUSTOMIZATION_RESPONSE; public static PacketType assignPacketType(int packetType, byte[] payload){ switch(packetType){ @@ -62,6 +61,10 @@ public enum PacketType { return RACE_REGISTRATION_REQUEST; case 102: return RACE_REGISTRATION_RESPONSE; + case 103: + return RACE_CUSTOMIZATION_REQUEST; + case 104: + return RACE_CUSTOMIZATION_RESPONSE; default: } return OTHER; diff --git a/src/main/java/seng302/visualiser/ClientToServerThread.java b/src/main/java/seng302/visualiser/ClientToServerThread.java index 9f76d37c..a37e2703 100644 --- a/src/main/java/seng302/visualiser/ClientToServerThread.java +++ b/src/main/java/seng302/visualiser/ClientToServerThread.java @@ -24,6 +24,8 @@ import org.slf4j.LoggerFactory; import seng302.gameServer.server.messages.BoatAction; import seng302.gameServer.server.messages.BoatActionMessage; import seng302.gameServer.server.messages.ClientType; +import seng302.gameServer.server.messages.CustomizeRequestMessage; +import seng302.gameServer.server.messages.CustomizeRequestType; import seng302.gameServer.server.messages.Message; import seng302.gameServer.server.messages.RegistrationRequestMessage; import seng302.gameServer.server.messages.RegistrationResponseStatus; @@ -173,6 +175,15 @@ public class ClientToServerThread implements Runnable { clientLog("Closed connection to Server", 0); } + public void sendCustomizationRequest(CustomizeRequestType reqType, byte[] payload) { + CustomizeRequestMessage requestMessage = new CustomizeRequestMessage(reqType, this.clientId, payload); + try { + os.write(requestMessage.getBuffer()); + } catch (IOException e) { + logger.error("Could not send customization request"); + } + + } /** * Sends a request to the server asking for a source ID diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 15328eab..1d4522b8 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -136,6 +136,7 @@ public class GameClient { e.printStackTrace(); } LobbyController lobbyController = fxmlLoader.getController(); + lobbyController.setSocketThread(socketThread); lobbyController.setPlayerListSource(clientLobbyList); lobbyController.setPlayerID(socketThread.getClientId()); diff --git a/src/main/java/seng302/visualiser/controllers/CustomizationController.java b/src/main/java/seng302/visualiser/controllers/CustomizationController.java new file mode 100644 index 00000000..be70db7c --- /dev/null +++ b/src/main/java/seng302/visualiser/controllers/CustomizationController.java @@ -0,0 +1,39 @@ +package seng302.visualiser.controllers; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.TextField; +import seng302.gameServer.server.messages.CustomizeRequestType; +import seng302.visualiser.ClientToServerThread; + +public class CustomizationController { + + @FXML + private TextField nameField; + + @FXML + private ColorPicker boatColorPicker; + + @FXML + private Button customizeSubmit; + + private ClientToServerThread socketThread; + + public void initialize() { + + } + + public void setServerThread(ClientToServerThread ctsThread) { + this.socketThread = ctsThread; + } + + @FXML + public void submitCustomization() { + System.out.println("Attempting to send"); + socketThread.sendCustomizationRequest(CustomizeRequestType.NAME, nameField.getText().getBytes()); + } + + + +} diff --git a/src/main/java/seng302/visualiser/controllers/LobbyController.java b/src/main/java/seng302/visualiser/controllers/LobbyController.java index 113ae70e..4af72b25 100644 --- a/src/main/java/seng302/visualiser/controllers/LobbyController.java +++ b/src/main/java/seng302/visualiser/controllers/LobbyController.java @@ -1,5 +1,8 @@ package seng302.visualiser.controllers; +import com.sun.deploy.util.SessionState.Client; +import com.sun.media.jfxmedia.logging.Logger; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -7,13 +10,18 @@ import javafx.application.Platform; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.text.Text; +import javafx.stage.Stage; import seng302.gameServer.GameStages; import seng302.gameServer.GameState; +import seng302.visualiser.ClientToServerThread; import seng302.visualiser.GameView; /** @@ -72,6 +80,8 @@ public class LobbyController { private List imageViews = new ArrayList<>(); private List