mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
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:
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user