From 2ce0459ef1df9f07faded41c9abefcf1f78c48ae Mon Sep 17 00:00:00 2001 From: toksikk Date: Sat, 1 Nov 2014 21:44:15 +0100 Subject: [PATCH] =?UTF-8?q?Optimierung=20der=20MapEngine=20und=20erweitert?= =?UTF-8?q?=20um=20eine=20weitere=20Komponente=20zur=20Zusammenfassung=20a?= =?UTF-8?q?ller=20Map=20Tiles=20und=20ihrer=20Dimensionen.=20Hiermit=20ist?= =?UTF-8?q?=20eine=20einfachere=20M=C3=B6glichkeit=20die=20Tiles=20zu=20ze?= =?UTF-8?q?ichnen=20gew=C3=A4hrleistet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HeatUp/src/de/heatup/mapengine/MapEngine.java | 25 ++++++--- .../de/heatup/mapengine/MapObjectHandler.java | 51 +++++++++++++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 HeatUp/src/de/heatup/mapengine/MapObjectHandler.java diff --git a/HeatUp/src/de/heatup/mapengine/MapEngine.java b/HeatUp/src/de/heatup/mapengine/MapEngine.java index 79dec4e..3847515 100644 --- a/HeatUp/src/de/heatup/mapengine/MapEngine.java +++ b/HeatUp/src/de/heatup/mapengine/MapEngine.java @@ -20,7 +20,7 @@ public class MapEngine { final int mapHeight = 24; final int mapWidth = 32; HashMap> allMapTiles = new HashMap>(); - ArrayList availableTileTypes = new ArrayList(); + ArrayList availableHardwareTileTypes = new ArrayList(); char[][] tiles; /* * öffnet die map mit der gegebenen nummer aus den resourcen. @@ -70,7 +70,11 @@ public class MapEngine { ArrayList newTileType = new ArrayList(); newTileType.add(new Point(x,y)); allMapTiles.put(currentLine.charAt(i), newTileType); - availableTileTypes.add(currentLine.charAt(i)); + for (char j = '0'; j <= '9'; j++) { + if (j==currentLine.charAt(i)) { + availableHardwareTileTypes.add(currentLine.charAt(i)); + } + } } else { allMapTiles.get(currentLine.charAt(i)).add(new Point(x,y)); } @@ -90,7 +94,7 @@ public class MapEngine { /* * wird wahrscheinlich anders umgesetzt. methode ist für testzwecke enthalten. */ - public void addAllGameTilesToGamePanel(JPanel gamePanel) throws IOException { + protected void addAllGameTilesToGamePanel(JPanel gamePanel) throws IOException { int x = 0; int y = 0; for (int i = 0; i> getAllMapTiles() { return allMapTiles; } - public ArrayList getAvailableTileTypes() { - return availableTileTypes; + protected ArrayList getAvailableHardwareTileTypes() { + return availableHardwareTileTypes; } - public ArrayList getCoordinatesOfTileType(char c) { + protected ArrayList getAllCoordinatesOfTileType(char c) { return getAllMapTiles().get(c); } + protected Point getFirstTilesCoordinatesOfTileType(char c) { + return getAllMapTiles().get(c).get(0); + } + protected Point getLastTilesCoordinatesOfTileType(char c) { + return getAllMapTiles().get(c).get(getAllMapTiles().get(c).size()-1); + } + public ArrayList getAllMapObjects() { + return MapObjectHandler.getAllMapObjects(this); + } } diff --git a/HeatUp/src/de/heatup/mapengine/MapObjectHandler.java b/HeatUp/src/de/heatup/mapengine/MapObjectHandler.java new file mode 100644 index 0000000..5b1ed8f --- /dev/null +++ b/HeatUp/src/de/heatup/mapengine/MapObjectHandler.java @@ -0,0 +1,51 @@ +package de.heatup.mapengine; + +import java.awt.Point; +import java.util.ArrayList; + +import de.heatup.objects.StaticObject; + +public class MapObjectHandler { + + /* + * MAGIC NUMBER SINGLE TILE WIDTH + */ + private static final int singleTileWidth = 25; + + private static ArrayList allMapObjects = new ArrayList(); + protected static ArrayList getAllMapObjects(MapEngine me) { + createAllMapObjectsArrayList(me); + return allMapObjects; + } + protected static void createAllMapObjectsArrayList(MapEngine me) { + addAllWallsAndWaysTiles(me); + addAllHardwareTiles(me); + } + protected static void addAllHardwareTiles(MapEngine me) { + for (int i = 0; i allPointsOfCurrentType = me.getAllCoordinatesOfTileType(currentType); + Point firstPoint = allPointsOfCurrentType.get(0); + Point lastPoint = allPointsOfCurrentType.get(allPointsOfCurrentType.size()-1); + + int currentTilesTotalWidth = lastPoint.x-firstPoint.x+singleTileWidth; + int currentTilesTotalHeight = lastPoint.y-firstPoint.y+singleTileWidth; + + StaticObject newStaticObject = new StaticObject(currentType, firstPoint, currentTilesTotalWidth, currentTilesTotalHeight); + MapObjectHandler.allMapObjects.add(newStaticObject); + } + } + protected static void addAllWallsAndWaysTiles(MapEngine me) { + for (int i = 0; i allPointsOfCurrentType = me.getAllCoordinatesOfTileType(currentType); + for (int j = 0; j