diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index d693491..c4ba5da 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -8,6 +8,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ClientPinger; @@ -42,6 +43,7 @@ public class Client { private ClientModel clientModel; private GameStateModel gameStateModel; private GameController gameController; + private LoungeSceneViewController loungeSceneViewController; /** * Saves the position of the client, gets refreshed everytime the client gets a vote request. @@ -75,6 +77,8 @@ public class Client { clientPinger = new ClientPinger(this, this.socket); this.gameStateModel = new GameStateModel(); this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel); + this.loungeSceneViewController = new LoungeSceneViewController(); + LoungeSceneViewController.setClient(ChatApp.getClientModel()); } catch (IOException e) { e.printStackTrace(); } @@ -351,7 +355,7 @@ public class Client { //TODO break; case GuiParameters.listOfPLayers: - updateListOfClients(data); + updateListOfClients(data); //TODO break; //case GuiParameters.viewChangeToGame: (commented out due to compiling error) @@ -380,7 +384,7 @@ public class Client { int n = arr.length; for (int i = 0; i < n; i = i + 2) { list.add(new SimpleStringProperty(arr[i])); - ChatController.getClient().addLobbyToList(new SimpleStringProperty(arr[i])); + loungeSceneViewController.addLobbyToList(new SimpleStringProperty(arr[i])); } } @@ -388,10 +392,10 @@ public class Client { String[] arr = data.split(":"); ObservableList list = new SimpleListProperty<>(); int n = arr.length; - for (int i = 0; i < n; i = i + 2) { + for (int i = 0; i < n; i = i + 1) { list.add(new SimpleStringProperty(arr[i])); } - ChatController.getClient().getAllClients().setAll(); + loungeSceneViewController.updateClientListView(list); } /** diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java index 9ad8909..4d9021c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java @@ -70,6 +70,10 @@ public class ClientModel { this.allClients.add(nameAndId); } + public void updateClientList(ObservableList clients) { + + } + public void removeClientFromList(String id){ Iterator it = allClients.iterator(); while(it.hasNext()){ diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbyListItem.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbyListItem.java index 5259334..5cea625 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbyListItem.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbyListItem.java @@ -1,19 +1,22 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; import java.util.Set; +import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import javafx.collections.ObservableSet; import javafx.scene.control.Label; +import javafx.scene.control.ListCell; import javafx.scene.control.ToggleButton; -public class LobbyListItem { +public class LobbyListItem extends ListCell { - private final Label lobbyID; - private final Label adminName; - private Set clientsInLobby; + private final String lobbyID; + private final String adminName; + private ObservableSet clientsInLobby; private final ToggleButton button; - public LobbyListItem(Label lobbyID, Label adminName, - Set clientsInLobby, ToggleButton button) { + public LobbyListItem(String lobbyID, String adminName, + ObservableSet clientsInLobby, ToggleButton button) { this.lobbyID = lobbyID; this.adminName = adminName; this.clientsInLobby = clientsInLobby; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java index 29b8c26..facb03b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java @@ -6,6 +6,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.LeaveServerButtonP import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import java.net.URL; import java.util.ResourceBundle; +import javafx.beans.property.SimpleListProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.collections.ObservableList; @@ -17,6 +18,7 @@ import javafx.scene.control.Button; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.control.TextField; +import javafx.scene.control.TitledPane; import javafx.scene.control.ToolBar; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; @@ -47,6 +49,11 @@ public class LoungeSceneViewController implements Initializable { public static ClientModel client; + public LoungeSceneViewController() { + super(); + + } + /** * Called to initialize a controller after its root element has been completely processed. @@ -74,8 +81,27 @@ public class LoungeSceneViewController implements Initializable { this.ClientListView.setItems(names); } - public void addLobby(LobbyListItem lobby) { - //TODO + /** + * Adds a lobby to the view + * @param lobbyID + * @param admin + * @param players + */ + public void addLobby(String lobbyID, String admin, String players) { + TitledPane lobbyObject = new TitledPane(); + lobbyObject.setId(lobbyID+admin); + lobbyObject.textProperty().setValue("Lobby Nr: " + lobbyID + " Admin: " + admin); + + ObservableList listOfPlayersInLobby = new SimpleListProperty<>(); + + String[] playersArr = players.split(":"); + int noOfPlayers = playersArr.length; + for(int i = 0; i < noOfPlayers; i++){ + listOfPlayersInLobby.add(new SimpleStringProperty(playersArr[i])); + } + ListView view = new ListView(listOfPlayersInLobby); + lobbyObject.contentProperty().set(view); + LobbyListView.getItems().add(lobbyObject); } public void addClientToList(String s) {