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 0a702580fe7a00095752ce2f6141f25caa8a0344..5105b2d685d86ff1feffc27f51a518aba39a8684 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 4364ed78f3face5dcca4f183e62c11b13e43a9fd..9371727d591f59217bd55d1d360a1db227e13ad4 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 c57a773e4dec2aeb5b0b7da0adfeedb0b6d537e2..b75feb1a0451b93751926dfffa84bad931984cf7 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 0000000000000000000000000000000000000000..17e95c7e93fc890a5f993cc53b7eb6cfd1f4bd6b --- /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