diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java index 513c8c606c6b4883bc6cb67f99b187c09332bf27..82dc6a44741b0ac2996c27f7409ff03431660603 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -13,6 +13,12 @@ import javafx.fxml.Initializable; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.control.Slider; +import javafx.scene.layout.VBox; +import javafx.scene.shape.Rectangle; +import javafx.scene.text.Font; +import javafx.scene.text.Text; +import javafx.stage.Screen; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; @@ -25,6 +31,16 @@ public class GameSceneController implements Initializable { @FXML private Canvas canvas2D; + @FXML + private Slider slider, slider2; + @FXML + private Rectangle playerHealth, enemyHealth; + @FXML + private VBox healthVBox, hpVBox; + @FXML + private Text playerHp, enemyHp; + private final int health = 900; + final private double healthBarWidth = Screen.getPrimary().getVisualBounds().getWidth() / 2.844; private GraphicsContext graphicsContext2D; @@ -65,8 +81,24 @@ public class GameSceneController implements Initializable { @Override public void initialize(URL url, ResourceBundle resourceBundle) { +// for some reason scene builder overwrites css fonts bruh + playerHp.setFont(Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 55)); + enemyHp.setFont(Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 55)); + playerHp.setText("100%"); + enemyHp.setText("100%"); + +// stopping the VBox from shrinking when health bar gets smaller + healthVBox.setMinWidth(healthBarWidth); + healthVBox.setMaxWidth(healthBarWidth); + hpVBox.setMinWidth(110); + + playerHealth.setWidth(healthBarWidth); + enemyHealth.setWidth(healthBarWidth); + graphicsContext2D = canvas2D.getGraphicsContext2D(); graphicsContext2D.setImageSmoothing(false); + canvas2D.setScaleX(1.2); + canvas2D.setScaleY(1.2); player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler, playerClass, this); enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler, enemyClass, this); @@ -83,6 +115,16 @@ public class GameSceneController implements Initializable { }; gameLoop.start(); log.debug("Game loop started"); + +// testing + slider.valueProperty().addListener((observableValue, oldValue, newValue) -> { + playerHealth.setWidth(health * (newValue.doubleValue() / 100)); + playerHp.setText(newValue.intValue() + "%"); + }); + slider2.valueProperty().addListener((observableValue, oldValue, newValue) -> { + enemyHealth.setWidth(health * (newValue.doubleValue() / 100)); + enemyHp.setText(newValue.intValue() + "%"); + }); } private void updateContent() { 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 72384e096a70c552a36dd8963dbf1195c25c71ae..236b82f5e388a20a67b7ed33e5dd06c8586eb20e 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -47,7 +47,7 @@ public class MenuBorderPaneController implements Initializable { imgLeft.setFitWidth(imageWidth); imgLeft.setPreserveRatio(true); - backgroundMusic("cocBackgroundMusicTest.mp3"); +// backgroundMusic("cocBackgroundMusicTest.mp3"); easterEgg(); // shuffle meme order 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 770239688d18c726ff042acb64507df7ba207812..1f3eb7b862d4fdd0ea82ad4cbf912110cc19fe4a 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/SkinSelectionController.java @@ -53,7 +53,7 @@ public class SkinSelectionController implements Initializable { @FXML private void gameScene() { try { - MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); +// MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameScene.fxml")))); } catch (IOException e) { throw new RuntimeException(); diff --git a/src/main/resources/fxml/GameScene.fxml b/src/main/resources/fxml/GameScene.fxml index f046db58280a8ea339f035b1879ac8e6e73b8115..2eaf652254a6b3adb046bb5ed4f342b02cbef568 100644 --- a/src/main/resources/fxml/GameScene.fxml +++ b/src/main/resources/fxml/GameScene.fxml @@ -1,15 +1,62 @@ <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.canvas.Canvas?> -<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.control.Slider?> +<?import javafx.scene.layout.BorderPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.StackPane?> +<?import javafx.scene.layout.VBox?> +<?import javafx.scene.shape.Rectangle?> +<?import javafx.scene.text.Font?> +<?import javafx.scene.text.Text?> -<AnchorPane prefHeight="864.0" prefWidth="864.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.GameSceneController"> - <children> - <StackPane prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> + +<BorderPane fx:id="gameScene" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.GameSceneController"> + <center> + <StackPane prefHeight="400.0" prefWidth="600.0" BorderPane.alignment="CENTER"> <children> <Canvas fx:id="canvas2D" height="864.0" width="864.0" /> </children> </StackPane> - </children> -</AnchorPane> + </center> + <top> + <HBox alignment="CENTER" spacing="30.0" BorderPane.alignment="CENTER"> + <children> + <VBox fx:id="healthVBox" alignment="CENTER_LEFT" spacing="20.0" HBox.hgrow="NEVER"> + <children> + <Pane VBox.vgrow="ALWAYS" /> + <Rectangle fx:id="playerHealth" arcHeight="5.0" arcWidth="5.0" fill="#c92c1a" height="70.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="900.0" /> + <Rectangle fx:id="enemyHealth" arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="70.0" stroke="BLACK" strokeType="INSIDE" strokeWidth="0.0" width="900.0" /> + </children> + </VBox> + <VBox fx:id="hpVBox" alignment="CENTER_LEFT" spacing="20.0"> + <children> + <Pane VBox.vgrow="ALWAYS" /> + <Text fx:id="playerHp" strokeType="OUTSIDE" strokeWidth="0.0" VBox.vgrow="ALWAYS"> + <font> + <Font size="45.0" /> + </font> + </Text> + <Text fx:id="enemyHp" strokeType="OUTSIDE" strokeWidth="0.0" VBox.vgrow="ALWAYS"> + <font> + <Font size="45.0" /> + </font> + </Text> + </children> + </VBox> + </children> + </HBox> + </top> + <left> + <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER"> + <children> + <Slider fx:id="slider2" orientation="VERTICAL" /> + <Slider fx:id="slider" orientation="VERTICAL" /> + </children> + </VBox> + </left> + <right> + <VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER" /> + </right> +</BorderPane> diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css index 5ba6c2d273c9ac17509b5bcfbd772abec2725706..c93623dc7f5d9b05f623907495755badd233bc46 100644 --- a/src/main/resources/styles/style.css +++ b/src/main/resources/styles/style.css @@ -10,7 +10,7 @@ .root { -fx-font-family: "Starship Shadow"; -fx-text-fill: white; - -fx-background-color: #d1853f; + -fx-background-color: black; } #mainMenu{ @@ -22,6 +22,11 @@ -fx-font-size: 100; } +#gameScene { + -fx-background-image: url("../textures/images/test.jpg"); + -fx-background-size: cover; +} + .button { -fx-text-fill: -fx-brown; -fx-background-color: none; diff --git a/src/main/resources/textures/images/test.jpg b/src/main/resources/textures/images/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0618af6c2edbd72fc986c19759f2a3c102dabcc5 Binary files /dev/null and b/src/main/resources/textures/images/test.jpg differ