From a1b28c6ce16ef18ec66bb1c0ecee947e7d763d2a Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sun, 10 May 2020 00:46:32 +0200 Subject: [PATCH] nix geht --- .../dungeoncrawler/control/Controller.java | 31 ++++++++++++++++--- .../com/dungeoncrawler/view/MapGenerator.java | 17 +++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 4cc01eb..ec28a49 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -279,6 +279,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ //PASSIERT IN GAMESCREEN if(gs != null && mm == null && isPaused == false){ + float tempX = d.getPlayer().getxPos(); + float tempY = d.getPlayer().getyPos(); // Position des Players, etc. werden aktualisiert updateObjects(level, roomPosX, roomPosY); @@ -288,7 +290,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ tileY = (int) d.getPlayer().getyPos() / 48; if(tileX == 0 || tileX == roomX || tileY == 0 || tileY == roomY){ - updateRoom(); + updateRoom((int) tempX, (int) tempY); } @@ -310,12 +312,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(); //System.out.println(objects.getCount()); - updatePlayer(objects); + updatePlayer(objects, door); } - public void updatePlayer(MapObjects objects){ + public void updatePlayer(MapObjects objects, MapObjects door){ float x = d.getPlayer().getxPos(); d.getPlayer().updateX(); @@ -332,6 +335,16 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ System.out.println("Es laedt, es laedt, ich will nicht, dass es laedt, wenn es laedt, muss man immer so lange warten!!!!!"); } } + /* + for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + Rectangle tempDoor = rectangleObject.getRectangle(); + System.out.println("Door array"); + + if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ + d.getPlayer().setxPos(x); + } + } + */ float y = d.getPlayer().getyPos(); d.getPlayer().updateY(); @@ -347,10 +360,20 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ System.out.println("Es laedt, es laedt, ich will nicht, dass es laedt, wenn es laedt, muss man immer so lange warten!!!!!"); } } + /* + for(RectangleMapObject rectangleObject : door.getByType(RectangleMapObject.class)){ + Rectangle tempDoor = rectangleObject.getRectangle(); + + if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ + d.getPlayer().setyPos(y); + } + } +*/ + d.getPlayer().updateDirection(); } - public void updateRoom(){ + public void updateRoom(int tempX, int tempY){ //System.out.println(roomX + " " + roomY); //System.out.println("pos Player tiles: " + tileX + " " + tileY); diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index d7d0767..2939b29 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -84,6 +84,7 @@ 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); TiledMapTileLayer staticLayer = (TiledMapTileLayer) tempRoom.getLayers().get(2); RectangleMapObject bottom = (RectangleMapObject) collisionLayer.getObjects().get(0); @@ -100,6 +101,9 @@ public class MapGenerator { staticLayer.getCell((tempX / 2) + 1, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[4][3])); //oben3 staticLayer.getCell((tempX / 2) + 0, tempY + 3).setTile(new StaticTiledMapTile(splitTiles[3][5])); //oben3-1 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); } else{ // X: Exakte Mitte der Gesamtlänge, Y: Gesamtlänge @@ -124,6 +128,9 @@ public class MapGenerator { if(x+1 == l.getExit()[0] && y == l.getExit()[1]){ 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); } else{ // X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge @@ -141,7 +148,7 @@ public class MapGenerator { collisionLayer.getObjects().remove(right); RectangleMapObject tempTop = new RectangleMapObject(mapDimensionX*48 - 48, ((mapDimensionY / 2) + 1) * 48, 48, (mapDimensionY / 2) * 48); - RectangleMapObject tempBottom = new RectangleMapObject(mapDimensionX*48 - 48, 0, 48, (mapDimensionY / 2) * 48); + RectangleMapObject tempBottom = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, (mapDimensionY / 2) * 48); collisionLayer.getObjects().add(tempTop); collisionLayer.getObjects().add(tempBottom); @@ -152,6 +159,9 @@ public class MapGenerator { if(x == l.getExit()[0] && y-1 == l.getExit()[1]){ 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); } else{ // X: Exakte Mitte der Gesamtlänge, Y: 0 @@ -174,6 +184,9 @@ public class MapGenerator { if(x-1 == l.getExit()[0] && y == l.getExit()[1]){ 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); } else{ // X: 0, Y: Exakte Mitte der Gesamtlänge @@ -225,6 +238,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 doorLayer = new MapLayer(); RectangleMapObject bottom = new RectangleMapObject(0, 0, mapDimensionX*48, 48); collisionLayer.getObjects().add(bottom); @@ -307,6 +321,7 @@ public class MapGenerator { layers.add(collisionLayer); layers.add(dynamicLayer); layers.add(staticLayer); + layers.add(doorLayer); for(int i = 0; i < r.getItems().size(); i++){ if(r.getItems().get(i) != null){