From 42c8a6dafc4b2ce35760a701f6acc62e8cfe231a Mon Sep 17 00:00:00 2001 From: toksikk Date: Sat, 1 Nov 2014 06:26:52 +0100 Subject: [PATCH] =?UTF-8?q?Neue=20Methoden=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MapEngine erzeugt nun effektiv eine Map mit einer Koordinatenliste für jeden Tile Typ. Dieser kann flexibler eingesetzt werden. Zum Beispiel kann so einfach bestimmt werden, wie groß manipulierbare Tiles in ihrer Gesamtfläche sind und außerdem können wir sowohl Graphics als auch JLabel zum Zeichnen nehmen. --- HeatUp/src/de/heatup/mapengine/MapEngine.java | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) 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); + } }