animated background for the day

This commit is contained in:
Seraina 2022-05-13 12:37:15 +02:00
parent 4262fb64dd
commit 737520d5c7
3 changed files with 38 additions and 2 deletions

View File

@ -10,9 +10,16 @@ import javafx.util.Duration;
public class BGAnimation extends Transition { public class BGAnimation extends Transition {
ImageView imageView; ImageView imageView;
private static final Image bgFull = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/BG_small.jpg"); private static final Image bgFull = new Image("ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/game/Day/BG_small.jpg");
int index;
int lastIndex;
BGAnimation(Duration duration, ImageView imageView) { public BGAnimation(Duration duration, ImageView imageView) {
index = 0;
lastIndex = 1034;
this.imageView = imageView; this.imageView = imageView;
imageView.setFitHeight(1950);
imageView.setFitWidth(6667.968);
imageView.setImage(bgFull);
setCycleDuration(duration); setCycleDuration(duration);
setInterpolator(Interpolator.DISCRETE); setInterpolator(Interpolator.DISCRETE);
@ -20,6 +27,14 @@ public class BGAnimation extends Transition {
@Override @Override
protected void interpolate(double frac) { protected void interpolate(double frac) {
if(index == lastIndex) {
index = 0;
imageView.setX(0);
imageView.setY(0);
}
imageView.setX(index * -5);
imageView.setY(index * -1.07);
index++;
} }
} }

View File

@ -1,16 +1,19 @@
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.BGAnimation;
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.client.gui.TrainAnimationDayController;
import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.WheelsAnimation;
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;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import javafx.animation.Animation;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
@ -35,6 +38,7 @@ import javafx.scene.control.SplitPane;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane; import javafx.scene.control.TitledPane;
import javafx.scene.control.ToolBar; import javafx.scene.control.ToolBar;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
@ -42,6 +46,7 @@ import javafx.scene.layout.VBox;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.scene.text.TextFlow; import javafx.scene.text.TextFlow;
import javafx.util.Duration;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -50,6 +55,9 @@ 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 backGroundAnimationPane;
@FXML @FXML
private AnchorPane backGroundAnchorPane; private AnchorPane backGroundAnchorPane;
@FXML @FXML
@ -154,6 +162,9 @@ public class LoungeSceneViewController implements Initializable {
LOGGER.debug("cApp = " + cApp); LOGGER.debug("cApp = " + cApp);
LOGGER.debug("chatApp = " + chatApp); LOGGER.debug("chatApp = " + chatApp);
TrainAnimationDayController.setcApp(cApp); TrainAnimationDayController.setcApp(cApp);
ImageView bgAnimationView = new ImageView();
bgAnimationView.setFitHeight(1950);
bgAnimationView.setFitWidth(6667.968);
ClientListView.setItems(clients); ClientListView.setItems(clients);
ClientListView.setCellFactory(param -> { ClientListView.setCellFactory(param -> {
@ -324,6 +335,15 @@ public class LoungeSceneViewController implements Initializable {
}; };
return cell; return cell;
}); });
Platform.runLater(new Runnable() {
@Override
public void run() {
backGroundAnimationPane.getChildren().add(bgAnimationView);
Animation backGround = new BGAnimation(Duration.millis(17), bgAnimationView);
backGround.setCycleCount(Animation.INDEFINITE);
backGround.play();
}
});
LOGGER.debug("In Initialize 3 LobbyListView" + LobbyListView); LOGGER.debug("In Initialize 3 LobbyListView" + LobbyListView);
LobbyListView.setPlaceholder(new Text("No open lobbies!")); LobbyListView.setPlaceholder(new Text("No open lobbies!"));
LobbyListView.setVisible(true); LobbyListView.setVisible(true);

View File

@ -12,6 +12,7 @@
<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"> <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> <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"> <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">
<top> <top>
<ToolBar fx:id="NTtBToolBar" pickOnBounds="false" prefHeight="30.0" BorderPane.alignment="CENTER"> <ToolBar fx:id="NTtBToolBar" pickOnBounds="false" prefHeight="30.0" BorderPane.alignment="CENTER">
@ -60,6 +61,6 @@
<ListView fx:id="LobbyListView" pickOnBounds="false" BorderPane.alignment="CENTER" /> <ListView fx:id="LobbyListView" pickOnBounds="false" BorderPane.alignment="CENTER" />
</right> </right>
</BorderPane> </BorderPane>
<AnchorPane fx:id="gameDisplayAnchorPane" layoutY="39.0" pickOnBounds="false" /> <AnchorPane fx:id="gameDisplayAnchorPane" maxHeight="843.75" maxWidth="1500.0" pickOnBounds="false" />
</children> </children>
</AnchorPane> </AnchorPane>