From b1ad7108da306b08879202b27e783ec39922ce6c Mon Sep 17 00:00:00 2001
From: ms622 <ms622@hdm-stuttgart.de>
Date: Wed, 29 Nov 2023 13:01:10 +0100
Subject: [PATCH] add: TileType.java, update: implementation of tile creation
 #10

---
 .../battlearena/Model/Map/BackgroundTile.java | 18 ++++++-
 .../battlearena/Model/Map/ITile.java          |  4 +-
 .../battlearena/Model/Map/TileManager.java    | 50 ++++++++++++++++++-
 .../battlearena/Model/Map/TileType.java       |  6 +++
 4 files changed, 74 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileType.java

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/BackgroundTile.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/BackgroundTile.java
index 0a702580..5105b2d6 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/BackgroundTile.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/BackgroundTile.java
@@ -1,10 +1,24 @@
 package de.hdm_stuttgart.battlearena.Model.Map;
 
+import javafx.scene.image.Image;
+
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
-public class BackgroundTile implements ITile{
+class BackgroundTile implements ITile{
 
     private static final Logger log = LogManager.getLogger(BackgroundTile.class);
 
-}
+    private Image tileSprite;
+    private final boolean isWalkable;
+
+    public BackgroundTile(Image tileSprite, boolean isWalkable) {
+        this.tileSprite = tileSprite;
+        this.isWalkable = isWalkable;
+    }
+
+    @Override
+    public boolean getCollision() {
+        return isWalkable;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/ITile.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/ITile.java
index 4364ed78..9371727d 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/ITile.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/ITile.java
@@ -1,4 +1,6 @@
 package de.hdm_stuttgart.battlearena.Model.Map;
 
+
 public interface ITile {
-}
+    boolean getCollision();
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
index c57a773e..b75feb1a 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java
@@ -1,10 +1,58 @@
 package de.hdm_stuttgart.battlearena.Model.Map;
 
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.image.Image;
+
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 
+import java.util.Objects;
+
 public class TileManager {
 
     private static final Logger log = LogManager.getLogger(TileManager.class);
 
-}
+    private final GraphicsContext graphicsContext2D;
+    private final ITile[] tileSet;
+    private final int[][] tileMap;
+
+    public TileManager(GraphicsContext graphicsContext2D, int diffTileCount,
+                       int horizontalTileCount, int verticalTileCount, String mapString) {
+        this.graphicsContext2D = graphicsContext2D;
+
+        tileSet = new BackgroundTile[diffTileCount];
+        tileMap = new int[horizontalTileCount][verticalTileCount];
+
+        createTiles();
+        generateMap(mapString, horizontalTileCount, verticalTileCount);
+    }
+
+    private void createTiles() {
+        try {
+            tileSet[0] = TileFactory.createTile(TileType.WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/mapPlaceholder.png"))));
+            tileSet[1] = TileFactory.createTile(TileType.NON_WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/stoneExampleTexture.png"))));
+        } catch (Exception e) {
+            log.error(e);
+        }
+    }
+
+    private void generateMap(String mapString, int horizontalTileCount, int verticalTileCount) {
+        String[] tileSet = mapString.split(" ");
+
+        int stringIndex = 0;
+
+        for (int row = 0; row < horizontalTileCount; row++) {
+            for (int colum = 0; colum < verticalTileCount; colum++) {
+                tileMap[row][colum] = Integer.parseInt(tileSet[stringIndex]);
+                stringIndex++;
+            }
+        }
+    }
+
+    public void renderMap(GraphicsContext graphicsContext2D) {
+
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileType.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileType.java
new file mode 100644
index 00000000..17e95c7e
--- /dev/null
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileType.java
@@ -0,0 +1,6 @@
+package de.hdm_stuttgart.battlearena.Model.Map;
+
+public enum TileType {
+    WALKABLE,
+    NON_WALKABLE
+}
\ No newline at end of file
-- 
GitLab