Made loungeView a sensible size and added a button and made it at the moment the main scene

This commit is contained in:
Seraina 2022-05-01 10:46:58 +02:00
parent 3f88831466
commit 505577817e
6 changed files with 54 additions and 41 deletions

View File

@ -80,16 +80,14 @@ public class Client {
} }
sendMsgToServer(Protocol.clientLogin + "$" + systemName); sendMsgToServer(Protocol.clientLogin + "$" + systemName);
this.chatApp = new ChatApp(new ClientModel(systemName, this)); this.chatApp = new ChatApp(new ClientModel(systemName, this));
//this.chatGui = new GUI(this.chatApp); this.gui = new GUI(this.chatApp);
clientPinger = new ClientPinger(this, this.socket); clientPinger = new ClientPinger(this, this.socket);
this.gameStateModel = new GameStateModel(); this.gameStateModel = new GameStateModel();
this.chatApp = new ChatApp(new ClientModel(systemName, this)); this.chatApp = new ChatApp(new ClientModel(systemName, this));
ChatApp.setGameController(new GameController(ChatApp.getClientModel(), gameStateModel)); ChatApp.setGameController(new GameController(ChatApp.getClientModel(), gameStateModel));
this.chatGui = new GUI(this.chatApp); this.gui = new GUI(this.chatApp);
this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel); this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel);
this.loungeApp = new LoungeApp(ChatApp.getClientModel()); this.loungeApp = new LoungeApp(ChatApp.getClientModel());
//this.loungeGui = new GUI(this.loungeApp);
this.gui = new GUI(this.chatApp,this.loungeApp);
this.loungeSceneViewController = new LoungeSceneViewController(); this.loungeSceneViewController = new LoungeSceneViewController();
LoungeSceneViewController.setClient(ChatApp.getClientModel()); LoungeSceneViewController.setClient(ChatApp.getClientModel());
} catch (IOException e) { } catch (IOException e) {
@ -273,7 +271,7 @@ public class Client {
cP.start(); cP.start();
client.userInputListener(); //this one blocks. client.userInputListener(); //this one blocks.
//Start the GUI //Start the GUI
GUI gui = new GUI(client.chatApp,client.loungeApp); GUI gui = new GUI(client.chatApp);
Thread guiThread = new Thread(gui); Thread guiThread = new Thread(gui);
guiThread.start(); guiThread.start();
LOGGER.info("7"); LOGGER.info("7");
@ -372,7 +370,7 @@ public class Client {
} }
break; break;
case GuiParameters.listOfLobbies: case GuiParameters.listOfLobbies:
//updateListOfLobbies(data); (commented out due to compiling error) updateListOfLobbies(data);
//TODO //TODO
break; break;
case GuiParameters.VoteIsOver: case GuiParameters.VoteIsOver:

View File

@ -1,7 +1,10 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel;
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 java.net.URL; import java.net.URL;
import java.util.Objects; import java.util.Objects;
import javafx.application.Application; import javafx.application.Application;
@ -23,8 +26,8 @@ public class ChatApp extends Application {
private static GameController gameController; private static GameController gameController;
private ClientModel cModel; private ClientModel cModel;
private GameController gameC; private GameController gameC;
private static LoungeSceneViewController loungeSceneViewController; private static LoungeSceneViewController loungeSceneViewController;
private LoungeSceneViewController lSVController;
public ChatApp() { public ChatApp() {
super(); super();
@ -59,6 +62,11 @@ public class ChatApp extends Application {
this.gameC = gameC; this.gameC = gameC;
} }
public void setlSVController(
LoungeSceneViewController lSVController) {
this.lSVController = lSVController;
}
public ClientModel getcModel() { public ClientModel getcModel() {
return cModel; return cModel;
} }
@ -88,6 +96,10 @@ public class ChatApp extends Application {
return chatController; return chatController;
} }
public LoungeSceneViewController getlSVController() {
return lSVController;
}
public static void setLoungeSceneViewController(LoungeSceneViewController controller) { public static void setLoungeSceneViewController(LoungeSceneViewController controller) {
loungeSceneViewController = controller; loungeSceneViewController = controller;
} }
@ -110,33 +122,33 @@ public class ChatApp extends Application {
public void start(Stage primaryStage) throws Exception { public void start(Stage primaryStage) throws Exception {
this.setcModel(clientModel); this.setcModel(clientModel);
this.setGameC(gameController); this.setGameC(gameController);
this.setlSVController(loungeSceneViewController);
gameC.setClient(cModel); gameC.setClient(cModel);
gameC.setGameStateModel(GameController.getGameStateModel()); gameC.setGameStateModel(GameController.getGameStateModel());
URL chatResource = ChatApp.class.getResource( URL chatResource = ChatApp.class.getResource(
"chat/ChatView.fxml"); "chat/ChatView.fxml");
URL gameResource = ChatApp.class.getResource( URL gameResource = ChatApp.class.getResource(
"game/GameDayAll.fxml"); "game/GameDayAll.fxml");
URL loungeResource = ChatApp.class.getResource(
"lounge/LoungeSceneView.fxml");
try { try {
Parent root = FXMLLoader.load( Parent lounge = FXMLLoader.load(
Objects.requireNonNull(gameResource)); Objects.requireNonNull(loungeResource));
Node chat = FXMLLoader.load(Objects.requireNonNull(chatResource));
Node game = FXMLLoader.load(Objects.requireNonNull(gameResource));
// TODO bin chatController.getChatPaneRoot() border to root border for rezising // TODO bin chatController.getChatPaneRoot() border to root border for rezising
Scene scene = new Scene(root); Scene scene = new Scene(lounge);
scene.setRoot(root); scene.setRoot(lounge);
primaryStage.setScene(scene); primaryStage.setScene(scene);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
primaryStage.setResizable(false); primaryStage.setResizable(false);
Node chat = FXMLLoader.load(
Objects.requireNonNull(chatResource));
primaryStage.setTitle("Night Train To Budapest"); primaryStage.setTitle("Night Train To Budapest");
primaryStage.setResizable(true); primaryStage.setResizable(true);
primaryStage.setTitle("Chat");
primaryStage.show(); primaryStage.show();
}
}
public static void main(String[] args) { public static void main(String[] args) {
launch(args); launch(args);

View File

@ -1,7 +1,7 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp;
import javafx.application.Application; import javafx.application.Application;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -12,21 +12,21 @@ public class GUI implements Runnable {
public static final BudaLogConfig l = new BudaLogConfig(LOGGER); public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
private ChatApp chatApp; private ChatApp chatApp;
private LoungeApp loungeApp; //private LoungeApp loungeApp;
public GUI(ChatApp chatApp) { public GUI(ChatApp chatApp) {
this.chatApp = chatApp; this.chatApp = chatApp;
} }
public GUI(LoungeApp loungeApp) { /*public GUI(LoungeApp loungeApp) {
this.loungeApp = loungeApp; this.loungeApp = loungeApp;
} }*/
public GUI(ChatApp chatApp, /*public GUI(ChatApp chatApp,
LoungeApp loungeApp) { LoungeApp loungeApp) {
this.chatApp = chatApp; this.chatApp = chatApp;
this.loungeApp = loungeApp; this.loungeApp = loungeApp;
} }*/
/** /**
* When an object implementing interface {@code Runnable} is used to create a thread, starting the * When an object implementing interface {@code Runnable} is used to create a thread, starting the
@ -42,6 +42,6 @@ public class GUI implements Runnable {
public void run() { public void run() {
LOGGER.info("here"); LOGGER.info("here");
//Application.launch(this.chatApp.getClass()); //Application.launch(this.chatApp.getClass());
Application.launch(this.loungeApp.getClass()); Application.launch(this.chatApp.getClass());
} }
} }

View File

@ -1,8 +1,8 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel;
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.chat.ChatController;
import java.net.URL; import java.net.URL;
import java.util.Objects; import java.util.Objects;

View File

@ -1,7 +1,7 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.ChangeNameButtonPressedEventHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.ChangeNameButtonPressedEventHandler;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.LeaveServerButtonPressedEventHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.LeaveServerButtonPressedEventHandler;
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol;
@ -38,8 +38,10 @@ import javafx.scene.text.Text;
public class LoungeSceneViewController implements Initializable { public class LoungeSceneViewController implements Initializable {
Protocol protocol;
@FXML
public Button leaveLobbyButton;
@FXML
public Button newGameButton; public Button newGameButton;
@FXML @FXML
private ListView<HBox> LobbyListView; private ListView<HBox> LobbyListView;
@ -80,9 +82,8 @@ public class LoungeSceneViewController implements Initializable {
@Override @Override
public void initialize(URL location, ResourceBundle resources) { public void initialize(URL location, ResourceBundle resources) {
ChatApp.setLoungeSceneViewController(this); ChatApp.setLoungeSceneViewController(this);
this.protocol = new Protocol();
ChangeNameButton.setOnAction(event -> changeName()); ChangeNameButton.setOnAction(event -> changeName());
LeaveServerButton.setOnAction(new LeaveServerButtonPressedEventHandler()); LeaveServerButton.setOnAction(event -> leaveServer());
newGameButton.setOnAction(event -> newGame()); newGameButton.setOnAction(event -> newGame());
LobbyListView.setVisible(true); LobbyListView.setVisible(true);
ClientListView.setVisible(true); ClientListView.setVisible(true);
@ -169,8 +170,9 @@ public class LoungeSceneViewController implements Initializable {
client.getClient().sendMsgToServer(Protocol.startANewGame); client.getClient().sendMsgToServer(Protocol.startANewGame);
} }
; public void leaveLobby() {client.getClient().sendMsgToServer(Protocol.leaveLobby);}
public void leaveServer() {client.getClient().sendMsgToServer(Protocol.clientQuitRequest);}
/** /**
* Used to add a new player to the list of players. * Used to add a new player to the list of players.
* "NPLOS" {@link ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters} * "NPLOS" {@link ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters}

View File

@ -7,36 +7,37 @@
<?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1080.0" prefWidth="1920.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController"> <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController">
<children> <children>
<BorderPane fx:id="LoungeSceneBorderPane" layoutX="860.0" layoutY="440.0" prefHeight="1080.0" prefWidth="1920.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <BorderPane fx:id="LoungeSceneBorderPane" layoutX="860.0" layoutY="440.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<top> <top>
<ToolBar fx:id="NTtBToolBar" prefHeight="77.0" prefWidth="1913.0" BorderPane.alignment="CENTER"> <ToolBar fx:id="NTtBToolBar" prefHeight="77.0" BorderPane.alignment="CENTER">
<items> <items>
<Button fx:id="ChangeNameButton" mnemonicParsing="false" text="Change Name" /> <Button fx:id="ChangeNameButton" mnemonicParsing="false" text="Change Name" />
<Button fx:id="LeaveServerButton" mnemonicParsing="false" text="Leave server" /> <Button fx:id="LeaveServerButton" mnemonicParsing="false" text="Leave server" />
<Button fx:id="leaveLobbyButton" mnemonicParsing="false" onAction="#leaveLobby" text="Leave Lobby" />
</items> </items>
</ToolBar> </ToolBar>
</top> </top>
<center> <center>
<AnchorPane prefHeight="661.0" prefWidth="600.0" BorderPane.alignment="CENTER"> <AnchorPane BorderPane.alignment="CENTER">
<children> <children>
<Button fx:id="newGameButton" layoutX="272.0" layoutY="103.0" mnemonicParsing="false" text="New Game" /> <Button fx:id="newGameButton" layoutX="136.0" layoutY="105.0" mnemonicParsing="false" text="New Game" />
</children> </children>
</AnchorPane> </AnchorPane>
</center> </center>
<bottom> <bottom>
<AnchorPane fx:id="ChatArea" prefHeight="342.0" prefWidth="1920.0" BorderPane.alignment="CENTER"> <AnchorPane fx:id="ChatArea" BorderPane.alignment="CENTER">
<children> <children>
<HBox fx:id="ChatAreaHBox" layoutX="394.0" layoutY="-9.0" prefHeight="322.0" prefWidth="1920.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> <HBox fx:id="ChatAreaHBox" layoutX="394.0" layoutY="-33.0" prefWidth="842.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="-33.0" />
</children> </children>
</AnchorPane> </AnchorPane>
</bottom> </bottom>
<left> <left>
<ListView fx:id="ClientListView" prefHeight="681.0" prefWidth="661.0" BorderPane.alignment="CENTER" /> <ListView fx:id="ClientListView" BorderPane.alignment="CENTER" />
</left> </left>
<right> <right>
<ListView fx:id="LobbyListView" prefHeight="681.0" prefWidth="641.0" BorderPane.alignment="CENTER" /> <ListView fx:id="LobbyListView" BorderPane.alignment="CENTER" />
</right> </right>
</BorderPane> </BorderPane>
</children> </children>