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