diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 099a697..f12adb1 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -10,6 +10,11 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.maps.MapLayers; +import com.badlogic.gdx.maps.MapObjects; +import com.badlogic.gdx.maps.objects.RectangleMapObject; +import com.badlogic.gdx.math.Intersector; +import com.badlogic.gdx.math.Rectangle; import com.dungeoncrawler.view.*; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.DungeonGenerator; @@ -114,7 +119,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(v == null){ // Position des Players, etc. werden aktualisiert - updateObjects(); + updateObjects(level, posRoom); // Raum, in dem sich der Player jetzt befindet, wird aktualisiert updateRoom(); @@ -131,8 +136,18 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ batch.dispose(); } - public void updateObjects(){ - d.getPlayer().update(); + public void updateObjects(int level, int[] posRoom){ + + MapLayers layers = m.getM().getMaps()[level][posRoom[0]][posRoom[1]].getLayers(); + MapObjects objects = layers.get(0).getObjects(); + System.out.println(objects.getCount()); + + RectangleMapObject rectangleObject = objects.getByType(RectangleMapObject.class).get(0); + + Rectangle rectangle = rectangleObject.getRectangle(); + if(Intersector.overlaps(rectangle, m.getPlayer().getBoundingRectangle())){ + d.getPlayer().update(); + } } public void updateRoom(){ diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index eebff22..1bb9fde 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -27,7 +27,7 @@ public class GameScreen { Texture archerTexture; //MAP - Map m; + private Map m; TiledMapRenderer tmr; TiledMap tm; OrthographicCamera camera; @@ -75,7 +75,7 @@ public class GameScreen { int xPosRoom = posRoom[0]; int yPosRoom = posRoom[1]; - tm = m.getMaps()[level][xPosRoom][yPosRoom]; + tm = getM().getMaps()[level][xPosRoom][yPosRoom]; if(tm == null){ System.out.println("Dein scheiß geht net"); @@ -163,6 +163,9 @@ public class GameScreen { public float getPlayerSpriteY(){ return player.getY(); } + public Sprite getPlayer(){ + return player; + } public float getEntitySpriteX(int i){ return entitySprites[i].getX(); @@ -185,5 +188,12 @@ public class GameScreen { public void setEntitySpriteY(int i,float y){ entitySprites[i].setY(y); } + + /** + * @return the m + */ + public Map getM() { + return m; + } } diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index a208c36..e0ce3e6 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -7,7 +7,10 @@ package com.dungeoncrawler.view; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.maps.MapLayer; import com.badlogic.gdx.maps.MapLayers; +import com.badlogic.gdx.maps.MapObjects; +import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapTileLayer; import com.badlogic.gdx.maps.tiled.tiles.StaticTiledMapTile; @@ -113,7 +116,8 @@ public class MapGenerator { // dynamicLayer: Beinhaltet alle Sprites, die ihre Postition ändern können (Entities, Items) // staticLayer: Beinhaltet alle Tiles und alles statische, was sich im Raum nicht ändern kann MapLayers layers = tempRoom.getLayers(); - TiledMapTileLayer collisionLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); + + MapLayer collisionLayer = new MapLayer(); TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); @@ -135,6 +139,11 @@ public class MapGenerator { } } + RectangleMapObject collision = new RectangleMapObject(48, 48, roomDimensionX, roomDimensionY); + collisionLayer.getObjects().add(collision); + + collisionLayer.setVisible(false); + layers.add(collisionLayer); layers.add(dynamicLayer); layers.add(staticLayer);