Changed GameView and TrainAnimationViewDay so that the Game doesn't display the rooms, that way I could change the lobby into its boarderpane layout again and just add the gameview to the very front

This commit is contained in:
Seraina 2022-05-15 09:21:57 +02:00
parent 0e6be2ee29
commit da2e4049ff
6 changed files with 276 additions and 189 deletions

View File

@ -1,6 +1,7 @@
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
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.util.ResourceBundle;
@ -20,9 +21,21 @@ public class TrainAnimationDayController implements Initializable {
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
@FXML
public ImageView wagonWallImageView;
private ImageView wagonWallImageView;
@FXML
public ImageView foreGroundAnimationImageView1;
private ImageView foreGroundAnimationImageView1;
@FXML
private ImageView room0ImageView;
@FXML
private ImageView room1ImageView;
@FXML
private ImageView room2ImageView;
@FXML
private ImageView room3ImageView;
@FXML
private ImageView room4ImageView;
@FXML
private ImageView room5ImageView;
@FXML
private ImageView backGroundAnimationImageView;
@FXML
@ -54,11 +67,31 @@ public class TrainAnimationDayController implements Initializable {
}
public void updateSprites(){
shadowTrain.setImage(Sprites.getShadow());
wagonBGImageView.setImage(Sprites.getSecondWagon());
wagonFloorImageView.setImage(Sprites.getEmptyWagon());
wagonFullImageView.setImage(Sprites.getFullWagon());
lokiImageView.setImage(Sprites.getLoki());
Platform.runLater(new Runnable() {
@Override
public void run() {
try{
shadowTrain.setImage(Sprites.getShadow());
wagonBGImageView.setImage(Sprites.getSecondWagon());
wagonFloorImageView.setImage(Sprites.getEmptyWagon());
wagonFullImageView.setImage(Sprites.getFullWagon());
lokiImageView.setImage(Sprites.getLoki());
if(GameController.getGameStateModel().getDayClone()) {
Sprites.updateDayRoomSprites(GameController.getGameStateModel().getPassengerTrainClone()[1], GameController.getGameStateModel().getKickedOff());
} else {
Sprites.updateNightRoomSprites(GameController.getGameStateModel().getPassengerTrainClone()[1], GameController.getGameStateModel().getKickedOff());
}
room0ImageView.setImage(Sprites.getARoom(0));
room1ImageView.setImage(Sprites.getARoom(1));
room2ImageView.setImage(Sprites.getARoom(2));
room3ImageView.setImage(Sprites.getARoom(3));
room4ImageView.setImage(Sprites.getARoom(4));
room5ImageView.setImage(Sprites.getARoom(5));
} catch (Exception e) {
LOGGER.info(e.getMessage());
}
}
});
}
public ChatApp getChatApp() {
@ -81,6 +114,133 @@ public class TrainAnimationDayController implements Initializable {
return wagonFullImageView;
}
public void moveRoom0Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room0ImageView.setY(-20);
}
});
}
public void moveRoom0Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room0ImageView.setY(0);
}
});
}
public void moveRoom1Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room1ImageView.setY(-20);
}
});
}
public void moveRoom1Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room1ImageView.setY(0);
}
});
}
public void moveRoom2Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room2ImageView.setY(-20);
}
});
}
public void moveRoom2Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room2ImageView.setY(0);
}
});
}
public void moveRoom3Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room3ImageView.setY(-20);
}
});
}
public void moveRoom3Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room3ImageView.setY(0);
}
});
}
public void moveRoom4Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room4ImageView.setY(-20);
}
});
}
public void moveRoom4Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room4ImageView.setY(0);
}
});
}
public void moveRoom5Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room5ImageView.setY(-20);
}
});
}
public void moveRoom5Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room5ImageView.setY(0);
}
});
}
public void showFullWagon() {
Platform.runLater(new Runnable() {
@Override
public void run() {
wagonFullImageView.setVisible(true);
}
});
}
public void dontShowFullWagon() {
Platform.runLater(new Runnable() {
@Override
public void run() {
wagonFullImageView.setVisible(false);
}
});
}
@Override
public void initialize(URL location, ResourceBundle resources) {
LoungeSceneViewController.setTrainAnimationDayController(this);
@ -101,61 +261,4 @@ public class TrainAnimationDayController implements Initializable {
}
});
}
public void showFullWagon() {
Platform.runLater(new Runnable() {
@Override
public void run() {
wagonFullImageView.setVisible(true);
}
});
}
public void dontShowFullWagon() {
Platform.runLater(new Runnable() {
@Override
public void run() {
wagonFullImageView.setVisible(false);
}
});
}
/**
* Adds the gameView to the existing LobbyView
*/
public void addGameView(ChatApp c) {
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
TrainAnimationDayController controller = new TrainAnimationDayController();
LOGGER.debug(gamePane);
LOGGER.debug(loki);
LOGGER.debug(cApp);
gameAnchorPane.getChildren().add(c.game);
wagonFullImageView.setVisible(false);
} catch (Exception e) {
LOGGER.debug("Not yet initialized");
e.printStackTrace();
}
}
});
}
/**
* Removes the GameView again - needed when a game is over or a lobby is left
*/
public void removeGameView(ChatApp c) {
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
gameAnchorPane.getChildren().clear();
wagonFullImageView.setVisible(true);
} catch (Exception e) {
LOGGER.debug("Not yet initialized");
}
}
});
}
}

