From 099cae42060ff0eb8633e756792537ac77fd85e8 Mon Sep 17 00:00:00 2001
From: ms622 <ms622@hdm-stuttgart.de>
Date: Fri, 24 Nov 2023 12:01:56 +0100
Subject: [PATCH] add: Enum EntityType.java, update: implements Entity
 Interface in EnemyHandler.java, update: implemented EntityFactory.java,
 update: created player via factory in GameSceneController.java, update:
 Player.java #6

---
 .../Controller/GameSceneController.java       |  9 ++++--
 .../Model/Entity/EnemyHandler.java            | 30 +++++++++++++++++--
 .../Model/Entity/EntityFactory.java           | 16 ++++++++++
 .../battlearena/Model/Entity/EntityType.java  |  6 ++++
 .../battlearena/Model/Entity/Player.java      |  2 +-
 5 files changed, 57 insertions(+), 6 deletions(-)
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityType.java

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 e5c306dc..c04aa065 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -1,6 +1,8 @@
 package de.hdm_stuttgart.battlearena.Controller;
 
-import de.hdm_stuttgart.battlearena.Model.Entity.Player;
+import de.hdm_stuttgart.battlearena.Model.Entity.EntityFactory;
+import de.hdm_stuttgart.battlearena.Model.Entity.EntityType;
+import de.hdm_stuttgart.battlearena.Model.Entity.IEntity;
 import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
 
 import javafx.animation.AnimationTimer;
@@ -26,14 +28,14 @@ public class GameSceneController implements Initializable {
 
     InputHandler inputHandler = InputHandler.getInstance();
 
-    Player player;
+    IEntity player;
 
 
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
         graphicsContext2D = canvas2D.getGraphicsContext2D();
 
-        player = new Player(graphicsContext2D, inputHandler);
+        player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler);
 
         AnimationTimer gameLoop = new AnimationTimer() {
             @Override
@@ -44,6 +46,7 @@ public class GameSceneController implements Initializable {
             }
         };
         gameLoop.start();
+        log.debug("Game loop started");
     }
 
     private void updateContent() {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
index ea46bb6f..c8e2638a 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EnemyHandler.java
@@ -1,10 +1,36 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import javafx.scene.canvas.GraphicsContext;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
-public class EnemyHandler {
+class EnemyHandler implements IEntity{
 
     private static final Logger log = LogManager.getLogger(EnemyHandler.class);
 
-}
+
+    @Override
+    public void initializeEntity() {
+
+    }
+
+    @Override
+    public void loadEntitySprites() {
+
+    }
+
+    @Override
+    public void updateEntityMovement() {
+
+    }
+
+    @Override
+    public void updateEntityAnimation() {
+
+    }
+
+    @Override
+    public void renderEntity(GraphicsContext graphicsContext) {
+
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
index 873a8359..189243ff 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
@@ -1,5 +1,9 @@
 package de.hdm_stuttgart.battlearena.Model.Entity;
 
+import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
+
+import javafx.scene.canvas.GraphicsContext;
+
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
@@ -7,4 +11,16 @@ public class EntityFactory {
 
     private static final Logger log = LogManager.getLogger(EntityFactory.class);
 
+    public static IEntity createEntity(EntityType entityType, GraphicsContext gameScene, InputHandler inputHandler) {
+        if (entityType == EntityType.PLAYER) {
+            log.debug("Entity " + entityType + " created");
+            return new Player(gameScene, inputHandler);
+        } else if (entityType == EntityType.ENEMY_PLAYER) {
+            log.debug("Entity " + entityType + " created");
+            return new EnemyHandler();
+        }
+
+        throw new IllegalArgumentException ("Entity type not supported " + entityType);
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityType.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityType.java
new file mode 100644
index 00000000..3e856077
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityType.java
@@ -0,0 +1,6 @@
+package de.hdm_stuttgart.battlearena.Model.Entity;
+
+public enum EntityType {
+    PLAYER,
+    ENEMY_PLAYER
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
index 0b5e206b..45c2ce7e 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java
@@ -11,7 +11,7 @@ import org.apache.logging.log4j.LogManager;
 
 import java.util.Objects;
 
-public class Player implements IEntity {
+class Player implements IEntity {
 
     private static final Logger log = LogManager.getLogger(Player.class);
 
-- 
GitLab