From 3b5b2da60e8aac953eaff12c2edbdef7d6197d16 Mon Sep 17 00:00:00 2001 From: Seraina Date: Tue, 17 May 2022 16:49:35 +0200 Subject: [PATCH] Changed some layouts, wasted a lot of time and made sure the LobbyDisplayHandler-Updater can only have one thread at a time that is writing to the same data --- .../dbis/cs108/multiplayer/client/Client.java | 12 ++++-- .../gui/lounge/ListOfLobbiesController.java | 8 ++++ .../gui/lounge/ListOfLobbiesScrollPane.fxml | 6 +-- .../client/gui/lounge/LobbiesBorderPane.css | 41 +++++++++++++++++++ .../client/gui/lounge/LoungeSceneView.fxml | 10 +++-- .../client/gui/lounge/listStyle.css | 13 +----- .../client/gui/lounge/loungStyle.css | 17 +------- 7 files changed, 71 insertions(+), 36 deletions(-) create mode 100644 src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbiesBorderPane.css 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 d157536..7eba108 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 @@ -10,6 +10,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.Sprites; 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.ListOfLobbiesController; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LobbyDisplayHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController; @@ -382,12 +383,13 @@ public class Client { chatApp.getLoungeSceneViewController().addGameView(); gameStateModel.setGameOver(false); dayNightChangeListener = new DayNightChangeListener(gameStateModel, chatApp, Integer.MAX_VALUE); + ListOfLobbiesController.setGameOngoing(true); new Thread(dayNightChangeListener).start(); break; case GuiParameters.viewChangeToLobby: chatApp.getLoungeSceneViewController().removeGameView(); gameStateModel.setGameOver(true); - //TODO + ListOfLobbiesController.setGameOngoing(false); break; case GuiParameters.updateHighScore: chatApp.getLoungeSceneViewController().addHighScore(data); @@ -398,9 +400,13 @@ public class Client { case GuiParameters.updateLobbyString: if(!data.isEmpty()) { lobbyDisplayHandler.updateLobbies(data); - ChatApp.getListController().updateList(); + if(!ListOfLobbiesController.isGameOngoing()) { + ChatApp.getListController().updateList(); + } } else { - ChatApp.getListController().clearVBox(); + if(!ListOfLobbiesController.isGameOngoing()) { + ChatApp.getListController().clearVBox(); + } } break; default: diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesController.java index 3594f1e..df13437 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesController.java @@ -44,11 +44,19 @@ public class ListOfLobbiesController implements Initializable { private ChatApp chatApp; //TODO: VeryImportant to set this one right! private HashSet treeViews = new HashSet(); + private static boolean gameOngoing = false; public void setChatApp(ChatApp chatApp) { this.chatApp = chatApp; } + public static void setGameOngoing(boolean gameOngoing) { + ListOfLobbiesController.gameOngoing = gameOngoing; + } + + public static boolean isGameOngoing() { + return gameOngoing; + } public void updateList() { new Thread(new Runnable() { diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesScrollPane.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesScrollPane.fxml index f34c759..fb591cf 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesScrollPane.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/ListOfLobbiesScrollPane.fxml @@ -4,11 +4,11 @@ - + - + - + diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbiesBorderPane.css b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbiesBorderPane.css new file mode 100644 index 0000000..2dc7e85 --- /dev/null +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LobbiesBorderPane.css @@ -0,0 +1,41 @@ +*{ + -fx-background-color: transparent; + -fx-text-fill: white; + -fx-font-family: serif; +} + + +.border-pane{ + -fx-background-color: rgb(15,26,59,0.8); + -fx-border-color: rgb(204,186,138); + -fx-border-width: 10; +} + +.tool-bar{ + -fx-background-color: rgb(15,26,59,0.8); +} + +#highScore{ + -fx-background-color: rgb(15,26,59,0.8); + -fx-text-fill: white; + -fx-font-family: serif; +} + +#listTilePane{ + -fx-background-color: rgb(15,26,59,0.8) +} + +.button{ + -fx-background-color: rgb(204,186,138); + -fx-effect: innershadow(gaussian, rgb(142,121,89), 10, 0.5 , 2, 2); + -fx-text-fill: black; +} + +.button:pressed{ + -fx-background-color: rgb(90,69,51); + -fx-text-fill: rgb(197,177,131); +} + +.button:hover{ + -fx-effect: innershadow(gaussian, rgb(90,69,51), 10, 0.5 , 2, 2); +} \ No newline at end of file diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml index 1a8f9b7..cb75de0 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml @@ -37,9 +37,9 @@
- + - +