mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Merge remote-tracking branch 'origin/Story984_Send_XML_After_Clients_Connect' into develop
# Conflicts: # src/main/java/seng302/gameServer/ServerToClientThread.java
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package seng302.gameServer;
|
package seng302.gameServer;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
import seng302.client.ClientPacketParser;
|
import seng302.client.ClientPacketParser;
|
||||||
import seng302.models.Player;
|
import seng302.models.Player;
|
||||||
import seng302.models.stream.PacketBufferDelegate;
|
import seng302.models.stream.PacketBufferDelegate;
|
||||||
@@ -15,7 +16,7 @@ import java.util.concurrent.PriorityBlockingQueue;
|
|||||||
* A class describing the overall server, which creates and collects server threads for each client
|
* A class describing the overall server, which creates and collects server threads for each client
|
||||||
* Created by wmu16 on 13/07/17.
|
* Created by wmu16 on 13/07/17.
|
||||||
*/
|
*/
|
||||||
public class MainServerThread implements Runnable, PacketBufferDelegate, ClientConnectionDelegate{
|
public class MainServerThread extends Observable implements Runnable, PacketBufferDelegate, ClientConnectionDelegate{
|
||||||
|
|
||||||
private static final int PORT = 4942;
|
private static final int PORT = 4942;
|
||||||
private static final Integer MAX_NUM_PLAYERS = 3;
|
private static final Integer MAX_NUM_PLAYERS = 3;
|
||||||
@@ -55,6 +56,7 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
|
|||||||
heartbeatThread.start();
|
heartbeatThread.start();
|
||||||
serverListenThread.start();
|
serverListenThread.start();
|
||||||
|
|
||||||
|
|
||||||
//You should handle interrupts in some way, so that the thread won't keep on forever if you exit the app.
|
//You should handle interrupts in some way, so that the thread won't keep on forever if you exit the app.
|
||||||
while (!thread.isInterrupted()) {
|
while (!thread.isInterrupted()) {
|
||||||
try {
|
try {
|
||||||
@@ -65,7 +67,6 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
|
|||||||
|
|
||||||
if (GameState.getCurrentStage() == GameStages.PRE_RACE) {
|
if (GameState.getCurrentStage() == GameStages.PRE_RACE) {
|
||||||
GameState.update();
|
GameState.update();
|
||||||
updateClients();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//RACING
|
//RACING
|
||||||
@@ -99,6 +100,8 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void updateClients() {
|
public void updateClients() {
|
||||||
for (ServerToClientThread serverToClientThread : serverToClientThreads) {
|
for (ServerToClientThread serverToClientThread : serverToClientThreads) {
|
||||||
serverToClientThread.updateClient();
|
serverToClientThread.updateClient();
|
||||||
@@ -125,7 +128,9 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
|
|||||||
public void clientConnected(ServerToClientThread serverToClientThread) {
|
public void clientConnected(ServerToClientThread serverToClientThread) {
|
||||||
serverLog("Player Connected From " + serverToClientThread.getThread().getName(), 0);
|
serverLog("Player Connected From " + serverToClientThread.getThread().getName(), 0);
|
||||||
serverToClientThreads.add(serverToClientThread);
|
serverToClientThreads.add(serverToClientThread);
|
||||||
|
this.addObserver(serverToClientThread);
|
||||||
|
setChanged();
|
||||||
|
notifyObservers();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import java.io.InputStream;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.zip.CRC32;
|
import java.util.zip.CRC32;
|
||||||
import java.util.zip.Checksum;
|
import java.util.zip.Checksum;
|
||||||
@@ -37,7 +39,7 @@ import seng302.utilities.GeoPoint;
|
|||||||
* All server threads created and owned by the server thread handler which can trigger client updates on its threads
|
* All server threads created and owned by the server thread handler which can trigger client updates on its threads
|
||||||
* Created by wmu16 on 13/07/17.
|
* Created by wmu16 on 13/07/17.
|
||||||
*/
|
*/
|
||||||
public class ServerToClientThread implements Runnable {
|
public class ServerToClientThread implements Runnable, Observer {
|
||||||
|
|
||||||
private static final Integer LOG_LEVEL = 1;
|
private static final Integer LOG_LEVEL = 1;
|
||||||
private static final Integer MAX_ID_ATTEMPTS = 10;
|
private static final Integer MAX_ID_ATTEMPTS = 10;
|
||||||
@@ -93,6 +95,11 @@ public class ServerToClientThread implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
sendSetupMessages();
|
||||||
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
int sync1;
|
int sync1;
|
||||||
int sync2;
|
int sync2;
|
||||||
@@ -177,14 +184,7 @@ public class ServerToClientThread implements Runnable {
|
|||||||
//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");
|
sendBoatLocationPackets();
|
||||||
// sendMessage(chatterMessage);
|
|
||||||
// try {
|
|
||||||
// GameState.outputState(os);
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// System.out.println("IO error in server thread upon writing to output stream");
|
|
||||||
// }
|
|
||||||
// sendBoatLocationPackets();
|
|
||||||
updateClient = false;
|
updateClient = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,6 +247,7 @@ public class ServerToClientThread implements Runnable {
|
|||||||
|
|
||||||
xmlMessage = new XMLMessage(xml.getRaceAsXml(), XMLMessageSubType.RACE, xml.getRaceAsXml().length());
|
xmlMessage = new XMLMessage(xml.getRaceAsXml(), XMLMessageSubType.RACE, xml.getRaceAsXml().length());
|
||||||
sendMessage(xmlMessage);
|
sendMessage(xmlMessage);
|
||||||
|
System.out.println("Sent xml messages for " + thread.getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,10 +297,6 @@ public class ServerToClientThread implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void initialiseRace(){
|
|
||||||
initialisedRace = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private int readByte() throws Exception {
|
private int readByte() throws Exception {
|
||||||
int currentByte = -1;
|
int currentByte = -1;
|
||||||
@@ -356,7 +353,7 @@ public class ServerToClientThread implements Runnable {
|
|||||||
yacht.getLocation().getLng(),
|
yacht.getLocation().getLng(),
|
||||||
yacht.getHeading(),
|
yacht.getHeading(),
|
||||||
(long) yacht.getVelocity());
|
(long) yacht.getVelocity());
|
||||||
|
|
||||||
sendMessage(boatLocationMessage);
|
sendMessage(boatLocationMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user