diff --git a/README.md b/README.md index 69625de7934d607289e90646606803cc8faefb41..d351a7e1c76dec53336acb562d9f67b5c8075daf 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ ## Hier könnte ihre Werbung stehn + +### Known issues + - Videos sometimes don't load in windows 11 especially on weaker systems diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java index 3dc79401a4a89941e5bcffa4b07dacbb45c14817..be1256f441fa09604694e890557db0bd53131531 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java @@ -49,7 +49,7 @@ public class CommunityMapController implements Initializable { // TODO: create map preview @FXML - private void backButton() { // for some reason compiler doesn't recognize method usage when 'back' is used as method name. Any other method name works however + private void backButton() { parent.getChildren().clear(); parent.getChildren().add(new SceneLoader().loadScene("MapForge")); } 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 2c4472104e35751cedb56601d0b5f6b13f72e278..0ee284ce321557aafe682c4accff45c12625da6c 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java @@ -1,6 +1,9 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.StartupThread; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; @@ -8,6 +11,8 @@ import javafx.scene.Cursor; import javafx.scene.layout.BorderPane; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; @@ -27,12 +32,15 @@ public class IntroController implements Initializable { private File file = new File(fileName + videos[0]); private int counter = 0; private MediaPlayer mediaPlayer; + private final Persistence persistence = Persistence.getInstance(); + private static final Logger log = LogManager.getLogger(Persistence.class); @Override public void initialize(URL url, ResourceBundle resourceBundle) { introParent.setStyle("-fx-background-color: black;"); introParent.setCursor(Cursor.NONE); createMediaPlayer(); + new StartupThread().run(); } private void createMediaPlayer() { @@ -42,7 +50,11 @@ public class IntroController implements Initializable { mediaPlayer.setOnEndOfMedia(() -> { if (counter == videos.length - 1) { - videoEnd(); + try { + videoEnd(); + } catch (IOException e) { + throw new RuntimeException(e); + } } else { nextVideo(); } @@ -51,21 +63,42 @@ public class IntroController implements Initializable { // TODO: make any button pressed work introParent.setOnMouseClicked((mouseEvent) -> { if (counter == videos.length - 1) { - videoEnd(); + try { + videoEnd(); + } catch (IOException e) { + throw new RuntimeException(e); + } } else { nextVideo(); } }); } - private void videoEnd() { -// TODO: check if player exists - try { - mediaPlayer.dispose(); - introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml")))); - } catch (IOException e) { - throw new RuntimeException(); + private void videoEnd() throws IOException { + boolean isStartUp = true, noAccount = false, statsLoaded = false; + while (isStartUp) { + try { + persistence.loadPlayerAccount(); + persistence.verifyPlayerAccount(); + mediaPlayer.dispose(); + isStartUp = false; + } catch (DatabaseException e) { + noAccount = true; +// TODO: reset player account if account fails to load in loadPlayerAccount() + } + if (noAccount) { + introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml")))); + } + } + while (!statsLoaded) { // while loop because Martin said so + try { + persistence.loadPlayerStatistics(); + statsLoaded = true; + } catch (DatabaseException e) { + log.error(e); + } } + introParent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); } private void nextVideo() { 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 c71e7fc4804f06df9f0249a24e102b057c55ba7a..83a6d92e8b0dbe60af7cbbbe09a263afdb51a6b5 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java @@ -1,6 +1,8 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; @@ -17,6 +19,7 @@ public class MainMenuController implements Initializable { @FXML private Button exitButton; private final SceneLoader sceneLoader = new SceneLoader(); + private final Persistence persistence = Persistence.getInstance(); private void switchScene(String name) { parent.getChildren().clear(); @@ -44,7 +47,9 @@ public class MainMenuController implements Initializable { } @FXML - private void exit() { + private void exit() throws DatabaseException { + persistence.savePlayerStatistics(); + persistence.saveSettings(); Stage stage = (Stage) exitButton.getScene().getWindow(); stage.close(); } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java index 7f57a6dd566a493f12e2c9ffdea4772df823f130..784361391329dab062e1c64e5aee944381861ff1 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java @@ -2,6 +2,8 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.layout.VBox; @@ -13,6 +15,7 @@ public class MapForgeController { @FXML private VBox parent; SceneLoader sceneLoader = new SceneLoader(); + private final Persistence persistence = Persistence.getInstance(); @FXML private void mapEditorScene() { @@ -30,13 +33,9 @@ public class MapForgeController { } @FXML - private void updateMapScene() { - try { - parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml")))); - MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); - } catch (IOException e) { - throw new RuntimeException(); - } + private void updateMapScene() throws DatabaseException { + persistence.updateCoreMaps(); +// TODO: set message label if update was successful or not } @FXML diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapSelectionController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapSelectionController.java new file mode 100644 index 0000000000000000000000000000000000000000..d821334354bd487632d52077ffa4a3c21f6a1914 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapSelectionController.java @@ -0,0 +1,72 @@ +package de.hdm_stuttgart.battlearena.Controller; + +import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton; +import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.MapData; +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.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.control.ToggleButton; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Objects; +import java.util.ResourceBundle; + +public class MapSelectionController implements Initializable { + @FXML + private VBox boxBox, parent; + @FXML + private Text selectedMapText; + + private int selectedMap; + + private final SceneLoader sceneLoader = new SceneLoader(); + + private final ArrayList<MapData> coreMaps = Persistence.getInstance().getCoreMaps(); + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + ToggleGroup group = new ToggleGroup(); + + for (int i = 0; i < coreMaps.size(); i++) { + ToggleButton toggleButton = new ToggleButton(coreMaps.get(i).getMapName()); + toggleButton.setToggleGroup(group); + boxBox.getChildren().add(toggleButton); + } + + group.selectedToggleProperty().addListener((observableValue, oldToggle, newToggle) -> { + if (group.getSelectedToggle() != null) { + ToggleButton selected = (ToggleButton) group.getSelectedToggle(); + selectedMap = boxBox.getChildren().indexOf(selected); + System.out.println(selectedMap); + String value = selected.getText(); + selectedMapText.setText(value); + System.out.println(value); + } + }); + } + + @FXML + private void gameScene() { + try { + RuntimeInfo.getInstance().setGameMap(coreMaps.get(selectedMap)); + MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml")))); + } catch (IOException e) { + throw new RuntimeException(); + } + } + + @FXML + private void backButton() { + parent.getChildren().clear(); + parent.getChildren().add(sceneLoader.loadScene("SkinSelection")); + } +} 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 81b05ca9a8de2670edb504e78a78fb3e20ca2ebd..392326c31e7e700ca491b955e92531d125bf9e5f 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -3,6 +3,7 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer; import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.geometry.Rectangle2D; @@ -35,11 +36,12 @@ public class MenuBorderPaneController implements Initializable { private final String[] videoFiles = {"depression", "allMyFellas", "wooOOoo", "myMind", "dogCheese", "gta", "cat", "bobama", "roomba", "firework", "cheezburger", "kangaroo", "lifeCouldBeMonke", "seal", "imNotYou", "parkingTickets", "russianKid", "rejectHumanity", "horse", "catSitting", "pablo", "holyCrap", "lessGoo", "sadCat", "basketball", "yoinkySploinky", "msPuff", "=D", "banana", "chaCha", "async", "sadHorse", "minecraftCat", "muecke", "top10Cats", "dog", - "pot", "mineCraftCat2", "catEating", "bear", "pancake", "frog", "gtfo", "carl", "dog2", "slippery", "wolf", "legCat", "sad", "waaahhh"}; + "pot", "mineCraftCat2", "catEating", "catJump", "bear", "pancake", "frog", "gtfo", "carl", "dog2", "slippery", "wolf", "legCat", "sad", "waaahhh"}; List<String> shuffledVideos = Arrays.asList(videoFiles); Rectangle2D screen = Screen.getPrimary().getVisualBounds(); + @Override public void initialize(URL url, ResourceBundle resourceBundle) { center.getChildren().add(sceneLoader.loadScene("MainMenu")); @@ -107,6 +109,7 @@ public class MenuBorderPaneController implements Initializable { private void backgroundMusic(String file) { Media media = new Media(new File("src/main/resources/sound/music/" + file).toURI().toString()); musicPlayer = new MediaPlayer(media); + musicPlayer.setVolume((double) Persistence.getInstance().getSettings().getMusicVolume() / 100); musicPlayer.setCycleCount(MediaPlayer.INDEFINITE); musicPlayer.play(); MusicPlayerSingleton.getInstance().setMediaPlayer(musicPlayer); 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 a3c7526665111d073af465d5c74599952442b63b..a04eb1c6d84b615f3eff95b33d86485cb0ef5b51 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.Utilities.MusicPlayerSingleton; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; @@ -17,14 +18,16 @@ public class SettingsController implements Initializable { @FXML private VBox parent; @FXML - private Slider musicVolume, sfxVolume; + private Slider musicSlider, sfxSlider; SceneLoader sceneLoader = new SceneLoader(); - public double music; + private int musicVolume, sfxVolume; MusicPlayerSingleton musicPlayer = MusicPlayerSingleton.getInstance(); + Persistence persistence = Persistence.getInstance(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { setMusicVolume(); + setSfxVolume(); } @FXML @@ -40,17 +43,20 @@ public class SettingsController implements Initializable { } private void setMusicVolume() { -// need a runtime database to save volume - musicVolume.valueProperty().addListener((observableValue, oldValue, newValue) -> { - setMusic(musicVolume); - System.out.println(music); + musicSlider.setValue(persistence.getSettings().getMusicVolume()); + musicSlider.valueProperty().addListener((observableValue, oldValue, newValue) -> { + musicVolume = newValue.intValue(); + persistence.getSettings().setMusicVolume(musicVolume); + musicPlayer.getMediaPlayer().setVolume((double) musicVolume / 100); }); } - private void setMusic(Slider slider) { - slider.valueProperty().addListener(((observableValue, oldValue, newValue) -> { - music = newValue.doubleValue() / 100; - musicPlayer.getMediaPlayer().setVolume(music); + private void setSfxVolume(){ + sfxSlider.setValue(persistence.getSettings().getSfxVolume()); + sfxSlider.valueProperty().addListener(((observableValue, oldValue, newValue) -> { + sfxVolume = newValue.intValue(); + persistence.getSettings().setSfxVolume(sfxVolume); +// sfxPlayer.getMediaPlayer().setVolume((double) sfxVolume / 100); })); } } 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 6015655a06d8dad0530362087a84c6e87e646f57..9e27cab1e0a87b52e01a1ea63b84ba6cf6b46006 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java @@ -54,11 +54,9 @@ public class SkinSelectionController implements Initializable { @FXML private void gameScene() { - try { - MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); - parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml")))); - } catch (IOException e) { - throw new RuntimeException(); - } + + + parent.getChildren().clear(); + parent.getChildren().add(new SceneLoader().loadScene("MapSelection")); } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java index 009c8a94b5f4a68c3c1b21ddcf194621be698a9c..ee8ccd517fc9c48f3178e792d136dba3f20783e8 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/StatisticsController.java @@ -1,6 +1,7 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.beans.binding.Bindings; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -23,6 +24,8 @@ public class StatisticsController implements Initializable { private PieChart kd, wl; SceneLoader sceneLoader = new SceneLoader(); + Persistence persistence = Persistence.getInstance(); + public void mainMenuScene() { parent.getChildren().clear(); parent.getChildren().add(sceneLoader.loadScene("MainMenu")); @@ -30,17 +33,27 @@ public class StatisticsController implements Initializable { @Override public void initialize(URL url, ResourceBundle resourceBundle) { - iniPieChartkd(); - iniPieChartwl(); + iniPieChartKD(); + iniPieChartWL(); kd.setLegendVisible(false); wl.setLegendVisible(false); + setLabels(); + } + + private void setLabels() { + kills.setText(String.valueOf(persistence.getStatistics().getKills())); + gamesWon.setText(Integer.toString(persistence.getStatistics().getGamesWon())); + gamesLost.setText(String.valueOf(persistence.getStatistics().getGamesLost())); + gameTime.setText(Integer.toString(persistence.getStatistics().getGameTimeInHours())); + deaths.setText(String.valueOf(persistence.getStatistics().getDeaths())); + blocks.setText(Integer.toString(persistence.getStatistics().getBlocksDestroyed())); } - public void iniPieChartkd() { + public void iniPieChartKD() { ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList( - new PieChart.Data("Kills", 20), - new PieChart.Data("Deaths", 12)); + new PieChart.Data("Kills", persistence.getStatistics().getKills()), + new PieChart.Data("Deaths", persistence.getStatistics().getDeaths())); pieChartData.forEach(data -> data.nameProperty().bind( @@ -52,11 +65,11 @@ public class StatisticsController implements Initializable { kd.getData().addAll(pieChartData); } - public void iniPieChartwl() { + public void iniPieChartWL() { ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList( - new PieChart.Data("Wins", 3), - new PieChart.Data("Losses", 5)); + new PieChart.Data("Wins", persistence.getStatistics().getGamesWon()), + new PieChart.Data("Losses", persistence.getStatistics().getGamesLost())); pieChartData.forEach(data -> data.nameProperty().bind( diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 0aa585603d11693283af1248de569d8643ca3450..13a2d3efa1b86db67773ffe8dc9a1017321bae3b 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -20,6 +20,5 @@ module gui { exports de.hdm_stuttgart.battlearena.Model.Inputs; exports de.hdm_stuttgart.battlearena.Model.Map; exports de.hdm_stuttgart.battlearena.Controller.Utilities; - exports de.hdm_stuttgart.battlearena.Model.Multiplayer; opens de.hdm_stuttgart.battlearena.Controller.Utilities to javafx.fxml; } \ No newline at end of file diff --git a/src/main/resources/fxml/MapSelection.fxml b/src/main/resources/fxml/MapSelection.fxml new file mode 100644 index 0000000000000000000000000000000000000000..1be6734bac78aa59dd7db7a771411adfd64dd828 --- /dev/null +++ b/src/main/resources/fxml/MapSelection.fxml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Accordion?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.ScrollPane?> +<?import javafx.scene.control.TitledPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.Pane?> +<?import javafx.scene.layout.VBox?> +<?import javafx.scene.text.Text?> + +<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MapSelectionController"> + <children> + <Pane VBox.vgrow="ALWAYS" /> + <HBox alignment="TOP_CENTER" spacing="20.0"> + <children> + <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Maps:" /> + <Accordion> + <panes> + <TitledPane fx:id="roundsTitledPane" text="Select"> + <content> + <ScrollPane minViewportHeight="40.0"> + <content> + <VBox fx:id="boxBox" /> + </content> + </ScrollPane> + </content> + </TitledPane> + </panes> + </Accordion> + </children> + <VBox.margin> + <Insets /> + </VBox.margin> + </HBox> + <HBox alignment="TOP_CENTER" maxWidth="-Infinity" minWidth="-Infinity" prefHeight="25.0" prefWidth="213.0" spacing="20.0"> + <children> + <Text fx:id="selectedMapText" strokeType="OUTSIDE" strokeWidth="0.0" /> + </children> + </HBox> + <Button mnemonicParsing="false" onAction="#gameScene" text="Start" /> + <Button mnemonicParsing="false" onAction="#backButton" text="Back"> + <VBox.margin> + <Insets bottom="50.0" /> + </VBox.margin> + </Button> + <Pane VBox.vgrow="ALWAYS" /> + </children> +</VBox> diff --git a/src/main/resources/fxml/MultiplayerCreate.fxml b/src/main/resources/fxml/MultiplayerCreate.fxml index 3cf21a91e290fca2da1b2516320c1feb50a99cee..f95e2126f13aee4f89541b835ef2c90ffbbc7d9b 100644 --- a/src/main/resources/fxml/MultiplayerCreate.fxml +++ b/src/main/resources/fxml/MultiplayerCreate.fxml @@ -47,7 +47,7 @@ <Insets top="20.0" /> </VBox.margin> </AnchorPane> - <Button mnemonicParsing="false" text="Start" /> + <Button mnemonicParsing="false" onAction="#start" text="Start" /> <Button mnemonicParsing="false" onAction="#backButton" text="Back" /> <Pane VBox.vgrow="ALWAYS" /> <Pane VBox.vgrow="ALWAYS" /> diff --git a/src/main/resources/fxml/PlayerCreateScene.fxml b/src/main/resources/fxml/PlayerCreateScene.fxml index 1563facf396815b701f237fdab3dd7e3769c7951..5200c6495466b6bf62772664a6f3a093ac2f5453 100644 --- a/src/main/resources/fxml/PlayerCreateScene.fxml +++ b/src/main/resources/fxml/PlayerCreateScene.fxml @@ -7,7 +7,6 @@ <?import javafx.scene.media.MediaView?> <?import javafx.scene.text.Text?> - <BorderPane fx:id="parent" 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.PlayerCreateController"> <center> <StackPane BorderPane.alignment="CENTER"> diff --git a/src/main/resources/fxml/Settings.fxml b/src/main/resources/fxml/Settings.fxml index 6cab6585ef8f19e015fc3645684934a599ee9aec..7b8950fc2664c2e1e041ce2d05b7b46986f01d64 100644 --- a/src/main/resources/fxml/Settings.fxml +++ b/src/main/resources/fxml/Settings.fxml @@ -15,13 +15,13 @@ <VBox alignment="CENTER" VBox.vgrow="ALWAYS"> <children> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Music volume:" /> - <Slider fx:id="musicVolume" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" VBox.vgrow="NEVER" /> + <Slider fx:id="musicSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" VBox.vgrow="NEVER" /> </children> </VBox> <VBox alignment="CENTER" VBox.vgrow="ALWAYS"> <children> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="SFX volume:" /> - <Slider fx:id="sfxVolume" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" /> + <Slider fx:id="sfxSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" /> </children> </VBox> </children> diff --git a/src/main/resources/player/appSettings.json b/src/main/resources/player/appSettings.json index ac6b7e58fa58ee25e2070c5cdfb9b8324bdddc6b..ec5bc62a909f2065d81be4cfd6c494b9e10715fb 100644 --- a/src/main/resources/player/appSettings.json +++ b/src/main/resources/player/appSettings.json @@ -1,4 +1,4 @@ { "sfxVolume": 50, - "musicVolume": 50 + "musicVolume": 0 } \ No newline at end of file diff --git a/src/main/resources/player/playerAccount.json b/src/main/resources/player/playerAccount.json index ad25fb8ab5d0aeda7756b512127b84937090f676..60070b6ed6a4c8153907eaf7e737e2e997fb3377 100644 --- a/src/main/resources/player/playerAccount.json +++ b/src/main/resources/player/playerAccount.json @@ -1,5 +1,5 @@ { "playerName": "Player1", "accountPassword": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", - "accountType": "ONLINE" + "accountType": "LOCAL" } \ No newline at end of file diff --git a/src/main/resources/player/playerStatsLocal.json b/src/main/resources/player/playerStatsLocal.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e51de779c74b6c93fe347b5bf263508c23fff2c9 100644 --- a/src/main/resources/player/playerStatsLocal.json +++ b/src/main/resources/player/playerStatsLocal.json @@ -0,0 +1,8 @@ +{ + "gamesLost": 5, + "gamesWon": 9, + "kills": 30, + "deaths": 20, + "blocksDestroyed": 200, + "gameTime": 3966480 +} \ No newline at end of file diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css index 2bb5cd89b79625f3392d4701dcf93ac9fb88d7f2..e676c8daadf56536c73d3bf8dd515a7c5a7533cd 100644 --- a/src/main/resources/styles/style.css +++ b/src/main/resources/styles/style.css @@ -4,7 +4,7 @@ } #button { - -fx-text-fill: black; + -fx-text-fill: #454545; } .root { diff --git a/src/main/resources/videos/catJump.mp4 b/src/main/resources/videos/catJump.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cce5bdb3f5ecb0d515d9802848cd742d8b6bcb56 Binary files /dev/null and b/src/main/resources/videos/catJump.mp4 differ diff --git a/src/main/resources/videos/sad.mp4 b/src/main/resources/videos/sad.mp4 index 9eb120c9e461edaed7858c02a42d44dc25f49e31..1868f52e473cad115b0dbe455c642211e5c50e81 100644 Binary files a/src/main/resources/videos/sad.mp4 and b/src/main/resources/videos/sad.mp4 differ