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
if (GameState.getCurrentStage() == GameStages.RACING) {
updateClients();
}
@@ -68,9 +69,9 @@ public class MainServerThread extends Thread implements PacketBufferDelegate, Cl
else if (GameState.getCurrentStage() == GameStages.FINISHED) {
}
updateClients();
while (!packetBuffer.isEmpty()){
System.out.println("WHATUPPP");
try {
@@ -114,6 +115,13 @@ public class MainServerThread extends Thread implements PacketBufferDelegate, Cl
return packetBuffer.add(streamPacket);
}
private void initializeRace(){
for (ServerToClientThread serverToClientThread : serverToClientThreads) {
serverToClientThread.updateClient();
}
}
/**
* A client has tried to connect to the server
* @param serverToClientThread The player that connected
@@ -3,6 +3,13 @@ package seng302.gameServer;
import seng302.model.Player;
import seng302.model.stream.StreamParser;
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 java.io.*;
@@ -52,6 +59,9 @@ public class ServerToClientThread extends Thread {
//Perform a write if it is time to as delegated by the MainServerThread
if (updateClient) {
// 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 {
// GameState.outputState(os);
// } catch (IOException e) {
@@ -60,9 +70,11 @@ public class ServerToClientThread extends Thread {
updateClient = false;
}
crcBuffer = new ByteArrayOutputStream();
sync1 = readByte();
sync2 = readByte();
//checking if it is the start of the packet
if(sync1 == 0x47 && sync2 == 0x83) {
int type = readByte();
@@ -84,6 +96,7 @@ public class ServerToClientThread extends Thread {
}
}
} catch (Exception e) {
e.printStackTrace();
closeSocket();
return;
}
@@ -160,4 +173,12 @@ public class ServerToClientThread extends Thread {
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) {
long heartbeat = bytesToLong(packet.getPayload());
System.out.println("heartbeat = " + heartbeat);
}
private static String getTimeZoneString() {
@@ -352,6 +353,7 @@ public class StreamParser{
int messageType = payload[1];
int length = payload[2];
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;
}
}
@@ -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);
}
}
}
@@ -103,5 +103,7 @@ public class LobbyController implements Initializable{
@FXML
public void readyButtonPressed() {
GameState.setCurrentStage(GameStages.RACING);
setContentPane("/views/RaceView.fxml");
}
}
@@ -58,6 +58,10 @@ public class StartScreenController {
String ipAddress = InetAddress.getLocalHost().getHostAddress();
new GameState(ipAddress);
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
setContentPane("/views/LobbyView.fxml");