Implemented a more reliable way for keystroke input and added boat action packet type so stream parser is able to read and decode the message appropriately.

#story[988] #pair[hyi25, zyt10]
This commit is contained in:
Zhi You Tan
2017-07-14 18:23:07 +12:00
parent 2809d0d832
commit 355f8543f5
5 changed files with 13 additions and 21 deletions
@@ -79,8 +79,8 @@ public class StartScreenController {
@FXML
public void connectButtonPressed() {
// TODO: 10/07/17 wmu16 - Finish function
String ipAddress = ipTextField.getText().trim();
StreamReceiver sr = new StreamReceiver(ipAddress, GameServerThread.PORT_NUMBER, "HostStream");
String ipAddress = ipTextField.getText().trim().toLowerCase();
StreamReceiver sr = new StreamReceiver(ipAddress, 4950, "HostStream");
sr.start();
}
}
@@ -11,7 +11,6 @@ import java.util.Comparator;
import java.util.Date;
import java.util.Map;
import java.util.TimeZone;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.PriorityBlockingQueue;
@@ -146,6 +145,8 @@ public class StreamParser extends Thread {
extractAvgWind(packet);
break;
default:
//TODO: Haoming added something dumb here.
System.out.println(packet);
break;
}
} catch (NullPointerException e) {
@@ -16,6 +16,7 @@ public enum PacketType {
MARK_ROUNDING,
COURSE_WIND,
AVG_WIND,
BOAT_ACTION,
OTHER;
public static PacketType assignPacketType(int packetType){
@@ -44,6 +45,8 @@ public enum PacketType {
return COURSE_WIND;
case 47:
return AVG_WIND;
case 100:
return BOAT_ACTION;
default:
}
return OTHER;
@@ -8,17 +8,18 @@ import java.nio.channels.SocketChannel;
*/
public class BoatActionMessage extends Message{
private final MessageType MESSAGE_TYPE = MessageType.BOAT_ACTION;
private final int MESSAGE_VERSION = 1; //Always set to 1
private final int MESSAGE_SIZE = 1;
private BoatActionType actionType;
public BoatActionMessage(BoatActionType actionType) {
this.actionType = actionType;
setHeader(new Header(MessageType.BOAT_ACTION, 0, (short) 1)); // the second variable is the source id
}
@Override
public int getSize() {
return 0;
return MESSAGE_SIZE;
}
/**
@@ -30,7 +31,6 @@ public class BoatActionMessage extends Message{
allocateBuffer();
writeHeaderToBuffer();
// Write message fields
putUnsignedByte((byte) MESSAGE_VERSION);
putInt((int) BoatActionType.getBoatPacketType(actionType), 1);
writeCRC();
rewind();
+3 -15
View File
@@ -28,19 +28,6 @@
<Font size="29.0" />
</font>
</Text>
<TableView fx:id="lobbyTable" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
<columns>
<TableColumn fx:id="ipTableColumn" prefWidth="259.0" text="IP" />
<TableColumn fx:id="colourTableColumn" prefWidth="424.0" text="Colour" />
<TableColumn fx:id="readyTableColumn" prefWidth="96.0" text="Ready" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TableView>
<GridPane GridPane.rowIndex="2">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
@@ -50,9 +37,10 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button mnemonicParsing="false" onAction="#readyButtonPressed" prefWidth="101.0" text="Ready" GridPane.halignment="CENTER" />
<Button mnemonicParsing="false" onAction="#leaveLobbyButtonPressed" text="Leave Lobby" GridPane.columnIndex="1" GridPane.halignment="CENTER" />
<Button focusTraversable="false" mnemonicParsing="false" onAction="#readyButtonPressed" prefWidth="101.0" text="Ready" GridPane.halignment="CENTER" />
<Button focusTraversable="false" mnemonicParsing="false" onAction="#leaveLobbyButtonPressed" text="Leave Lobby" GridPane.columnIndex="1" GridPane.halignment="CENTER" />
</children>
</GridPane>
<AnchorPane focusTraversable="true" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
</children>
</GridPane>