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