diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java index 03fbd835e1a457c5f9ad0fdd649d747840a240fd..f924d633dc0f7c135a921a7efee08e85dce04d29 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateMediaPlayer.java @@ -8,15 +8,17 @@ import javafx.scene.media.MediaView; import java.io.File; public class CreateMediaPlayer { - public MediaPlayer getMediaPlayer(MediaView mediaView, File file, BorderPane parent) { + public MediaPlayer getMediaPlayer(MediaView mediaView, File file, boolean isFullscreen, BorderPane... parent) { Media media = new Media(file.toURI().toString()); MediaPlayer mediaPlayer = new MediaPlayer(media); // resizing once the scenes has been loaded to get width and height property - mediaPlayer.setOnReady(() -> { - mediaView.fitWidthProperty().bind(parent.getScene().widthProperty()); - mediaView.fitHeightProperty().bind(parent.getScene().heightProperty()); - }); + if (isFullscreen) { + mediaPlayer.setOnReady(() -> { + mediaView.fitWidthProperty().bind(parent[0].getScene().widthProperty()); + mediaView.fitHeightProperty().bind(parent[0].getScene().heightProperty()); + }); + } mediaPlayer.setAutoPlay(true); return mediaPlayer; } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java index c6305002b3a903e3ca482b645ae2d47b76bdec30..2e6f99aaef2f073547f2625eb8634dbf66906d50 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreditsController.java @@ -31,7 +31,7 @@ public class CreditsController implements Initializable { } private void createMediaPlayer() { - mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, parent); + mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, true, parent); mediaView.setMediaPlayer(mediaPlayer); mediaPlayer.setOnEndOfMedia(this::videoEnd); 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 7b54d0d45ecbd94c7a918df3349807da358c16ba..9fa403dd15ef315e2f2272ee9883f187d2c89bab 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java @@ -36,7 +36,7 @@ public class IntroController implements Initializable { private void createMediaPlayer() { // initializing this.mediaPlayer - mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, introParent); + mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, file, true, introParent); mediaView.setMediaPlayer(mediaPlayer); mediaPlayer.setOnEndOfMedia(() -> { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java index 48ecfb26198cf98927d4a11d5aef9b14eaccbcff..0601c5d82a23af30cad1dbe5853d89eb7cb0b3ad 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -8,6 +8,7 @@ import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; +import javafx.scene.media.MediaView; import javafx.stage.Screen; import java.io.File; @@ -15,16 +16,17 @@ import java.net.URL; import java.util.ResourceBundle; public class MenuBorderPaneController implements Initializable { - // TODO: change FXML variables to private. Don't know why it's not working when they're private @FXML private BorderPane parent; @FXML private Button btnRight, btnLeft; @FXML private ImageView imgLeft, imgRight; - private int counter = 1; + private int musicCounter = 1, videoCounter = 0; private final SceneLoader sceneLoader = new SceneLoader(); - MediaPlayer musicPlayer; + private MediaPlayer musicPlayer, mediaPlayer; + private MediaView mediaView; + private final String[] videoFiles = {"allMyFellas.mp4", "bobama.mp4", "lifeCouldBeMonke.mp4", "russianKid.mp4"}; @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -37,24 +39,49 @@ public class MenuBorderPaneController implements Initializable { imgLeft.setFitWidth(imageWidth); imgLeft.setPreserveRatio(true); backgroundMusic("cocBackgroundMusicTest.mp3"); + easterEgg(); } - public void easterEgg() { - btnRight.setOnMouseClicked(mouseEvent -> counter++); - switch (counter) { - case 5: - musicPlayer.dispose(); - backgroundMusic("spongeBob.mp3"); - break; - case 12: - musicPlayer.dispose(); - backgroundMusic("stadiumRave.mp3"); - break; - case 20: - musicPlayer.dispose(); - backgroundMusic("wii.mp3"); - break; - } + private void easterEgg() { + btnRight.setOnMouseClicked(mouseEvent -> { + musicCounter++; + switch (musicCounter) { + case 5: + musicPlayer.dispose(); + backgroundMusic("spongeBob.mp3"); + break; + case 12: + musicPlayer.dispose(); + backgroundMusic("stadiumRave.mp3"); + break; + case 20: + musicPlayer.dispose(); + backgroundMusic("wii.mp3"); + break; + } + }); + + btnLeft.setOnMouseClicked(mouseEvent -> { + if (!musicPlayer.isAutoPlay()) { + musicPlayer.play(); + } + + if (mediaPlayer != null) { + mediaPlayer.dispose(); + } + + if (videoCounter <= 3) { + musicPlayer.stop(); + mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, new File("src/main/resources/videos/" + videoFiles[videoCounter]), false); + mediaView = new MediaView(mediaPlayer); + parent.getChildren().add(mediaView); + mediaPlayer.setOnEndOfMedia(() -> { + parent.getChildren().remove(mediaView); + musicPlayer.play(); + }); + } + videoCounter++; + }); } private void backgroundMusic(String file) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java index 65f7da436017a25874f107ffd0610893353c1178..89a93971c7e262f7fff2dd3922e85969694018f8 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java @@ -35,7 +35,7 @@ public class SkinSelectionController implements Initializable { setImageWidth(selection1, selection2, selection3); } - private void setImageWidth(ImageView... imageViews) { // the ... allows for zero or more arguments seperated by a comma + private void setImageWidth(ImageView... imageViews) { // the ... allows for zero or more arguments seperated by a comma, will pass argument as an array Rectangle2D screen = Screen.getPrimary().getVisualBounds(); final double imageWidth = screen.getWidth() * 0.2; for (ImageView image : imageViews) { diff --git a/src/main/resources/fxml/MenuBorderPane.fxml b/src/main/resources/fxml/MenuBorderPane.fxml index cc6e6e726ae06e7c70a4ff48a122f7f89c297fa4..a2127bbb82e6e39c4451224a263da6e3cd7f85d7 100644 --- a/src/main/resources/fxml/MenuBorderPane.fxml +++ b/src/main/resources/fxml/MenuBorderPane.fxml @@ -7,7 +7,7 @@ <BorderPane id="mainMenu" fx:id="parent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MenuBorderPaneController"> <right> - <Button fx:id="btnRight" mnemonicParsing="false" onAction="#easterEgg" prefWidth="111.0" BorderPane.alignment="BOTTOM_CENTER"> + <Button fx:id="btnRight" mnemonicParsing="false" prefWidth="111.0" BorderPane.alignment="BOTTOM_CENTER"> <graphic> <ImageView fx:id="imgRight" fitHeight="845.0" fitWidth="799.0" pickOnBounds="true" preserveRatio="true"> <image>