From 991c60944f5bf9209880d12a287ab85ff38b8f74 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sun, 26 Apr 2020 23:38:03 +0200 Subject: [PATCH] Leider keine 5dimensionalen Arrays :( --- .../dungeoncrawler/control/Controller.java | 2 +- .../com/dungeoncrawler/view/GameScreen.java | 5 +- core/src/com/dungeoncrawler/view/Map.java | 28 +------ .../com/dungeoncrawler/view/MapContainer.java | 78 +++++++++++++++++++ .../com/dungeoncrawler/view/MapGenerator.java | 37 +++++---- 5 files changed, 108 insertions(+), 42 deletions(-) create mode 100644 core/src/com/dungeoncrawler/view/MapContainer.java diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 2e7af6f..bef9b95 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -159,7 +159,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public void updateObjects(int level, int roomPosX, int roomPosY){ - MapLayers layers = m.getM().getMaps()[level][roomPosX][roomPosY].getLayers(); + MapLayers layers = m.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers(); MapObjects objects = layers.get(0).getObjects(); //System.out.println(objects.getCount()); diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 0feab51..f432b15 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -85,8 +85,7 @@ public class GameScreen { MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tilesets/tileset_floor_1.png"))); - TiledMap[][][] maps = mg.generateMap(d); - m.setMaps(maps); + m = mg.generateMap(d); mg.ichWillSpielen(m.getMaps()); tm = new TiledMap(); @@ -107,7 +106,7 @@ public class GameScreen { player.setX(p.getxPos()); player.setY(p.getyPos()); - tm = getM().getMaps()[level][roomPosX][roomPosY]; + tm = getM().getMaps()[level][roomPosX][roomPosY].getMap(); if(tm == null){ System.out.println("Dein scheiß geht net"); diff --git a/core/src/com/dungeoncrawler/view/Map.java b/core/src/com/dungeoncrawler/view/Map.java index 2bc0cd0..fd87c75 100644 --- a/core/src/com/dungeoncrawler/view/Map.java +++ b/core/src/com/dungeoncrawler/view/Map.java @@ -6,16 +6,12 @@ package com.dungeoncrawler.view; -import com.badlogic.gdx.graphics.g2d.Sprite; -import com.badlogic.gdx.maps.tiled.TiledMap; - /** * * @author jonathan */ public class Map { - private TiledMap[][][] maps; - private Sprite[] animatedObjects; + private MapContainer[][][] maps; public Map(){ @@ -24,33 +20,15 @@ public class Map { /** * @return the maps */ - public TiledMap[][][] getMaps() { + public MapContainer[][][] getMaps() { return maps; } /** * @param maps the maps to set */ - public void setMaps(TiledMap[][][] maps) { + public void setMaps(MapContainer[][][] maps) { this.maps = maps; } - - /** - * @return the animatedObjects - */ - public Sprite[] getAnimatedObjects() { - return animatedObjects; - } - - /** - * @param animatedObjects the animatedObjects to set - */ - public void setAnimatedObjects(Sprite[] animatedObjects) { - this.animatedObjects = animatedObjects; - } - - public void setAnimatedObjects(Sprite animatedObjects, int i) { - this.animatedObjects[i] = animatedObjects; - } } diff --git a/core/src/com/dungeoncrawler/view/MapContainer.java b/core/src/com/dungeoncrawler/view/MapContainer.java new file mode 100644 index 0000000..9372548 --- /dev/null +++ b/core/src/com/dungeoncrawler/view/MapContainer.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.dungeoncrawler.view; + +import com.badlogic.gdx.graphics.g2d.Sprite; +import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.maps.tiled.TiledMap; + +/** + * + * @author jonathan + */ +public class MapContainer { + private TiledMap map; + private Sprite[] animatedObjects; + private TextureRegion[][][] textures; + + public MapContainer(TiledMap map, int objectAmount){ + this.map = map; + this.animatedObjects = new Sprite[objectAmount]; + this.textures = new TextureRegion[objectAmount][][]; + } + + /** + * @return the map + */ + public TiledMap getMap() { + return map; + } + + /** + * @param map the map to set + */ + public void setMap(TiledMap map) { + this.map = map; + } + + /** + * @return the animatedObjects + */ + public Sprite[] getAnimatedObjects() { + return animatedObjects; + } + + /** + * @param animatedObjects the animatedObjects to set + */ + public void setAnimatedObjects(Sprite[] animatedObjects) { + this.animatedObjects = animatedObjects; + } + + public void setAnimatedObjects(Sprite animatedObject, int i) { + this.animatedObjects[i] = animatedObject; + } + + /** + * @return the textures + */ + public TextureRegion[][][] getTextures() { + return textures; + } + + /** + * @param textures the textures to set + */ + public void setTextures(TextureRegion[][][] textures) { + this.textures = textures; + } + + public void setTextures(TextureRegion[][] textures, int i) { + this.textures[i] = textures; + } + + +} diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index 5142b50..cdfe994 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -25,32 +25,39 @@ public class MapGenerator { Texture tiles; TextureRegion[][] splitTiles; + Texture torchT; + TextureRegion[][] torch; public MapGenerator(Texture tiles){ this.tiles = tiles; splitTiles = TextureRegion.split(this.tiles, 48, 48); + torchT = new Texture("sprites/torch.png"); + torch = TextureRegion.split(torchT, 48, 48); } - public TiledMap[][][] generateMap(Dungeon d){ + public Map generateMap(Dungeon d){ + Map temp = new Map(); + int levelAmount = d.getLevel().length; - TiledMap[][][] tempMap = new TiledMap[levelAmount][][]; + MapContainer[][][] tempMap = new MapContainer[levelAmount][][]; // Jedes Level wird generiert for(int i = 0; i < levelAmount; i++){ - TiledMap[][] tempLevel = generateLevel(i, d.getLevel()[i]); + MapContainer[][] tempLevel = generateLevel(i, d.getLevel()[i]); tempMap[i] = tempLevel; } - return tempMap; + temp.setMaps(tempMap); + return temp; } - private TiledMap[][] generateLevel(int i, Level l){ + private MapContainer[][] generateLevel(int i, Level l){ int sizeX = l.getRooms().length; int sizeY = l.getRooms()[0].length; - TiledMap[][] tempLevel = new TiledMap[sizeX][sizeY]; + MapContainer[][] tempLevel = new MapContainer[sizeX][sizeY]; for(int x = 0; x < sizeX; x++){ for(int y = 0; y < sizeY; y++){ @@ -63,8 +70,9 @@ public class MapGenerator { int mapDimensionX = tempX + 2; int mapDimensionY = tempY + 2; - // Raum wird generiertf - TiledMap tempRoom = generateRoom(room, tempX, tempY, i); + // Raum wird generiert + MapContainer temp = generateRoom(room, tempX, tempY, i); + TiledMap tempRoom = temp.getMap(); // Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke! MapLayer collisionLayer = tempRoom.getLayers().get(0); @@ -173,7 +181,8 @@ public class MapGenerator { collisionLayer.getObjects().add(tempBottom); } - tempLevel[x][y] = tempRoom; + temp.setMap(tempRoom); + tempLevel[x][y] = temp; } } @@ -182,7 +191,7 @@ public class MapGenerator { return tempLevel; } - private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY, int lvl){ + private MapContainer generateRoom(Room r, int roomDimensionX, int roomDimensionY, int lvl){ int bodenX; int bodenY; @@ -196,6 +205,7 @@ public class MapGenerator { bodenY = lvl - 4; } + MapContainer temp; TiledMap tempRoom = new TiledMap(); // roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen, @@ -298,13 +308,14 @@ public class MapGenerator { layers.add(dynamicLayer); layers.add(staticLayer); - return tempRoom; + temp = new MapContainer(tempRoom, 0); + return temp; } - public void ichWillSpielen(TiledMap[][][] map){ + public void ichWillSpielen(MapContainer[][][] map){ for(int i=0;i