diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java new file mode 100644 index 0000000000000000000000000000000000000000..f27a734fdda4aedfbb78ecf8f2be7796b7ee4935 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java @@ -0,0 +1,47 @@ +package de.hdm_stuttgart.battlearena.Controller; + +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.layout.BorderPane; +import javafx.scene.media.MediaPlayer; +import javafx.scene.media.MediaView; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.Objects; +import java.util.ResourceBundle; + +public class CreditsController implements Initializable { + @FXML public BorderPane parent; + @FXML public MediaView mediaView; + private MediaPlayer mediaPlayer; + private final File file = new File("src/main/resources/textures/videos/credits.mp4"); + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + parent.setStyle("-fx-background-color: black;"); + createMediaPlayer(); + } + + private void createMediaPlayer() { + mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, parent); + mediaView.setMediaPlayer(mediaPlayer); + + mediaPlayer.setOnEndOfMedia(this::videoEnd); + + parent.setOnMouseClicked(mouseEvent -> videoEnd()); + } + + private void videoEnd() { + try { +// I don't know how to return to the options scene, so it just goes back to the main menu :( + mediaPlayer.dispose(); + parent.getChildren().clear(); + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); + } catch (IOException e) { + throw new RuntimeException(); + } + } +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java index e8579e5598ce961c902570df8d18a767055a091d..4ea729c9560a352eeab8550fb597361ef34a6070 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java @@ -60,15 +60,10 @@ public class IntroController implements Initializable { }); } - // TODO: maybe look into using SceneLoader class private void videoEnd() { try { mediaPlayer.dispose(); - Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml"))); - Stage stage = (Stage) introParent.getScene().getWindow(); - Scene scene = new Scene(root); - scene.getStylesheets().add(Objects.requireNonNull(this.getClass().getResource("/styles/style.css")).toExternalForm()); - stage.setScene(scene); + introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); } catch (IOException e) { throw new RuntimeException(); } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java index d742f93183a9488068fde465073c5a47eefcdebf..dc0cc7f4fa874689ba4d25ce335c86b0b3463d0b 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java @@ -14,7 +14,6 @@ public class MainMenuController { private final SceneLoader sceneLoader = new SceneLoader(); private void switchScene(String name) { -// get(0) returns the first item from the getChildren() List parent.getChildren().clear(); parent.getChildren().add(sceneLoader.loadScene(name)); } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java index 413e4ee7dc52c8a8ccaefa8632bb5078521c4a79..947e948024cc78c1950afd432893832f0ee1b883 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java @@ -1,11 +1,14 @@ package de.hdm_stuttgart.battlearena.Controller; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.control.Slider; import javafx.scene.layout.VBox; +import java.io.IOException; import java.net.URL; +import java.util.Objects; import java.util.ResourceBundle; public class OptionsController implements Initializable { @@ -14,17 +17,15 @@ public class OptionsController implements Initializable { SceneLoader sceneLoader = new SceneLoader(); public int volume; private boolean setVolume = false; - private void switchScene(String name) { - parent.getChildren().clear(); - parent.getChildren().add(sceneLoader.loadScene(name)); - } - public void creditScene() { - switchScene("Credits"); + public void creditScene() throws IOException { + parent.getChildren().clear(); + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/credits.fxml")))); } public void mainMenuScene() { - switchScene("MainMenu"); + parent.getChildren().clear(); + parent.getChildren().add(sceneLoader.loadScene("MainMenu")); } @Override diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java index 29ff931d24602d9c611410d5e51eeb99ac4b7880..36394526c54f30d8ec087eef528385257ee9c5a0 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java @@ -41,6 +41,8 @@ public class Main extends Application { stage.setWidth(screen.getWidth()); stage.setHeight(screen.getHeight()); stage.initStyle(StageStyle.UNDECORATED); + scene.getStylesheets().add(Objects.requireNonNull(this.getClass().getResource("/styles/style.css")).toExternalForm()); + stage.setScene(scene); stage.show(); log.debug("Project started successfully!"); diff --git a/src/main/resources/fxml/Credits.fxml b/src/main/resources/fxml/Credits.fxml new file mode 100644 index 0000000000000000000000000000000000000000..d676f90ba0a604995e51dfa5c8ff51d3dd485aa7 --- /dev/null +++ b/src/main/resources/fxml/Credits.fxml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.layout.BorderPane?> +<?import javafx.scene.media.MediaView?> + + +<BorderPane fx:id="parent" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.CreditsController"> + <center> + <MediaView fx:id="mediaView" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" /> + </center> +</BorderPane> diff --git a/src/main/resources/textures/videos/credits.mp4 b/src/main/resources/textures/videos/credits.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..8f852f451f39b1d32bcbcff4950ef240c8f45a8d Binary files /dev/null and b/src/main/resources/textures/videos/credits.mp4 differ