From 498ca579a80d773d4321a33649c6957d316ace51 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Fri, 15 May 2020 22:13:04 +0200 Subject: [PATCH] =?UTF-8?q?r=C3=A4ume=20erst=20nach=20clearen=20verlassbar?= =?UTF-8?q?=20ich=20bin=20der=20king=20der=20grammatik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dungeoncrawler/control/Controller.java | 43 ++++++++++++++++--- .../com/dungeoncrawler/view/MapGenerator.java | 25 ++++++++--- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 667e04a..0630a88 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -89,7 +89,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomAmount = d.getLevel()[0].getRooms().length; - level = 6; + level = 0; roomPosX = roomAmount / 2; roomPosY = roomAmount / 2; @@ -321,12 +321,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ MapLayers layers = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers(); MapObjects objects = layers.get(0).getObjects(); - MapObjects door = layers.get(3).getObjects(); + MapObjects exit = layers.get(3).getObjects(); + MapObjects door = layers.get(4).getObjects(); - updatePlayer(objects, door); + updatePlayer(objects, exit, door); } - public void updatePlayer(MapObjects objects, MapObjects door){ + public void updatePlayer(MapObjects objects, MapObjects exit, MapObjects door){ float x = d.getPlayer().getxPos(); d.getPlayer().updateX(); @@ -343,7 +344,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } - for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + for(RectangleMapObject rectangleObject : exit.getByType(RectangleMapObject.class)){ Rectangle tempDoor = rectangleObject.getRectangle(); if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ @@ -351,6 +352,16 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } + if(hasEnemies()){ + for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + Rectangle tempDoor = rectangleObject.getRectangle(); + + if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor)){ + d.getPlayer().setxPos(x); + } + } + } + float y = d.getPlayer().getyPos(); d.getPlayer().updateY(); gs.getPlayer().updateCollision((int) d.getPlayer().getxPos(),(int) d.getPlayer().getyPos()); @@ -365,7 +376,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } - for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + for(RectangleMapObject rectangleObject : exit.getByType(RectangleMapObject.class)){ Rectangle tempDoor = rectangleObject.getRectangle(); if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ @@ -373,6 +384,16 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } + if(hasEnemies()){ + for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + Rectangle tempDoor = rectangleObject.getRectangle(); + + if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor)){ + d.getPlayer().setyPos(y); + } + } + } + d.getPlayer().updateDirection(); } @@ -895,4 +916,14 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ gs.startLoadingScreen(); } + public boolean hasEnemies(){ + for(Entity e : d.getCurrentEntities()){ + if(e != null && !e.isToDelete()){ + return true; + } + } + + return false; + } + } diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index cb84458..18679b9 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -86,7 +86,8 @@ public class MapGenerator { // Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke! MapLayer collisionLayer = tempRoom.getLayers().get(0); - MapLayer doorLayer = tempRoom.getLayers().get(3); + MapLayer exitLayer = tempRoom.getLayers().get(3); + MapLayer doorLayer = tempRoom.getLayers().get(4); TiledMapTileLayer staticLayer = (TiledMapTileLayer) tempRoom.getLayers().get(2); RectangleMapObject bottom = (RectangleMapObject) collisionLayer.getObjects().get(0); @@ -105,7 +106,7 @@ public class MapGenerator { staticLayer.getCell((tempX / 2) + 2, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[2][5])); //oben3+1 RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, mapDimensionY*48 - 48, 48, 48); - doorLayer.getObjects().add(door); + exitLayer.getObjects().add(door); } else{ // X: Exakte Mitte der Gesamtlänge, Y: Gesamtlänge @@ -123,6 +124,9 @@ public class MapGenerator { collisionLayer.getObjects().add(tempLeft); collisionLayer.getObjects().add(tempRight); + + RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, mapDimensionY*48 - 48, 48, 48); + doorLayer.getObjects().add(door); } // Ausgang rechts @@ -132,7 +136,7 @@ public class MapGenerator { staticLayer.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][6])); //rechts RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48); - doorLayer.getObjects().add(door); + exitLayer.getObjects().add(door); } else{ // X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge @@ -145,6 +149,9 @@ public class MapGenerator { AnimatedObject tempObject = new AnimatedObject(torchT, 48, 96); tempObject.getSprite().setPosition((tempX + 1) * 48, ((tempY / 2) + 2) * 48); temp.getObjects().add(tempObject); + + RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48); + doorLayer.getObjects().add(door); } collisionLayer.getObjects().remove(right); @@ -163,7 +170,7 @@ public class MapGenerator { staticLayer.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[1][6])); //unten RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, 48); - doorLayer.getObjects().add(door); + exitLayer.getObjects().add(door); } else{ // X: Exakte Mitte der Gesamtlänge, Y: 0 @@ -179,6 +186,9 @@ public class MapGenerator { collisionLayer.getObjects().add(tempLeft); collisionLayer.getObjects().add(tempRight); + + RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, 48); + doorLayer.getObjects().add(door); } // Ausgang links @@ -188,7 +198,7 @@ public class MapGenerator { staticLayer.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[2][6])); //links RectangleMapObject door = new RectangleMapObject(0, (mapDimensionY / 2) * 48, 48, 48); - doorLayer.getObjects().add(door); + exitLayer.getObjects().add(door); } else{ // X: 0, Y: Exakte Mitte der Gesamtlänge @@ -210,6 +220,9 @@ public class MapGenerator { collisionLayer.getObjects().add(tempTop); collisionLayer.getObjects().add(tempBottom); + + RectangleMapObject door = new RectangleMapObject(0, (mapDimensionY / 2) * 48, 48, 48); + doorLayer.getObjects().add(door); } temp.setMap(tempRoom); @@ -240,6 +253,7 @@ public class MapGenerator { MapLayer collisionLayer = new MapLayer(); TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48); TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48); + MapLayer exitLayer = new MapLayer(); MapLayer doorLayer = new MapLayer(); RectangleMapObject bottom = new RectangleMapObject(0, 0, mapDimensionX*48, 48); @@ -323,6 +337,7 @@ public class MapGenerator { layers.add(collisionLayer); layers.add(dynamicLayer); layers.add(staticLayer); + layers.add(exitLayer); layers.add(doorLayer); for(int i = 0; i < r.getItems().size(); i++){