From 8afd90f31e3685b863d8376148a4daee10d80c0a Mon Sep 17 00:00:00 2001
From: Peter <pt033@hdm-stuttgart.de>
Date: Sat, 27 Jan 2024 17:16:37 +0100
Subject: [PATCH] update(game Scene): add responsive hp bar

---
 .../Controller/GameSceneController.java       | 41 ++++++-------------
 .../Controller/LoadingScreenController.java   |  4 +-
 src/main/resources/fxml/GameScene.fxml        |  8 +---
 3 files changed, 16 insertions(+), 37 deletions(-)

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 3a523cc9..b690ec81 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -15,36 +15,23 @@ import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
 import de.hdm_stuttgart.battlearena.Model.Map.Biom;
 import de.hdm_stuttgart.battlearena.Model.Map.TileManager;
 
-import de.hdm_stuttgart.battlearena.Model.Sound.SoundEffects;
 import javafx.animation.AnimationTimer;
 import javafx.fxml.FXML;
-import javafx.fxml.FXMLLoader;
 import javafx.fxml.Initializable;
 import javafx.geometry.Rectangle2D;
-import javafx.scene.Group;
 import javafx.scene.Node;
-import javafx.scene.Scene;
 import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 
 import javafx.scene.control.Label;
-import javafx.scene.control.Slider;
-import javafx.scene.effect.Blend;
-import javafx.scene.effect.BlendMode;
-import javafx.scene.effect.BoxBlur;
 import javafx.scene.effect.GaussianBlur;
 import javafx.scene.layout.*;
-import javafx.scene.paint.Color;
 import javafx.scene.shape.Rectangle;
 import javafx.scene.text.Font;
-import javafx.stage.Modality;
 import javafx.stage.Screen;
-import javafx.stage.Stage;
-import javafx.stage.StageStyle;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -57,8 +44,6 @@ public class GameSceneController implements Initializable {
     @FXML
     private Canvas canvas2D;
     @FXML
-    private Slider slider, slider2;
-    @FXML
     private Rectangle playerHealth, enemyHealth;
     @FXML
     private Pane playerPane, enemyPane;
@@ -170,20 +155,6 @@ public class GameSceneController implements Initializable {
         System.out.println(stackPane.heightProperty());
         System.out.println("dpi: " + screen.getDpi());
 
-//        testing hp bar
-        slider.valueProperty().addListener((observableValue, oldValue, newValue) -> {
-            System.out.println(stackPane.widthProperty().doubleValue());
-            System.out.println(stackPane.heightProperty().doubleValue());
-            double newWidth = healthBarWidth * (newValue.doubleValue() / 100);
-            playerHealth.setWidth(newWidth);
-            playerHp.setText(newValue.intValue() + "%");
-        });
-        slider2.valueProperty().addListener((observableValue, oldValue, newValue) -> {
-            double newWidth = healthBarWidth * (newValue.doubleValue() / 100);
-            enemyHealth.setWidth(newWidth);
-            enemyHp.setText(newValue.intValue() + "%");
-        });
-
         System.out.println("inches: " + diagonalInches);
 
         graphicsContext2D = canvas2D.getGraphicsContext2D();
@@ -274,6 +245,18 @@ public class GameSceneController implements Initializable {
         enemy.checkGameplayObjectInteraction(enemy, graphicsContext2D);
         player.placeBomb(player, enemy, graphicsContext2D);
         enemy.placeBomb(enemy, player, graphicsContext2D);
+        double playerHP = (double) getPlayer().getHealth() / getPlayer().getMaxEntityHealth();
+        double enemyHP = (double) getEnemy().getHealth() / getEnemy().getMaxEntityHealth();
+        if (playerHP >= 0) {
+            playerHealth.setWidth(healthBarWidth * (playerHP));
+            double playerPercentage = playerHP * 100;
+            playerHp.setText((int) playerPercentage + "%");
+        }
+        if (enemyHP >= 0) {
+            enemyHealth.setWidth(healthBarWidth * (enemyHP));
+            double enemyPercentage = enemyHP * 100;
+            enemyHp.setText((int) enemyPercentage + "%");
+        }
     }
 
     private void renderContent(GraphicsContext graphicsContext) {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java
index 3ab1fb9b..4d7f5e8b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java
@@ -51,7 +51,9 @@ public class LoadingScreenController implements Initializable {
             "Get the BattleArena Ultimate-Edition for only 420,69€.",
             "To move left, press one of the keys on your keyboard.",
             "To use the gravity-gun, close the game and start Half Life 2.",
-            "Buying this game was a good decision! (no refunds)."
+            "Buying this game was a good decision! (no refunds).",
+            "Apparently Jonas is above the law.",
+            "Jonas has lost his Game Dev Role in Discord."
     };
 
     private final List<String> shuffledTips = Arrays.asList(loadingTips);
diff --git a/src/main/resources/fxml/GameScene.fxml b/src/main/resources/fxml/GameScene.fxml
index 6d70dc66..fcac9451 100644
--- a/src/main/resources/fxml/GameScene.fxml
+++ b/src/main/resources/fxml/GameScene.fxml
@@ -3,7 +3,6 @@
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.canvas.Canvas?>
 <?import javafx.scene.control.Label?>
-<?import javafx.scene.control.Slider?>
 <?import javafx.scene.layout.BorderPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.Pane?>
@@ -56,12 +55,7 @@
       </VBox>
    </top>
    <left>
-      <VBox alignment="CENTER" prefHeight="200.0" prefWidth="300.0" BorderPane.alignment="CENTER">
-         <children>
-            <Slider fx:id="slider" orientation="VERTICAL" value="100.0" />
-            <Slider fx:id="slider2" orientation="VERTICAL" value="100.0" />
-         </children>
-      </VBox>
+      <VBox alignment="CENTER" prefHeight="200.0" prefWidth="300.0" BorderPane.alignment="CENTER" />
    </left>
    <right>
       <HBox BorderPane.alignment="CENTER">
-- 
GitLab