View File

@ -7,6 +7,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.Sprites;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.SpritesDay;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.TrainAnimationDayController;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController;
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters;
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel;
@ -138,12 +139,12 @@ public class GameController implements Initializable {
} else {
Sprites.updateNightRoomSprites(gameStateModel.getPassengerTrainClone()[1], gameStateModel.getKickedOff());
}
room0ImageView.setImage(Sprites.getARoom(0));
/*room0ImageView.setImage(Sprites.getARoom(0));
room1ImageView.setImage(Sprites.getARoom(1));
room2ImageView.setImage(Sprites.getARoom(2));
room3ImageView.setImage(Sprites.getARoom(3));
room4ImageView.setImage(Sprites.getARoom(4));
room5ImageView.setImage(Sprites.getARoom(5));
room5ImageView.setImage(Sprites.getARoom(5));*/
trainAnimation.updateSprites();
} catch (Exception e) {
LOGGER.info(e.getMessage());
@ -160,6 +161,7 @@ public class GameController implements Initializable {
return chatAreaGame;
}
public void setVoteButtonVisibilityDay(GameStateModel g){
Platform.runLater(new Runnable() {
@Override
@ -236,21 +238,11 @@ public class GameController implements Initializable {
}
public void moveRoom0Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room0ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom0Up();
}
public void moveRoom0Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room0ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom0Down();
}
/**
@ -261,21 +253,11 @@ public class GameController implements Initializable {
.sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 1);
}
public void moveRoom1Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room1ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom1Up();
}
public void moveRoom1Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room1ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom1Down();
}
/**
@ -287,21 +269,11 @@ public class GameController implements Initializable {
}
public void moveRoom2Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room2ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom2Up();
}
public void moveRoom2Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room2ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom2Down();
}
/**
@ -312,21 +284,11 @@ public class GameController implements Initializable {
.sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 3);
}
public void moveRoom3Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room3ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom3Up();
}
public void moveRoom3Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room3ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom3Down();
}
/**
@ -337,21 +299,11 @@ public class GameController implements Initializable {
.sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 4);
}
public void moveRoom4Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room4ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom4Up();
}
public void moveRoom4Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room4ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom4Down();
}
/**
@ -362,21 +314,11 @@ public class GameController implements Initializable {
.sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 5);
}
public void moveRoom5Up() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room5ImageView.setY(-20);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom5Up();
}
public void moveRoom5Down() {
Platform.runLater(new Runnable() {
@Override
public void run() {
room5ImageView.setY(0);
}
});
LoungeSceneViewController.getTrainAnimationDayController().moveRoom5Down();
}
/**
@ -423,16 +365,20 @@ public class GameController implements Initializable {
Text notification = new Text(System.lineSeparator() + msg);
notification.setFill(Color.BLACK);
notification.setStyle("-fx-font: 50 arial;");
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
notificationText.getChildren().add(notification);
} catch (Exception e) {
LOGGER.debug(e.getMessage());
try {
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
notificationText.getChildren().add(notification);
} catch (Exception e) {
LOGGER.debug(e.getMessage());
}
}
}
});
});
} catch (Exception e) {
LOGGER.warn(e.getMessage());
}
//TODO: Wait for a certain time, then clear all again
}
@ -709,6 +655,7 @@ public class GameController implements Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
noiseButton.toFront();
ChatApp.setGameController(this);
}
}

View File

@ -49,7 +49,9 @@ public class LoungeSceneViewController implements Initializable {
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
@FXML
public AnchorPane buttonPane;
private AnchorPane buttonPane;
@FXML
private AnchorPane buttonLobbyPane;
@FXML
private AnchorPane backGroundAnimationPane;
@ -264,10 +266,9 @@ public class LoungeSceneViewController implements Initializable {
@Override
public void run() {
try {
LOGGER.debug(" in addGameView()" + chatApp);
newGameButton.setVisible(false);
startGame.setVisible(false);
trainAnimationDayController.addGameView(chatApp);
LOGGER.debug(" in GameView()" + chatApp);
buttonLobbyPane.setVisible(false);
gameDisplayAnchorPane.getChildren().add(chatApp.game);
} catch (Exception e) {
LOGGER.debug("Not yet initialized");
}
@ -283,9 +284,8 @@ public class LoungeSceneViewController implements Initializable {
@Override
public void run() {
try {
newGameButton.setVisible(true);
startGame.setVisible(true);
trainAnimationDayController.removeGameView(chatApp);
buttonLobbyPane.setVisible(true);
gameDisplayAnchorPane.getChildren().clear();
} catch (Exception e) {
LOGGER.debug("Not yet initialized");
}
@ -316,7 +316,7 @@ public class LoungeSceneViewController implements Initializable {
public void run() {
try {
LOGGER.debug("in addBackgroundDay() run()");
gameDisplayAnchorPane.getChildren().add(chatApp.backgroundDay);
backGroundAnimationPane.getChildren().add(chatApp.backgroundDay);
} catch (Exception e) {
e.printStackTrace();
}
@ -402,7 +402,6 @@ public class LoungeSceneViewController implements Initializable {
*/
public void startGame() {
client.getClient().sendMsgToServer(Protocol.startANewGame);
//addGameView();
}
/**

View File

@ -26,6 +26,36 @@
<Image url="@game/Day/Empty_Wagon.png" />
</image>
</ImageView>
<ImageView fx:id="room0ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room1.png" />
</image>
</ImageView>
<ImageView fx:id="room1ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room2.png" />
</image>
</ImageView>
<ImageView fx:id="room2ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room3.png" />
</image>
</ImageView>
<ImageView fx:id="room3ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room4.png" />
</image>
</ImageView>
<ImageView fx:id="room4ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room5.png" />
</image>
</ImageView>
<ImageView fx:id="room5ImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@game/Day/Room6.png" />
</image>
</ImageView>
<AnchorPane fx:id="gameAnchorPane" pickOnBounds="false" />
<ImageView fx:id="wagonWallImageView" fitHeight="843.75" fitWidth="1500.0" mouseTransparent="true" preserveRatio="true">
<image>

View File

@ -11,32 +11,32 @@
<AnchorPane id="BG" fx:id="gameBG" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" pickOnBounds="false" prefHeight="843.75" prefWidth="1500.0" styleClass="theme" stylesheets="@GameDay.css" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController">
<children>
<ImageView fx:id="room0ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room0ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room1.png" />
</image>
</ImageView>
<ImageView fx:id="room1ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room1ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room2.png" />
</image>
</ImageView>
<ImageView fx:id="room2ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room2ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room3.png" />
</image>
</ImageView>
<ImageView fx:id="room3ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room3ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room4.png" />
</image>
</ImageView>
<ImageView fx:id="room4ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room4ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room5.png" />
</image>
</ImageView>
<ImageView fx:id="room5ImageView" fitHeight="843.75" fitWidth="1500.0" preserveRatio="true">
<ImageView fx:id="room5ImageView" fitHeight="843.75" fitWidth="1500.0" opacity="0.0" preserveRatio="true">
<image>
<Image url="@Day/Room6.png" />
</image>

View File

@ -10,37 +10,45 @@
<AnchorPane fx:id="backGroundAnchorPane" pickOnBounds="false" stylesheets="@loungStyle.css" 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>
<AnchorPane fx:id="backGroundAnimationPane" maxHeight="843.75" maxWidth="1500.0" />
<BorderPane fx:id="LoungeSceneBorderPane" layoutX="860.0" layoutY="440.0" pickOnBounds="false" stylesheets="@boarderPane.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<right>
<ListView fx:id="LobbyListView" opacity="0.0" pickOnBounds="false" BorderPane.alignment="CENTER" />
</right>
<top>
<ToolBar fx:id="NTtBToolBar" pickOnBounds="false" prefHeight="30.0" BorderPane.alignment="CENTER">
<items>
<Button fx:id="highScoreButton" mnemonicParsing="false" onAction="#sendHIghScore" pickOnBounds="false" text="High Score" />
<Button fx:id="lobbyPrintButton" mnemonicParsing="false" onAction="#sendLilstle" pickOnBounds="false" text="Lobby List" />
<Button fx:id="LeaveServerButton" mnemonicParsing="false" pickOnBounds="false" text="Leave server" />
<Button fx:id="leaveLobbyButton" mnemonicParsing="false" onAction="#leaveLobby" pickOnBounds="false" text="Leave Lobby" />
<Button fx:id="ChangeNameButton" mnemonicParsing="false" pickOnBounds="false" text="Change Name" />
</items>
</ToolBar>
</top>
<left>
<AnchorPane prefHeight="316.0" prefWidth="181.0" BorderPane.alignment="CENTER">
<children>
<Label layoutX="59.0" layoutY="200.0" pickOnBounds="false" text="High Score:" />
<TextFlow fx:id="highScore" layoutX="62.0" layoutY="232.0" pickOnBounds="false" prefHeight="167.0" prefWidth="181.0" AnchorPane.bottomAnchor="1.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="232.0" />
<Label layoutX="67.0" layoutY="6.0" pickOnBounds="false" text="Players:" />
<TextFlow fx:id="lobbyPrint" layoutX="5.0" layoutY="23.0" pickOnBounds="false" prefHeight="178.0" prefWidth="171.0" />
</children>
</AnchorPane>
</left>
<center>
<AnchorPane fx:id="buttonLobbyPane" pickOnBounds="false" prefHeight="122.0" prefWidth="85.0" BorderPane.alignment="CENTER">
<children>
<Button fx:id="newGameButton" layoutX="9.0" layoutY="109.0" mnemonicParsing="false" pickOnBounds="false" text="New Lobby" AnchorPane.leftAnchor="9.0" />
<AnchorPane fx:id="gameAnchorPane" pickOnBounds="false" />
<Button fx:id="startGame" alignment="BASELINE_CENTER" layoutX="9.0" layoutY="140.0" mnemonicParsing="false" onAction="#startGame" pickOnBounds="false" text="Start Game" />
</children>
</AnchorPane>
</center>
<bottom>
<AnchorPane fx:id="ChatArea" pickOnBounds="false" prefHeight="83.0" prefWidth="578.0" BorderPane.alignment="CENTER" />
</bottom>
</BorderPane>
<AnchorPane fx:id="backGroundAnimationPane" maxHeight="843.75" maxWidth="1500.0" />
<AnchorPane fx:id="gameDisplayAnchorPane" maxHeight="843.75" maxWidth="1500.0" pickOnBounds="false" />
<ToolBar fx:id="NTtBToolBar" pickOnBounds="false" prefHeight="30.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<Button fx:id="highScoreButton" mnemonicParsing="false" onAction="#sendHIghScore" pickOnBounds="false" text="High Score" />
<Button fx:id="lobbyPrintButton" mnemonicParsing="false" onAction="#sendLilstle" pickOnBounds="false" text="Lobby List" />
<Button fx:id="LeaveServerButton" mnemonicParsing="false" pickOnBounds="false" text="Leave server" />
<Button fx:id="leaveLobbyButton" mnemonicParsing="false" onAction="#leaveLobby" pickOnBounds="false" text="Leave Lobby" />
<Button fx:id="ChangeNameButton" mnemonicParsing="false" pickOnBounds="false" text="Change Name" />
</items>
</ToolBar>
<AnchorPane prefHeight="316.0" prefWidth="181.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="35.0">
<children>
<Label layoutX="59.0" layoutY="200.0" pickOnBounds="false" text="High Score:" />
<TextFlow fx:id="highScore" layoutX="62.0" layoutY="232.0" pickOnBounds="false" prefHeight="167.0" prefWidth="181.0" AnchorPane.bottomAnchor="1.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="232.0" />
<Label layoutX="67.0" layoutY="6.0" pickOnBounds="false" text="Players:" />
<TextFlow fx:id="lobbyPrint" layoutX="5.0" layoutY="23.0" pickOnBounds="false" prefHeight="178.0" prefWidth="171.0" />
</children>
</AnchorPane>
<AnchorPane pickOnBounds="false" prefHeight="122.0" prefWidth="85.0" AnchorPane.bottomAnchor="200.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="35.0">
<children>
<Button fx:id="newGameButton" layoutX="9.0" layoutY="109.0" mnemonicParsing="false" pickOnBounds="false" text="New Lobby" AnchorPane.rightAnchor="0.0" />
<AnchorPane fx:id="gameAnchorPane" pickOnBounds="false" />
<Button fx:id="startGame" alignment="BASELINE_CENTER" layoutX="9.0" layoutY="140.0" mnemonicParsing="false" onAction="#startGame" pickOnBounds="false" text="Start Game" />
</children>
</AnchorPane>
<AnchorPane fx:id="ChatArea" pickOnBounds="false" prefHeight="83.0" prefWidth="578.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
</children>
</AnchorPane>