Skip to content
Snippets Groups Projects
Commit 3b29a31c authored by Tran Peter's avatar Tran Peter
Browse files

update(ui): add exception handler if no video are not available

parent 3fb8143f
No related branches found
No related tags found
4 merge requests!74V1,!73Initial commit,!71Merge DataBase into Development,!59Merge ui into development
......@@ -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++;
});
......
......@@ -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
......
......@@ -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);
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment