From 98b3908b77f82921376e8fe3e03e1689707a730d Mon Sep 17 00:00:00 2001 From: toksikk Date: Fri, 31 Oct 2014 15:25:46 +0100 Subject: [PATCH] erweitertes tile handling in der map engine --- HeatUp/src/de/heatup/mapengine/MapEngine.java | 69 ++++++++++++------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/HeatUp/src/de/heatup/mapengine/MapEngine.java b/HeatUp/src/de/heatup/mapengine/MapEngine.java index 3d8d125..e073bc8 100644 --- a/HeatUp/src/de/heatup/mapengine/MapEngine.java +++ b/HeatUp/src/de/heatup/mapengine/MapEngine.java @@ -2,9 +2,12 @@ package de.heatup.mapengine; +import java.awt.Point; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Scanner; import javax.swing.JPanel; @@ -13,12 +16,15 @@ import de.heatup.logging.Logger; import de.heatup.objects.*; public class MapEngine { + final int mapHeight = 24; + final int mapWidth = 32; + HashMap> allMapTiles = new HashMap>(); char[][] tiles; - MapEngine() { - tiles = new char[24][32]; + MapEngine(int mapNumber) { + tiles = new char[mapHeight][mapWidth]; Scanner input = null; try { - input = new Scanner(new File("src/de/heatup/resources/maps/map1.txt")); + input = new Scanner(new File("src/de/heatup/resources/maps/map"+mapNumber+".txt")); } catch (FileNotFoundException e) { Logger.write("Konnte Map Datei nicht finden"); System.exit(-1); @@ -28,35 +34,41 @@ public class MapEngine { } private void createTiles(Scanner input) { int lineCount = 0; - while (input.hasNextLine()) { + int x = 0; + int y = 0; + while (input.hasNextLine() && lineCount <= mapHeight) { String currentLine = input.nextLine(); - for (int i = 0; i<32; i++) { - tiles[lineCount][i] = currentLine.charAt(i); + for (int i = 0; i newTileType = new ArrayList(); + newTileType.add(new Point(x,y)); + allMapTiles.put(currentLine.charAt(i), newTileType); + } else { + allMapTiles.get(currentLine.charAt(i)).add(new Point(x,y)); + } + /* + * setze x und y auf die koordinaten für das objekt im NÄCHSTEN durchlauf + */ + if (x+25 >= 800) { + x = 0; + y += 25; + } else { + x += 25; + } } lineCount++; } } -// private int defineTileType(char charAt) { -// for (char i = '0'; i<'9';i++) { -// if (charAt == i) { -// tileID.push(i-'0'); -// return 2; -// } -// } -// switch (charAt) { -// case '#': -// return 1; -// case '-': -// return 3; -// default: -// return 0; -// } -// } - public void addAllGameTilesToPanel(JPanel gamePanel) throws IOException { + public void addAllGameTilesToGamePanel(JPanel gamePanel) throws IOException { int x = 0; int y = 0; - for (int i = 0; i<24; i++) { - for (int j = 0; j < 32; j++) { + for (int i = 0; i= 800) { @@ -66,6 +78,10 @@ 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(); } @@ -78,4 +94,7 @@ public class MapEngine { private char[][] getTiles() { return tiles; } + public HashMap> getAllMapTiles() { + return allMapTiles; + } }