mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Merged with develop. Fixed many bugs in Visualiser.
#bugs
This commit is contained in:
@@ -1,14 +1,9 @@
|
||||
package seng302.visualiser.controllers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
|
||||
import javafx.application.Platform;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
@@ -24,17 +19,28 @@ import javafx.scene.layout.Pane;
|
||||
import javafx.scene.media.Media;
|
||||
import javafx.scene.media.MediaPlayer;
|
||||
import javafx.scene.text.Text;
|
||||
import seng302.client.ClientState;
|
||||
import seng302.client.ClientStateQueryingRunnable;
|
||||
import seng302.gameServer.GameStages;
|
||||
import seng302.gameServer.GameState;
|
||||
import seng302.gameServer.MainServerThread;
|
||||
|
||||
/**
|
||||
* A class describing the actions of the lobby screen
|
||||
* Created by wmu16 on 10/07/17.
|
||||
*/
|
||||
public class LobbyController implements Initializable, Observer{
|
||||
public class LobbyController implements Initializable {
|
||||
|
||||
public enum CloseStatus {
|
||||
LEAVE,
|
||||
READY
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface LobbyCloseListener {
|
||||
void notify(CloseStatus exitCause);
|
||||
}
|
||||
|
||||
@FXML
|
||||
private ListView<String> competitorsListView;
|
||||
|
||||
@FXML
|
||||
private GridPane lobbyScreen;
|
||||
@FXML
|
||||
@@ -42,7 +48,7 @@ public class LobbyController implements Initializable, Observer{
|
||||
@FXML
|
||||
private Button readyButton;
|
||||
@FXML
|
||||
private ListView firstListView;
|
||||
private ListView<String> firstListView;
|
||||
@FXML
|
||||
private ListView secondListView;
|
||||
@FXML
|
||||
@@ -83,10 +89,11 @@ public class LobbyController implements Initializable, Observer{
|
||||
private static ObservableList<String> sixthCompetitor = FXCollections.observableArrayList();
|
||||
private static ObservableList<String> seventhCompetitor = FXCollections.observableArrayList();
|
||||
private static ObservableList<String> eighthCompetitor = FXCollections.observableArrayList();
|
||||
private ClientStateQueryingRunnable clientStateQueryingRunnable;
|
||||
// private ClientStateQueryingRunnable clientStateQueryingRunnable;
|
||||
|
||||
private Boolean switchedPane = false;
|
||||
private MainServerThread mainServerThread;
|
||||
|
||||
private List<LobbyCloseListener> lobbyListeners = new ArrayList<>();
|
||||
|
||||
private void setContentPane(String jfxUrl) {
|
||||
try {
|
||||
@@ -105,51 +112,54 @@ public class LobbyController implements Initializable, Observer{
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
if (ClientState.isHost()) {
|
||||
lobbyIpText.setText("Lobby Host IP: " + ClientState.getHostIp());
|
||||
readyButton.setDisable(false);
|
||||
}
|
||||
else {
|
||||
lobbyIpText.setText("Connected to IP: ");
|
||||
readyButton.setDisable(true);
|
||||
}
|
||||
initialiseListView();
|
||||
// if (ClientState.isHost()) {
|
||||
// lobbyIpText.setText("Lobby Host IP: " + ClientState.getHostIp());
|
||||
// readyButton.setDisable(false);
|
||||
// }
|
||||
// else {
|
||||
// lobbyIpText.setText("Connected to IP: ");
|
||||
// readyButton.setDisable(true);
|
||||
// readyButton.setVisible(false);
|
||||
// }
|
||||
// initialiseListView();
|
||||
// initialiseLobbyControllerThread();
|
||||
initialiseImageView(); // parrot gif init
|
||||
// initialiseImageView(); // parrot gif init
|
||||
|
||||
// set up client state query thread, so that when it receives the race-started packet
|
||||
// it can switch to the race view
|
||||
ClientStateQueryingRunnable clientStateQueryingRunnable = new ClientStateQueryingRunnable();
|
||||
clientStateQueryingRunnable.addObserver(this);
|
||||
Thread clientStateQueryingThread = new Thread(clientStateQueryingRunnable, "Client State querying thread");
|
||||
clientStateQueryingThread.setDaemon(true);
|
||||
clientStateQueryingThread.start();
|
||||
// ClientStateQueryingRunnable clientStateQueryingRunnable = new ClientStateQueryingRunnable();
|
||||
// clientStateQueryingRunnable.addObserver(this);
|
||||
// Thread clientStateQueryingThread = new Thread(clientStateQueryingRunnable, "Client State querying thread");
|
||||
// clientStateQueryingThread.setDaemon(true);
|
||||
// clientStateQueryingThread.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (arg.equals("game started") && !switchedPane) {
|
||||
switchToRaceView();
|
||||
}
|
||||
if (arg.equals(("update players"))) {
|
||||
initialiseListView();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// @Override
|
||||
// public void update(Observable o, Object arg) {
|
||||
// Platform.runLater(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// if (arg.equals("game started") && !switchedPane) {
|
||||
// switchToRaceView();
|
||||
// }
|
||||
// if (arg.equals(("update players"))) {
|
||||
// initialiseListView();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
|
||||
|
||||
private void initialiseListView() {
|
||||
firstListView.getItems().clear();
|
||||
secondListView.getItems().clear();
|
||||
thirdListView.getItems().clear();
|
||||
fourthListView.getItems().clear();
|
||||
fifthListView.getItems().clear();
|
||||
sixthListView.getItems().clear();
|
||||
seventhListView.getItems().clear();
|
||||
eighthListView.getItems().clear();
|
||||
// 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,
|
||||
@@ -159,19 +169,19 @@ public class LobbyController implements Initializable, Observer{
|
||||
ol.removeAll();
|
||||
}
|
||||
|
||||
firstCompetitor.add(ClientState.getClientSourceId());
|
||||
// firstCompetitor.add(ClientState.getClientSourceId());
|
||||
|
||||
int competitorIndex = 1;
|
||||
for (Integer yachtId : ClientState.getBoats().keySet()) {
|
||||
// break if there are more than 7 competitors
|
||||
if (competitorIndex >= 8) {
|
||||
break;
|
||||
}
|
||||
if (!yachtId.equals(Integer.parseInt(ClientState.getClientSourceId()))) {
|
||||
competitors.get(competitorIndex).add(String.valueOf(yachtId));
|
||||
competitorIndex++;
|
||||
}
|
||||
}
|
||||
// int competitorIndex = 1;
|
||||
// for (Integer yachtId : ClientState.getBoats().keySet()) {
|
||||
// // break if there are more than 7 competitors
|
||||
// if (competitorIndex >= 8) {
|
||||
// break;
|
||||
// }
|
||||
// if (!yachtId.equals(Integer.parseInt(ClientState.getClientSourceId()))) {
|
||||
// competitors.get(competitorIndex).add(String.valueOf(yachtId));
|
||||
// competitorIndex++;
|
||||
// }
|
||||
// }
|
||||
|
||||
firstListView.setItems(firstCompetitor);
|
||||
secondListView.setItems(secondCompetitor);
|
||||
@@ -183,20 +193,20 @@ public class LobbyController implements Initializable, Observer{
|
||||
eighthListView.setItems(eighthCompetitor);
|
||||
}
|
||||
|
||||
private void initialiseLobbyControllerThread() {
|
||||
Thread thread = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
thread.start();
|
||||
}
|
||||
// private void initialiseLobbyControllerThread() {
|
||||
// Thread thread = new Thread(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// Platform.runLater(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// thread.start();
|
||||
// }
|
||||
|
||||
private void initialiseImageView() {
|
||||
Image image1 = new Image(getClass().getResourceAsStream("/ParrotGif/alistair.gif"));
|
||||
@@ -223,7 +233,7 @@ public class LobbyController implements Initializable, Observer{
|
||||
setContentPane("/views/StartScreenView.fxml");
|
||||
GameState.setCurrentStage(GameStages.CANCELLED);
|
||||
// TODO: 20/07/17 wmu16 - Implement some way of terminating the game
|
||||
ClientState.setConnectedToHost(false);
|
||||
// ClientState.setConnectedToHost(false);
|
||||
}
|
||||
|
||||
@FXML
|
||||
@@ -231,7 +241,8 @@ public class LobbyController implements Initializable, Observer{
|
||||
// setContentPane("/views/RaceView.fxml");
|
||||
playTheme();
|
||||
GameState.setCurrentStage(GameStages.RACING);
|
||||
mainServerThread.startGame();
|
||||
for (LobbyCloseListener readyListener : lobbyListeners)
|
||||
readyListener.notify(CloseStatus.READY);
|
||||
}
|
||||
|
||||
|
||||
@@ -253,14 +264,27 @@ public class LobbyController implements Initializable, Observer{
|
||||
}
|
||||
}
|
||||
|
||||
private void switchToRaceView() {
|
||||
if (!switchedPane) {
|
||||
switchedPane = true;
|
||||
setContentPane("/views/RaceView.fxml");
|
||||
}
|
||||
// private void switchToRaceView() {
|
||||
// if (!switchedPane) {
|
||||
// switchedPane = true;
|
||||
// setContentPane("/views/RaceView.fxml");
|
||||
// }
|
||||
// }
|
||||
// TODO: 26/07/17 cir27 - Could probably be done in a cleaner way.
|
||||
public void setTitle (String title) {
|
||||
lobbyIpText.setText(title);
|
||||
}
|
||||
|
||||
public void setMainServerThread(MainServerThread mainServerThread) {
|
||||
this.mainServerThread = mainServerThread;
|
||||
public void addCloseListener(LobbyCloseListener listener) {
|
||||
lobbyListeners.add(listener);
|
||||
}
|
||||
|
||||
public void setPlayerListSource (ObservableList<String> players) {
|
||||
if (competitorsListView != null)
|
||||
competitorsListView.setItems(players);
|
||||
if (firstListView != null) {
|
||||
firstListView.setItems(players);
|
||||
firstImageView.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user