From 275bc13e98aea15289fc6edc80ad188fdff6a84a Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Tue, 7 Apr 2020 13:08:20 +0200 Subject: [PATCH] Der Mapgenerator generiert wie ein Weltmeister --- .../com/dungeoncrawler/view/MapGenerator.java | 42 ++++++++++++++----- core/src/com/dungeoncrawler/view/View.java | 36 ++++++++++++++++ 2 files changed, 68 insertions(+), 10 deletions(-) diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index 75e28fb..3a07d3b 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -24,8 +24,8 @@ public class MapGenerator { Texture tiles; TextureRegion[][] splitTiles; - public MapGenerator(String tiles){ - this.tiles = new Texture(Gdx.files.internal(tiles)); + public MapGenerator(Texture tiles){ + this.tiles = tiles; splitTiles = TextureRegion.split(this.tiles, 48, 48); } @@ -41,26 +41,48 @@ public class MapGenerator { } private TiledMap[][] generateLevel(int i, Level l){ - int width = l.getRooms().length; - int height = l.getRooms()[0].length; + int sizeX = l.getRooms().length; + int sizeY = l.getRooms()[0].length; - TiledMap[][] tempLevel = new TiledMap[width][height]; + TiledMap[][] tempLevel = new TiledMap[sizeX][sizeY]; - for(int x = 0; x < width; x++){ - for(int y = 0; y < height; y++){ + for(int x = 0; x < sizeX; x++){ + for(int y = 0; y < sizeY; y++){ Room room = l.getRooms()[x][y]; - TiledMap tempRoom = generateRoom(room); - tempLevel[x][y] = tempRoom; + if(room != null){ + TiledMap tempRoom = generateRoom(room, sizeX, sizeY); + tempLevel[x][y] = tempRoom; + } + else{ + tempLevel[x][y] = null; + } } } return tempLevel; } - private TiledMap generateRoom(Room r){ + private TiledMap generateRoom(Room r, int sizeX, int sizeY){ TiledMap tempRoom = new TiledMap(); + MapLayers layers = tempRoom.getLayers(); + TiledMapTileLayer collisionLayer = new TiledMapTileLayer(7, 5, 48, 48); + TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(7, 5, 48, 48); + TiledMapTileLayer staticLayer = new TiledMapTileLayer(7, 5, 48, 48); + + for(int x = 0; x < 7; x++){ + for(int y = 0; y < 5; y++){ + TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell(); + cell.setTile(new StaticTiledMapTile(splitTiles[0][0])); + staticLayer.setCell(x, y, cell); + } + } + + layers.add(collisionLayer); + layers.add(dynamicLayer); + layers.add(staticLayer); + return tempRoom; } } diff --git a/core/src/com/dungeoncrawler/view/View.java b/core/src/com/dungeoncrawler/view/View.java index 766a266..01925ff 100644 --- a/core/src/com/dungeoncrawler/view/View.java +++ b/core/src/com/dungeoncrawler/view/View.java @@ -2,11 +2,17 @@ package com.dungeoncrawler.view; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.maps.tiled.TiledMap; +import com.badlogic.gdx.maps.tiled.TiledMapRenderer; +import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; +import com.dungeoncrawler.model.Dungeon; +import com.dungeoncrawler.model.DungeonGenerator; import com.dungeoncrawler.model.entities.*; public class View { @@ -26,6 +32,12 @@ public class View { Timer tlinks; Timer trechts; + Map tm; + TiledMapRenderer tmr; + TiledMap test; + OrthographicCamera camera; + Dungeon d; + public View() { b = new Texture("Button.png"); t = new Texture("Title.png"); @@ -51,6 +63,23 @@ public class View { tlinks = new Timer(); trechts = new Timer(); + tm = new Map(); + camera = new OrthographicCamera(1, h/w); + d = new DungeonGenerator().generateDungeon(10, 10, 48, new Player()); + MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tiles.gif"))); + TiledMap[][][] maps = mg.generateMap(7, d); + tm.setMaps(maps); + + for(int i=0;i