Merge branch 'Story62_Reading_Keystrokes' into story61_player_perspective

# Conflicts:
#	src/main/java/seng302/gameServer/ServerToClientThread.java
#	src/main/java/seng302/visualiser/ClientToServerThread.java
#	src/main/java/seng302/visualiser/controllers/RaceViewController.java
This commit is contained in:
Calum
2017-07-21 11:13:04 +12:00
8 changed files with 78 additions and 3 deletions
@@ -58,9 +58,10 @@ public class MainServerThread extends Thread implements PacketBufferDelegate, Cl
} }
//RACING //RACING
if (GameState.getCurrentStage() == GameStages.RACING) { if (GameState.getCurrentStage() == GameStages.RACING) {
updateClients();
} }
@@ -68,9 +69,9 @@ public class MainServerThread extends Thread implements PacketBufferDelegate, Cl
else if (GameState.getCurrentStage() == GameStages.FINISHED) { else if (GameState.getCurrentStage() == GameStages.FINISHED) {
} }
updateClients(); updateClients();
while (!packetBuffer.isEmpty()){ while (!packetBuffer.isEmpty()){
System.out.println("WHATUPPP"); System.out.println("WHATUPPP");
try { try {
@@ -114,6 +115,13 @@ public class MainServerThread extends Thread implements PacketBufferDelegate, Cl
return packetBuffer.add(streamPacket); return packetBuffer.add(streamPacket);
} }
private void initializeRace(){
for (ServerToClientThread serverToClientThread : serverToClientThreads) {
serverToClientThread.updateClient();
}
}
/** /**
* A client has tried to connect to the server * A client has tried to connect to the server
* @param serverToClientThread The player that connected * @param serverToClientThread The player that connected
@@ -3,6 +3,13 @@ package seng302.gameServer;
import seng302.model.Player; import seng302.model.Player;
import seng302.model.stream.StreamParser; import seng302.model.stream.StreamParser;
import seng302.model.stream.packets.StreamPacket; import seng302.model.stream.packets.StreamPacket;
import seng302.gameServer.GameState;
import seng302.models.Player;
import seng302.models.stream.PacketBufferDelegate;
import seng302.models.stream.StreamParser;
import seng302.models.stream.packets.StreamPacket;
import seng302.server.messages.ChatterMessage;
import seng302.server.messages.Heartbeat;
import seng302.server.messages.Message; import seng302.server.messages.Message;
import java.io.*; import java.io.*;
@@ -52,6 +59,9 @@ public class ServerToClientThread extends Thread {
//Perform a write if it is time to as delegated by the MainServerThread //Perform a write if it is time to as delegated by the MainServerThread
if (updateClient) { if (updateClient) {
// TODO: 13/07/17 wmu16 - Write out game state - some function that would write all appropriate messages to this output stream // TODO: 13/07/17 wmu16 - Write out game state - some function that would write all appropriate messages to this output stream
ChatterMessage chatterMessage = new ChatterMessage(4, 14, "Hello, it's me");
sendMessage(chatterMessage);
// try { // try {
// GameState.outputState(os); // GameState.outputState(os);
// } catch (IOException e) { // } catch (IOException e) {
@@ -60,9 +70,11 @@ public class ServerToClientThread extends Thread {
updateClient = false; updateClient = false;
} }
crcBuffer = new ByteArrayOutputStream(); crcBuffer = new ByteArrayOutputStream();
sync1 = readByte(); sync1 = readByte();
sync2 = readByte(); sync2 = readByte();
//checking if it is the start of the packet //checking if it is the start of the packet
if(sync1 == 0x47 && sync2 == 0x83) { if(sync1 == 0x47 && sync2 == 0x83) {
int type = readByte(); int type = readByte();
@@ -84,6 +96,7 @@ public class ServerToClientThread extends Thread {
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
closeSocket(); closeSocket();
return; return;
} }
@@ -160,4 +173,12 @@ public class ServerToClientThread extends Thread {
readByte(); readByte();
} }
} }
public void sendMessage(Message message){
try {
os.write(message.getBuffer());
} catch (IOException e) {
e.printStackTrace();
}
}
} }
@@ -121,6 +121,7 @@ public class StreamParser{
*/ */
private static void extractHeartBeat(StreamPacket packet) { private static void extractHeartBeat(StreamPacket packet) {
long heartbeat = bytesToLong(packet.getPayload()); long heartbeat = bytesToLong(packet.getPayload());
System.out.println("heartbeat = " + heartbeat);
} }
private static String getTimeZoneString() { private static String getTimeZoneString() {
@@ -352,6 +353,7 @@ public class StreamParser{
int messageType = payload[1]; int messageType = payload[1];
int length = payload[2]; int length = payload[2];
String message = new String(Arrays.copyOfRange(payload, 3, 3 + length)); String message = new String(Arrays.copyOfRange(payload, 3, 3 + length));
System.out.println(message);
} }
/** /**
@@ -29,4 +29,5 @@ public class BoatActionMessage extends Message{
return MESSAGE_SIZE; return MESSAGE_SIZE;
} }
} }
@@ -0,0 +1,38 @@
package seng302.server.messages;
/**
* Created by kre39 on 20/07/17.
*/
public class ChatterMessage extends Message {
private final long MESSAGE_VERSION_NUMBER = 1;
private final int MESSAGE_SIZE = 3;
private int message_type;
private int message_size = 21;
private String message;
public ChatterMessage(int message_type, int message_size, String message) {
this.message_type = message_type;
this.message_size = message_size;
this.message = message;
setHeader(new Header(MessageType.CHATTER_TEXT, 1, (short) getSize()));
allocateBuffer();
writeHeaderToBuffer();
putByte((byte) MESSAGE_VERSION_NUMBER);
putInt(message_type, 1);
putInt(message_size, 1);
putBytes(message.getBytes());
writeCRC();
rewind();
}
@Override
public int getSize() {
return MESSAGE_SIZE + message_size;
}
}
@@ -219,5 +219,4 @@ public abstract class Message {
data[right] = (byte) (temp & 0xff); data[right] = (byte) (temp & 0xff);
} }
} }
} }
@@ -103,5 +103,7 @@ public class LobbyController implements Initializable{
@FXML @FXML
public void readyButtonPressed() { public void readyButtonPressed() {
GameState.setCurrentStage(GameStages.RACING); GameState.setCurrentStage(GameStages.RACING);
setContentPane("/views/RaceView.fxml");
} }
} }
@@ -58,6 +58,10 @@ public class StartScreenController {
String ipAddress = InetAddress.getLocalHost().getHostAddress(); String ipAddress = InetAddress.getLocalHost().getHostAddress();
new GameState(ipAddress); new GameState(ipAddress);
new MainServerThread().start(); new MainServerThread().start();
ClientToServerThread clientToServerThread = new ClientToServerThread("localhost", 4950);
controller.setClientToServerThread(clientToServerThread);
clientToServerThread.start();
// new GameServerThread("Fuck you");
// get the lobby controller so that we can pass the game server thread to it // get the lobby controller so that we can pass the game server thread to it
setContentPane("/views/LobbyView.fxml"); setContentPane("/views/LobbyView.fxml");