diff --git a/OgGhostWinners.txt b/OgGhostWinners.txt index 7a46d02..473f560 100644 --- a/OgGhostWinners.txt +++ b/OgGhostWinners.txt @@ -2,3 +2,4 @@ B serai serai Jonas of Istanbul +serai diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/BGAnimation.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/BGAnimation.java new file mode 100644 index 0000000..99e8996 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/BGAnimation.java @@ -0,0 +1,25 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; + + +import javafx.animation.Interpolator; +import javafx.animation.Transition; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.util.Duration; + +public class BGAnimation extends Transition { + ImageView imageView; + private static final Image bgFull = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/BG_small.jpg"); + + BGAnimation(Duration duration, ImageView imageView) { + this.imageView = imageView; + setCycleDuration(duration); + setInterpolator(Interpolator.DISCRETE); + + } + + @Override + protected void interpolate(double frac) { + + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationDayController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationDayController.java index cacdad7..33eecae 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationDayController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationDayController.java @@ -10,6 +10,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; import javafx.util.Duration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -18,6 +19,8 @@ public class TrainAnimationDayController implements Initializable { public static final Logger LOGGER = LogManager.getLogger(TrainAnimationDayController.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + @FXML + private ImageView backGroundAnimationImageView; @FXML private ImageView wheelsImageView; @FXML @@ -35,8 +38,11 @@ public class TrainAnimationDayController implements Initializable { @FXML private ImageView lokiImageView; + private ChatApp chatApp; private static ChatApp cApp; + private static AnchorPane gamePane; + private static ImageView loki; public TrainAnimationDayController(){ super(); @@ -55,16 +61,68 @@ public class TrainAnimationDayController implements Initializable { TrainAnimationDayController.cApp = cApp; } + public AnchorPane getGameAnchorPane() { + return gameAnchorPane; + } + + public ImageView getWagonFullImageView() { + return wagonFullImageView; + } + @Override public void initialize(URL location, ResourceBundle resources) { + LoungeSceneViewController.setTrainAnimationDayController(this); + LOGGER.debug(cApp); setChatApp(cApp); + LOGGER.debug(gameAnchorPane); + gamePane = gameAnchorPane; + loki = lokiImageView; Platform.runLater(new Runnable() { @Override public void run() { - Animation wheels = new WheelsAnimation(Duration.millis(1000), wheelsImageView); + Animation wheels = new WheelsAnimation(Duration.millis(866.666), wheelsImageView); wheels.setCycleCount(Animation.INDEFINITE); wheels.play(); } }); } + + /** + * 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"); + } + } + }); + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/WheelsAnimation.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/WheelsAnimation.java index 9c74845..9a34418 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/WheelsAnimation.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/WheelsAnimation.java @@ -12,6 +12,10 @@ import javafx.util.Duration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +/** + * This class animates the wheels from the train from sprites + */ + public class WheelsAnimation extends Transition { public static final Logger LOGGER = LogManager.getLogger(WheelsAnimation.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); @@ -24,7 +28,7 @@ public class WheelsAnimation extends Transition { WheelsAnimation(Duration duration, ImageView imageView) { this.imageView = imageView; setCycleDuration(duration); - setInterpolator(Interpolator.LINEAR); + setInterpolator(Interpolator.DISCRETE); index = 1; wheels[0] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0001.png"); wheels[1] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0002.png"); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java index 390d3ee..90ad993 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameController.java @@ -36,7 +36,6 @@ public class GameController implements Initializable { private static GameStateModel gameStateModel; - public GameController() { super(); } @@ -59,6 +58,18 @@ public class GameController implements Initializable { return gameStateModel; } + @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 AnchorPane gameBG; @FXML @@ -128,6 +139,24 @@ public class GameController implements Initializable { .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 0); } + 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); + } + }); + } + /** * If button 1 is clicked, send the vote message 0 to the server */ @@ -135,6 +164,23 @@ public class GameController implements Initializable { client.getClient() .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 1); } + 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); + } + }); + } /** * If button 2 is clicked, send the vote message 0 to the server @@ -144,6 +190,24 @@ public class GameController implements Initializable { .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 2); } + 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); + } + }); + } + /** * If button 3 is clicked, send the vote message 0 to the server */ @@ -151,6 +215,23 @@ public class GameController implements Initializable { client.getClient() .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 3); } + 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); + } + }); + } /** * If button 4 is clicked, send the vote message 0 to the server @@ -159,6 +240,23 @@ public class GameController implements Initializable { client.getClient() .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 4); } + 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); + } + }); + } /** * If button 5 is clicked, send the vote message 0 to the server @@ -167,6 +265,23 @@ public class GameController implements Initializable { client.getClient() .sendMsgToServer(Protocol.votedFor + "$" + client.getClient().getPosition() + "$" + 5); } + 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); + } + }); + } /** * Sends a noise message, to the server, should be a gui message? 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 20033b7..80d1370 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 @@ -97,6 +97,7 @@ public class LoungeSceneViewController implements Initializable { public static ClientModel client; private static ChatApp chatApp; private ChatApp cApp; + private static TrainAnimationDayController trainAnimationDayController; ObservableList clients = FXCollections.observableArrayList(); ObservableList lobbies = FXCollections.observableArrayList(); @@ -119,6 +120,15 @@ public class LoungeSceneViewController implements Initializable { this.cApp = cApp; } + public static void setTrainAnimationDayController( + TrainAnimationDayController trainAnimationDayController) { + LoungeSceneViewController.trainAnimationDayController = trainAnimationDayController; + } + + public static TrainAnimationDayController getTrainAnimationDayController() { + return trainAnimationDayController; + } + /** * Called to initialize a controller after its root element has been completely processed. * @@ -141,7 +151,9 @@ public class LoungeSceneViewController implements Initializable { ClientListView.setItems(clients); addChatView(); addBackgroundDay(); - TrainAnimationDayController.setcApp(this.cApp); + LOGGER.debug("cApp = " + cApp); + LOGGER.debug("chatApp = " + chatApp); + TrainAnimationDayController.setcApp(cApp); ClientListView.setItems(clients); ClientListView.setCellFactory(param -> { @@ -321,13 +333,15 @@ public class LoungeSceneViewController implements Initializable { * Adds the gameView to the existing LobbyView */ public void addGameView() { + Platform.runLater(new Runnable() { @Override public void run() { try { + LOGGER.debug(" in addGameView()" + chatApp); newGameButton.setVisible(false); startGame.setVisible(false); - gameAnchorPane.getChildren().add(chatApp.game); + trainAnimationDayController.addGameView(chatApp); } catch (Exception e) { LOGGER.debug("Not yet initialized"); } @@ -345,7 +359,7 @@ public class LoungeSceneViewController implements Initializable { try { newGameButton.setVisible(true); startGame.setVisible(true); - gameAnchorPane.getChildren().clear(); + trainAnimationDayController.removeGameView(chatApp); } catch (Exception e) { LOGGER.debug("Not yet initialized"); } diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationViewDay.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationViewDay.fxml index 3d0aa2c..1ace55b 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationViewDay.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/TrainAnimationViewDay.fxml @@ -3,39 +3,49 @@ - - + - + + + + + + - + - + - - + + + + + + + - + - + - - + + + - + diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDay.css b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDay.css index 68646cb..6d10800 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDay.css +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDay.css @@ -3,12 +3,21 @@ } .button{ + -fx-background-color: transparent; + -fx-border-color: transparent; +} + +#noiseButton{ + -fx-background-color: midnightblue; + -fx-text-fill: lightgrey; } #roomButtonGroup{ -fx-background-color: transparent; } + + .text-field{ -fx-text-fill: white; -fx-background-color: transparent; diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml index 2be235e..dc4b5d7 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/GameDayAll.fxml @@ -9,92 +9,50 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - @@ -105,13 +63,43 @@ + + + + + + - - + + 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 9838413..052ee44 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 @@ -10,12 +10,11 @@ - + - - + - +