diff --git a/HeatUp/src/de/heatup/mapengine/MapEngine.java b/HeatUp/src/de/heatup/mapengine/MapEngine.java index e073bc8..79dec4e 100644 --- a/HeatUp/src/de/heatup/mapengine/MapEngine.java +++ b/HeatUp/src/de/heatup/mapengine/MapEngine.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; +import javax.swing.JFileChooser; import javax.swing.JPanel; import de.heatup.logging.Logger; @@ -19,7 +20,11 @@ public class MapEngine { final int mapHeight = 24; final int mapWidth = 32; HashMap> allMapTiles = new HashMap>(); + ArrayList availableTileTypes = new ArrayList(); char[][] tiles; + /* + * öffnet die map mit der gegebenen nummer aus den resourcen. + */ MapEngine(int mapNumber) { tiles = new char[mapHeight][mapWidth]; Scanner input = null; @@ -32,6 +37,23 @@ public class MapEngine { } this.createTiles(input); } + /* + * öffnet einen file chooser um eine benutzer erstellte map zu öffnen + */ + MapEngine() { + tiles = new char[mapHeight][mapWidth]; + Scanner input = null; + try { + JFileChooser chooser = new JFileChooser(); + chooser.showOpenDialog(null); + input = new Scanner(chooser.getSelectedFile()); + } catch (FileNotFoundException e) { + Logger.write("Konnte Map Datei nicht finden"); + System.exit(-1); + e.printStackTrace(); + } + this.createTiles(input); + } private void createTiles(Scanner input) { int lineCount = 0; int x = 0; @@ -48,6 +70,7 @@ public class MapEngine { ArrayList newTileType = new ArrayList(); newTileType.add(new Point(x,y)); allMapTiles.put(currentLine.charAt(i), newTileType); + availableTileTypes.add(currentLine.charAt(i)); } else { allMapTiles.get(currentLine.charAt(i)).add(new Point(x,y)); } @@ -64,6 +87,9 @@ public class MapEngine { lineCount++; } } + /* + * wird wahrscheinlich anders umgesetzt. methode ist für testzwecke enthalten. + */ public void addAllGameTilesToGamePanel(JPanel gamePanel) throws IOException { int x = 0; int y = 0; @@ -78,15 +104,11 @@ public class MapEngine { x += 25; } gamePanel.add(newGameTile.getLabel()); - /* - * natürlich performanter, wenn es außerhalb der schleifen steht, aber so - * sieht es cooler aus :) - */ - gamePanel.repaint(); + } } - + gamePanel.repaint(); } /* * get all tiles in a 2 dimensional char array @@ -94,7 +116,13 @@ public class MapEngine { private char[][] getTiles() { return tiles; } - public HashMap> getAllMapTiles() { + private HashMap> getAllMapTiles() { return allMapTiles; } + public ArrayList getAvailableTileTypes() { + return availableTileTypes; + } + public ArrayList getCoordinatesOfTileType(char c) { + return getAllMapTiles().get(c); + } }