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