Added the Train as a Background to LobbyView and animated the wheels - still a bit wonky but it does work
This commit is contained in:
parent
39e52b20aa
commit
7968523469
@ -31,6 +31,7 @@ public class ChatApp extends Application {
|
|||||||
|
|
||||||
public Node chat;
|
public Node chat;
|
||||||
public Node game;
|
public Node game;
|
||||||
|
public Node backgroundDay;
|
||||||
|
|
||||||
public ChatApp() {
|
public ChatApp() {
|
||||||
super();
|
super();
|
||||||
@ -159,10 +160,14 @@ public class ChatApp extends Application {
|
|||||||
try {
|
try {
|
||||||
URL chatResource = ChatApp.class.getResource("chat/ChatView.fxml");
|
URL chatResource = ChatApp.class.getResource("chat/ChatView.fxml");
|
||||||
URL gameResource = ChatApp.class.getResource("game/GameDayAll.fxml");
|
URL gameResource = ChatApp.class.getResource("game/GameDayAll.fxml");
|
||||||
|
URL bgDayResource = ChatApp.class.getResource("TrainAnimationViewDay.fxml");
|
||||||
this.chat = FXMLLoader.load(Objects.requireNonNull(chatResource));
|
this.chat = FXMLLoader.load(Objects.requireNonNull(chatResource));
|
||||||
this.game = FXMLLoader.load(Objects.requireNonNull(gameResource));
|
this.game = FXMLLoader.load(Objects.requireNonNull(gameResource));
|
||||||
|
this.backgroundDay = FXMLLoader.load(Objects.requireNonNull(bgDayResource));
|
||||||
|
LOGGER.debug(bgDayResource);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.warn(e.getMessage());
|
LOGGER.warn("There was an Exception while loading");
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
URL loungeResource = ChatApp.class.getResource(
|
URL loungeResource = ChatApp.class.getResource(
|
||||||
"lounge/LoungeSceneView.fxml");
|
"lounge/LoungeSceneView.fxml");
|
||||||
|
|||||||
@ -0,0 +1,70 @@
|
|||||||
|
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.lounge.LoungeSceneViewController;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
import javafx.animation.Animation;
|
||||||
|
import javafx.application.Platform;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.fxml.Initializable;
|
||||||
|
import javafx.scene.image.ImageView;
|
||||||
|
import javafx.scene.layout.AnchorPane;
|
||||||
|
import javafx.util.Duration;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
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 wheelsImageView;
|
||||||
|
@FXML
|
||||||
|
private ImageView shadowTrain;
|
||||||
|
@FXML
|
||||||
|
private ImageView wagonBGImageView;
|
||||||
|
@FXML
|
||||||
|
private ImageView wagonFloorImageView;
|
||||||
|
@FXML
|
||||||
|
private AnchorPane wheelsAnchorPane;
|
||||||
|
@FXML
|
||||||
|
private AnchorPane gameAnchorPane;
|
||||||
|
@FXML
|
||||||
|
private ImageView wagonFullImageView;
|
||||||
|
@FXML
|
||||||
|
private ImageView lokiImageView;
|
||||||
|
|
||||||
|
private ChatApp chatApp;
|
||||||
|
private static ChatApp cApp;
|
||||||
|
|
||||||
|
public TrainAnimationDayController(){
|
||||||
|
super();
|
||||||
|
LOGGER.debug("Empty TrainAnimationDayController() constructor was called");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatApp getChatApp() {
|
||||||
|
return chatApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChatApp(ChatApp chatApp) {
|
||||||
|
this.chatApp = chatApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setcApp(ChatApp cApp) {
|
||||||
|
TrainAnimationDayController.cApp = cApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
|
setChatApp(cApp);
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Animation wheels = new WheelsAnimation(Duration.millis(1000), wheelsImageView);
|
||||||
|
wheels.setCycleCount(Animation.INDEFINITE);
|
||||||
|
wheels.play();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui;
|
||||||
|
|
||||||
|
import ch.unibas.dmi.dbis.cs108.BudaLogConfig;
|
||||||
|
import javafx.animation.Animation;
|
||||||
|
import javafx.animation.Timeline.*;
|
||||||
|
import javafx.animation.Interpolator;
|
||||||
|
import javafx.animation.Transition;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.image.Image;
|
||||||
|
import javafx.scene.image.ImageView;
|
||||||
|
import javafx.util.Duration;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
public class WheelsAnimation extends Transition {
|
||||||
|
public static final Logger LOGGER = LogManager.getLogger(WheelsAnimation.class);
|
||||||
|
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
||||||
|
|
||||||
|
ImageView imageView;
|
||||||
|
private static final Image[] wheels = new Image[26];
|
||||||
|
private int index;
|
||||||
|
|
||||||
|
|
||||||
|
WheelsAnimation(Duration duration, ImageView imageView) {
|
||||||
|
this.imageView = imageView;
|
||||||
|
setCycleDuration(duration);
|
||||||
|
setInterpolator(Interpolator.LINEAR);
|
||||||
|
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");
|
||||||
|
wheels[2] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0003.png");
|
||||||
|
wheels[3] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0004.png");
|
||||||
|
wheels[4] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0005.png");
|
||||||
|
wheels[5] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0006.png");
|
||||||
|
wheels[6] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0007.png");
|
||||||
|
wheels[7] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0008.png");
|
||||||
|
wheels[8] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0009.png");
|
||||||
|
wheels[9] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0010.png");
|
||||||
|
wheels[10] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0011.png");
|
||||||
|
wheels[11] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0012.png");
|
||||||
|
wheels[12] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0013.png");
|
||||||
|
wheels[13] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0014.png");
|
||||||
|
wheels[14] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0015.png");
|
||||||
|
wheels[15] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0016.png");
|
||||||
|
wheels[16] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0017.png");
|
||||||
|
wheels[17] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0018.png");
|
||||||
|
wheels[18] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0019.png");
|
||||||
|
wheels[19] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0020.png");
|
||||||
|
wheels[20] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0021.png");
|
||||||
|
wheels[21] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0022.png");
|
||||||
|
wheels[22] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0023.png");
|
||||||
|
wheels[23] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0024.png");
|
||||||
|
wheels[24] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0025.png");
|
||||||
|
wheels[25] = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/Wheels/Image0026.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void interpolate(double frac) {
|
||||||
|
if(index == 25) index = 0;
|
||||||
|
imageView.setImage(wheels[index]);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4,6 +4,7 @@ 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.ChatApp;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp;
|
||||||
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.LobbyListView;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.LobbyListView;
|
||||||
|
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.TrainAnimationDayController;
|
||||||
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol;
|
||||||
import ch.unibas.dmi.dbis.cs108.multiplayer.server.JServerProtocolParser;
|
import ch.unibas.dmi.dbis.cs108.multiplayer.server.JServerProtocolParser;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -49,7 +50,10 @@ public class LoungeSceneViewController implements Initializable {
|
|||||||
public static final Logger LOGGER = LogManager.getLogger(LoungeSceneViewController.class);
|
public static final Logger LOGGER = LogManager.getLogger(LoungeSceneViewController.class);
|
||||||
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
public static final BudaLogConfig l = new BudaLogConfig(LOGGER);
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private AnchorPane backGroundAnchorPane;
|
||||||
|
@FXML
|
||||||
|
private AnchorPane gameDisplayAnchorPane;
|
||||||
@FXML
|
@FXML
|
||||||
private TextFlow highScore;
|
private TextFlow highScore;
|
||||||
@FXML
|
@FXML
|
||||||
@ -136,6 +140,8 @@ public class LoungeSceneViewController implements Initializable {
|
|||||||
ClientListView.setVisible(true);
|
ClientListView.setVisible(true);
|
||||||
ClientListView.setItems(clients);
|
ClientListView.setItems(clients);
|
||||||
addChatView();
|
addChatView();
|
||||||
|
addBackgroundDay();
|
||||||
|
TrainAnimationDayController.setcApp(this.cApp);
|
||||||
|
|
||||||
ClientListView.setItems(clients);
|
ClientListView.setItems(clients);
|
||||||
ClientListView.setCellFactory(param -> {
|
ClientListView.setCellFactory(param -> {
|
||||||
@ -363,6 +369,20 @@ public class LoungeSceneViewController implements Initializable {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addBackgroundDay() {
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
LOGGER.debug("in addBackgroundDay() run()");
|
||||||
|
gameDisplayAnchorPane.getChildren().add(chatApp.backgroundDay);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds players to a lobby "NMEMB" {@link ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters}
|
* Adds players to a lobby "NMEMB" {@link ch.unibas.dmi.dbis.cs108.multiplayer.helpers.GuiParameters}
|
||||||
*
|
*
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
*{
|
||||||
|
-fx-background-color: transparent;
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.image.Image?>
|
||||||
|
<?import javafx.scene.image.ImageView?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
<?import javafx.scene.layout.StackPane?>
|
||||||
|
|
||||||
|
<StackPane maxHeight="1080.0" maxWidth="1920.0" minHeight="-Infinity" minWidth="-Infinity" stylesheets="@TrainAnimationDay.css" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.TrainAnimationDayController">
|
||||||
|
<children>
|
||||||
|
<ImageView fx:id="shadowTrain" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Shadow_Below_Train.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="wagonBGImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Second_Wagon.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="wagonFloorImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Empty_Wagon.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<AnchorPane fx:id="gameAnchorPane" />
|
||||||
|
<ImageView fx:id="wagonFullImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Full_Wagon.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="lokiImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Loki.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<AnchorPane fx:id="wheelsAnchorPane">
|
||||||
|
<children>
|
||||||
|
<ImageView fx:id="wheelsImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true" />
|
||||||
|
</children></AnchorPane>
|
||||||
|
</children>
|
||||||
|
</StackPane>
|
||||||
@ -5,7 +5,7 @@
|
|||||||
.button{
|
.button{
|
||||||
}
|
}
|
||||||
|
|
||||||
.roomButtonGroup{
|
#roomButtonGroup{
|
||||||
-fx-background-color: transparent;
|
-fx-background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
-fx-animated: null;
|
-fx-animated: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notificationText{
|
#notificationText{
|
||||||
-fx-alignment: center;
|
-fx-alignment: center;
|
||||||
-fx-text-fill: black;
|
-fx-text-fill: black;
|
||||||
-fx-font-family: Bahnschrift;
|
-fx-font-family: Bahnschrift;
|
||||||
|
|||||||
@ -10,9 +10,10 @@
|
|||||||
<?import javafx.scene.shape.Line?>
|
<?import javafx.scene.shape.Line?>
|
||||||
<?import javafx.scene.text.TextFlow?>
|
<?import javafx.scene.text.TextFlow?>
|
||||||
|
|
||||||
<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">
|
<AnchorPane fx:id="backGroundAnchorPane" 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>
|
<children>
|
||||||
<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">
|
<AnchorPane fx:id="gameDisplayAnchorPane" />
|
||||||
|
<BorderPane fx:id="LoungeSceneBorderPane" layoutX="860.0" layoutY="440.0" stylesheets="@boarderPane.css" 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" BorderPane.alignment="CENTER">
|
<ToolBar fx:id="NTtBToolBar" prefHeight="77.0" BorderPane.alignment="CENTER">
|
||||||
<items>
|
<items>
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
*{
|
||||||
|
-fx-background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#NTtBToolBar{
|
||||||
|
-fx-border-color: grey;
|
||||||
|
-fx-background-color: rgba(255,255,255,0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button{
|
||||||
|
-fx-border-color: darkgrey;
|
||||||
|
-fx-background-color: grey;
|
||||||
|
-fx-text-fill: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:pressed{
|
||||||
|
-fx-border-color: grey;
|
||||||
|
-fx-background-color: lightgrey;
|
||||||
|
-fx-text-fill: black;
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
#backGroundAnchorPane{
|
||||||
|
/*-fx-background-color: black;*/
|
||||||
|
/*-fx-background-image: url(../game/Day/Full_Wagon.png);*/
|
||||||
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
*{
|
||||||
|
-fx-background-color: transparent;
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.image.Image?>
|
||||||
|
<?import javafx.scene.image.ImageView?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
|
||||||
|
<AnchorPane stylesheets="@wheelsAnimation.css" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1">
|
||||||
|
<children>
|
||||||
|
<ImageView fx:id="wheelsAnimationImageView" fitHeight="843.75" fitWidth="1500.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@game/Day/Wheels/Image0001.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
Reference in New Issue
Block a user