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 a75c70143dcbaa71f37fc76ff2fa3abc6ee1561f..550fe92967678b0752a46bb94a39543c8859dd36 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -3,18 +3,23 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Enum.GameState; import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Main.Driver; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.RuntimeInfo; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.fxml.LoadException; import javafx.geometry.Rectangle2D; import javafx.scene.control.Button; import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; +import javafx.scene.media.MediaException; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; import javafx.stage.Screen; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.net.URL; @@ -39,6 +44,7 @@ public class MenuBorderPaneController implements Initializable { List<String> shuffledVideos = Arrays.asList(videoFiles); Rectangle2D screen = Screen.getPrimary().getVisualBounds(); RuntimeInfo runtimeInfo = RuntimeInfo.getInstance(); + private static final Logger log = LogManager.getLogger(MenuBorderPaneController.class); @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -53,7 +59,6 @@ public class MenuBorderPaneController implements Initializable { imgRight.setPreserveRatio(true); imgLeft.setFitWidth(imageWidth); imgLeft.setPreserveRatio(true); - easterEgg(); // shuffle meme order @@ -68,7 +73,6 @@ public class MenuBorderPaneController implements Initializable { } }); - btnLeft.setOnMouseClicked(mouseEvent -> { // make background music continue play after there is no meme left if (videoCounter == shuffledVideos.size()) { @@ -82,13 +86,17 @@ public class MenuBorderPaneController implements Initializable { if (videoCounter < videoFiles.length) { String nextVideo = shuffledVideos.get(videoCounter); runtimeInfo.setGameState(GameState.NONE); - mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, new File("src/main/resources/videos/" + nextVideo + ".mp4"), false); - mediaView = new MediaView(mediaPlayer); - center.getChildren().add(mediaView); - mediaPlayer.setOnEndOfMedia(() -> { - center.getChildren().remove(mediaView); - runtimeInfo.setGameState(GameState.MENU); - }); + try { + mediaPlayer = new CreateMediaPlayer().getMediaPlayer(mediaView, new File("src/main/resources/videos/" + nextVideo + ".mp4"), false); + mediaView = new MediaView(mediaPlayer); + center.getChildren().add(mediaView); + mediaPlayer.setOnEndOfMedia(() -> { + center.getChildren().remove(mediaView); + runtimeInfo.setGameState(GameState.MENU); + }); + } catch (MediaException e) { + log.error(e); + } } videoCounter++; }); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java index 195aaaa6af32a6356b9e4ee94d1e704d96b45fae..36a85f3392ca65235a13d57c8a246b04ffc05c63 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SettingsController.java @@ -2,6 +2,7 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Enum.GameState; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Main.Driver; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.RuntimeInfo; import de.hdm_stuttgart.battlearena.Model.Sound.MusicPlayer; @@ -9,8 +10,12 @@ import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; +import javafx.fxml.LoadException; import javafx.scene.control.Slider; import javafx.scene.layout.VBox; +import javafx.scene.media.MediaException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.IOException; import java.net.URL; @@ -27,6 +32,7 @@ public class SettingsController implements Initializable { private final Persistence persistence = Persistence.getInstance(); private final MusicPlayer player = MusicPlayer.getInstance(); private final SoundEffects sfx = new SoundEffects(); + private static final Logger log = LogManager.getLogger(SettingsController.class); @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -36,9 +42,12 @@ public class SettingsController implements Initializable { @FXML private void creditScene() throws IOException { - RuntimeInfo.getInstance().setGameState(GameState.NONE); - parent.getChildren().clear(); - parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/credits.fxml")))); + try { + RuntimeInfo.getInstance().setGameState(GameState.NONE); + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/credits.fxml")))); + } catch (LoadException e) { + log.error(e); + } } @FXML diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/CreateMediaPlayer.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/CreateMediaPlayer.java index 4bf6c165db835d9908078118b40628cbfbc2350a..77b75f557afdfa53dcb6b66fe78603e873be2385 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/CreateMediaPlayer.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/CreateMediaPlayer.java @@ -2,13 +2,14 @@ package de.hdm_stuttgart.battlearena.Controller.Utilities; import javafx.scene.layout.BorderPane; import javafx.scene.media.Media; +import javafx.scene.media.MediaException; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; import java.io.File; public class CreateMediaPlayer { - public MediaPlayer getMediaPlayer(MediaView mediaView, File file, boolean isFullscreen, BorderPane... parent) { + public MediaPlayer getMediaPlayer(MediaView mediaView, File file, boolean isFullscreen, BorderPane... parent) throws MediaException { Media media = new Media(file.toURI().toString()); MediaPlayer mediaPlayer = new MediaPlayer(media); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java index 83297700dd3dff0d7550224eef882ca59a72d8e4..2a12b7cc499eb7f2caf792c736de439c1fe4201a 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Driver.java @@ -9,6 +9,7 @@ import javafx.application.Application; import javafx.application.Platform; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; +import javafx.fxml.LoadException; import javafx.geometry.Rectangle2D; import javafx.scene.Parent; import javafx.scene.Scene; @@ -30,6 +31,7 @@ public class Driver extends Application { Rectangle2D screen = Screen.getPrimary().getVisualBounds(); InputHandler inputHandler = InputHandler.getInstance(); + Parent root; @@ -40,8 +42,11 @@ public class Driver extends Application { Font.loadFont(getClass().getResourceAsStream("/fonts/AmaticSC-Bold.ttf"), 50); Font.loadFont(getClass().getResourceAsStream("/fonts/Arthemis-mLA22.ttf"), 50); Font.loadFont(getClass().getResourceAsStream("/fonts/ShadowsIntoLight-Regular.ttf"), 50); - - Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/Intro.fxml"))); + try { + root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/Intro.fxml"))); + } catch (LoadException e) { + root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/LoadingScreen.fxml"))); + } Scene scene = new Scene(root);