Optimierung der MapEngine und erweitert um eine weitere Komponente zur

Zusammenfassung aller Map Tiles und ihrer Dimensionen. Hiermit ist eine
einfachere Möglichkeit die Tiles zu zeichnen gewährleistet.
This commit is contained in:
toksikk
2014-11-01 21:44:15 +01:00
parent 2ea61e7435
commit 2ce0459ef1
2 changed files with 70 additions and 6 deletions
+19 -6
View File
@@ -20,7 +20,7 @@ public class MapEngine {
final int mapHeight = 24;
final int mapWidth = 32;
HashMap<Character, ArrayList<Point>> allMapTiles = new HashMap<Character, ArrayList<Point>>();
ArrayList<Character> availableTileTypes = new ArrayList<Character>();
ArrayList<Character> availableHardwareTileTypes = new ArrayList<Character>();
char[][] tiles;
/*
* öffnet die map mit der gegebenen nummer aus den resourcen.
@@ -70,7 +70,11 @@ public class MapEngine {
ArrayList<Point> newTileType = new ArrayList<Point>();
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<mapHeight; i++) {
@@ -119,10 +123,19 @@ public class MapEngine {
private HashMap<Character, ArrayList<Point>> getAllMapTiles() {
return allMapTiles;
}
public ArrayList<Character> getAvailableTileTypes() {
return availableTileTypes;
protected ArrayList<Character> getAvailableHardwareTileTypes() {
return availableHardwareTileTypes;
}
public ArrayList<Point> getCoordinatesOfTileType(char c) {
protected ArrayList<Point> 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<StaticObject> getAllMapObjects() {
return MapObjectHandler.getAllMapObjects(this);
}
}
@@ -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<StaticObject> allMapObjects = new ArrayList<StaticObject>();
protected static ArrayList<StaticObject> 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<me.getAvailableHardwareTileTypes().size(); i++) {
char currentType = me.getAvailableHardwareTileTypes().get(i); // current type
ArrayList<Point> 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<me.getAvailableHardwareTileTypes().size(); i++) {
char currentType = me.getAvailableHardwareTileTypes().get(i);
if (currentType == '#' || currentType == '-') {
ArrayList<Point> allPointsOfCurrentType = me.getAllCoordinatesOfTileType(currentType);
for (int j = 0; j<allPointsOfCurrentType.size(); j++) {
Point currentPoint = allPointsOfCurrentType.get(j);
StaticObject newStaticObject = new StaticObject(currentType, currentPoint);
MapObjectHandler.allMapObjects.add(newStaticObject);
}
}
}
}
}