mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Lobby controller list view is able to react to changes in client state boats and update the list view appropriately.
#story[1055]
This commit is contained in:
@@ -66,6 +66,7 @@ public class ClientPacketParser {
|
||||
* @param packet the packet to be looked at and processed
|
||||
*/
|
||||
public static void parsePacket(StreamPacket packet) {
|
||||
System.out.println(packet.getType());
|
||||
try {
|
||||
switch (packet.getType()) {
|
||||
case HEARTBEAT:
|
||||
@@ -283,9 +284,9 @@ public class ClientPacketParser {
|
||||
if (messageType == 7) { //7 is the boat XML
|
||||
boats = xmlObject.getBoatXML().getCompetingBoats();
|
||||
ClientState.setBoats(xmlObject.getBoatXML().getCompetingBoats());
|
||||
ClientState.setDirtyState(true);
|
||||
}
|
||||
if (messageType == 6) { //6 is race info xml
|
||||
|
||||
newRaceXmlReceived = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import seng302.models.Yacht;
|
||||
|
||||
/**
|
||||
* Created by zyt10 on 21/07/17.
|
||||
* Used by the client to store static variables to be used in game.
|
||||
*/
|
||||
public class ClientState {
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package seng302.client;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
|
||||
/**
|
||||
* Created by zyt10 on 21/07/17.
|
||||
* Used by LobbyController to run a separate thread-loop
|
||||
* updates the controller when change is detected.
|
||||
*/
|
||||
public class ClientStateQueryingRunnable extends Observable implements Runnable {
|
||||
|
||||
@@ -15,9 +15,21 @@ public class ClientStateQueryingRunnable extends Observable implements Runnable
|
||||
@Override
|
||||
public void run() {
|
||||
while(!terminate) {
|
||||
if (ClientState.isRaceStarted() && ClientState.isConnectedToHost()) {
|
||||
// if (ClientState.isRaceStarted() && ClientState.isConnectedToHost()) {
|
||||
// setChanged();
|
||||
// notifyObservers();
|
||||
// }
|
||||
// Sleeping the thread so it will respond to the if statement below
|
||||
// if you know a better fix, pls tell me :) -ryan
|
||||
try {
|
||||
Thread.sleep(0);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (ClientState.isDirtyState()) {
|
||||
setChanged();
|
||||
notifyObservers();
|
||||
ClientState.setDirtyState(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,29 +125,29 @@ public class LobbyController implements Initializable, Observer{
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
switchToRaceView();
|
||||
// initialiseListView();
|
||||
clientStateQueryingRunnable.terminate();
|
||||
// switchToRaceView();
|
||||
initialiseListView();
|
||||
// clientStateQueryingRunnable.terminate();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initialiseListView() {
|
||||
firstListView.setItems(firstCompetitor);
|
||||
secondListView.setItems(secondCompetitor);
|
||||
thirdListView.setItems(thirdCompetitor);
|
||||
fourthListView.setItems(fourthCompetitor);
|
||||
fifthListView.setItems(fifthCompetitor);
|
||||
sixthListView.setItems(sixthCompetitor);
|
||||
seventhListView.setItems(seventhCompetitor);
|
||||
eighthListView.setItems(eighthCompetitor);
|
||||
firstListView.getItems().clear();
|
||||
secondListView.getItems().clear();
|
||||
thirdListView.getItems().clear();
|
||||
fourthListView.getItems().clear();
|
||||
fifthListView.getItems().clear();
|
||||
sixthListView.getItems().clear();
|
||||
seventhListView.getItems().clear();
|
||||
eighthListView.getItems().clear();
|
||||
|
||||
competitors = new ArrayList<>();
|
||||
Collections.addAll(competitors, firstCompetitor, secondCompetitor, thirdCompetitor,
|
||||
fourthCompetitor, fifthCompetitor, sixthCompetitor, seventhCompetitor, eighthCompetitor);
|
||||
|
||||
for (ObservableList<String> ol : competitors) {
|
||||
ol = FXCollections.observableArrayList();
|
||||
ol.removeAll();
|
||||
}
|
||||
|
||||
firstCompetitor.add(ClientState.getClientSourceId());
|
||||
@@ -163,6 +163,17 @@ public class LobbyController implements Initializable, Observer{
|
||||
competitorIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
firstListView.setItems(firstCompetitor);
|
||||
secondListView.setItems(secondCompetitor);
|
||||
thirdListView.setItems(thirdCompetitor);
|
||||
fourthListView.setItems(fourthCompetitor);
|
||||
fifthListView.setItems(fifthCompetitor);
|
||||
sixthListView.setItems(sixthCompetitor);
|
||||
seventhListView.setItems(seventhCompetitor);
|
||||
eighthListView.setItems(eighthCompetitor);
|
||||
}
|
||||
|
||||
private void initialiseLobbyControllerThread() {
|
||||
|
||||
@@ -81,16 +81,71 @@ public class ServerToClientThread implements Runnable {
|
||||
// TODO: 14/07/17 wmu16 - Work out how to fix this while loop
|
||||
|
||||
// used by ryan to simulate sending boats.xml
|
||||
// InputStream inputStream = getClass().getResourceAsStream("/server_config/boats.xml");
|
||||
// StringWriter writer = new StringWriter();
|
||||
// try {
|
||||
// IOUtils.copy(inputStream, writer);
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// String xml = writer.toString();
|
||||
// Message message = new XMLMessage(xml, XMLMessageSubType.BOAT, 0);
|
||||
// sendMessage(message);
|
||||
InputStream inputStream = getClass().getResourceAsStream("/server_config/boats1.xml");
|
||||
StringWriter writer = new StringWriter();
|
||||
try {
|
||||
IOUtils.copy(inputStream, writer);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String xml = writer.toString();
|
||||
Message message = new XMLMessage(xml, XMLMessageSubType.BOAT, 0);
|
||||
sendMessage(message);
|
||||
System.out.println("[server] send message 1 " + message);
|
||||
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
inputStream = getClass().getResourceAsStream("/server_config/boats.xml");
|
||||
writer = new StringWriter();
|
||||
try {
|
||||
IOUtils.copy(inputStream, writer);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
xml = writer.toString();
|
||||
message = new XMLMessage(xml, XMLMessageSubType.BOAT, 0);
|
||||
sendMessage(message);
|
||||
System.out.println("[server] send message 2 " + message);
|
||||
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
inputStream = getClass().getResourceAsStream("/server_config/boats2.xml");
|
||||
writer = new StringWriter();
|
||||
try {
|
||||
IOUtils.copy(inputStream, writer);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
xml = writer.toString();
|
||||
message = new XMLMessage(xml, XMLMessageSubType.BOAT, 0);
|
||||
sendMessage(message);
|
||||
System.out.println("[server] send message 3 " + message);
|
||||
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
inputStream = getClass().getResourceAsStream("/server_config/boats.xml");
|
||||
writer = new StringWriter();
|
||||
try {
|
||||
IOUtils.copy(inputStream, writer);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
xml = writer.toString();
|
||||
message = new XMLMessage(xml, XMLMessageSubType.BOAT, 0);
|
||||
sendMessage(message);
|
||||
System.out.println("[server] send message 4 " + message);
|
||||
//-------
|
||||
|
||||
while(true) {
|
||||
|
||||
Reference in New Issue
Block a user