From 4ae422b47b8aa9974867b76ee27896753aca8402 Mon Sep 17 00:00:00 2001 From: Haoming Yin Date: Tue, 25 Jul 2017 21:50:23 +1200 Subject: [PATCH] When a player connects to the server, lobby will now show their user id and profile instead of showing all the profile gif at the beginning, #story[1055] #pair[hyi25, zyt10] --- .../seng302/client/ClientToServerThread.java | 2 +- .../seng302/controllers/LobbyController.java | 65 +++++++------------ 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/src/main/java/seng302/client/ClientToServerThread.java b/src/main/java/seng302/client/ClientToServerThread.java index ba5caf37..1e76bd07 100644 --- a/src/main/java/seng302/client/ClientToServerThread.java +++ b/src/main/java/seng302/client/ClientToServerThread.java @@ -153,7 +153,7 @@ public class ClientToServerThread implements Runnable { try { socket.close(); } catch (IOException e) { - System.out.println("IO error in server thread upon trying to close socket"); + clientLog("Failed to close the socket", 0); } } diff --git a/src/main/java/seng302/controllers/LobbyController.java b/src/main/java/seng302/controllers/LobbyController.java index af2b0793..5e5c4aea 100644 --- a/src/main/java/seng302/controllers/LobbyController.java +++ b/src/main/java/seng302/controllers/LobbyController.java @@ -1,10 +1,6 @@ package seng302.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.*; @@ -84,6 +80,10 @@ public class LobbyController implements Initializable, Observer{ private static ObservableList seventhCompetitor = FXCollections.observableArrayList(); private static ObservableList eighthCompetitor = FXCollections.observableArrayList(); private ClientStateQueryingRunnable clientStateQueryingRunnable; + private static List gifImageViews; + private static List listViews; + + private int MAX_NUM_PLAYERS = 8; private Boolean switchedPane = false; private MainServerThread mainServerThread; @@ -113,8 +113,18 @@ public class LobbyController implements Initializable, Observer{ lobbyIpText.setText("Connected to IP: "); readyButton.setDisable(true); } + + gifImageViews = new ArrayList<>(); + Collections.addAll(gifImageViews, firstImageView, secondImageView, thirdImageView, fourthImageView, + fifthImageView, sixthImageView, seventhImageView, eighthImageView); + listViews = new ArrayList<>(); + Collections.addAll(listViews, firstListView, secondListView, thirdListView, fourthListView, fifthListView, + sixthListView, seventhListView, eighthListView); + competitors = new ArrayList<>(); + Collections.addAll(competitors, firstCompetitor, secondCompetitor, thirdCompetitor, + fourthCompetitor, fifthCompetitor, sixthCompetitor, seventhCompetitor, eighthCompetitor); + initialiseListView(); -// initialiseLobbyControllerThread(); initialiseImageView(); // parrot gif init // set up client state query thread, so that when it receives the race-started packet @@ -142,45 +152,16 @@ public class LobbyController implements Initializable, Observer{ } 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(); + listViews.forEach(listView -> listView.getItems().clear()); + gifImageViews.forEach(gif -> gif.setVisible(false)); + competitors.forEach(ol -> ol.removeAll()); - competitors = new ArrayList<>(); - Collections.addAll(competitors, firstCompetitor, secondCompetitor, thirdCompetitor, - fourthCompetitor, fifthCompetitor, sixthCompetitor, seventhCompetitor, eighthCompetitor); - - for (ObservableList ol : competitors) { - ol.removeAll(); + List ids = new ArrayList<>(ClientState.getBoats().keySet()); + for (int i = 0; i < ids.size(); i++) { + competitors.get(i).add(String.format("Player ID: %d", ids.get(i))); + listViews.get(i).setItems(competitors.get(i)); + gifImageViews.get(i).setVisible(true); } - - 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++; - } - } - - 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() {