Merge branch 'master' of github.com:jokerx3/prp

This commit is contained in:
andreas
2014-11-01 21:48:23 +01:00
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);
}
}
}
}
}