räume erst nach clearen verlassbar ich bin der king der grammatik

master
Jonathan Hager 6 years ago
parent 330d5cf3b1
commit 498ca579a8

@ -89,7 +89,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
roomAmount = d.getLevel()[0].getRooms().length; roomAmount = d.getLevel()[0].getRooms().length;
level = 6; level = 0;
roomPosX = roomAmount / 2; roomPosX = roomAmount / 2;
roomPosY = 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(); MapLayers layers = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers();
MapObjects objects = layers.get(0).getObjects(); 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(); float x = d.getPlayer().getxPos();
d.getPlayer().updateX(); 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(); Rectangle tempDoor = rectangleObject.getRectangle();
if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ 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(); float y = d.getPlayer().getyPos();
d.getPlayer().updateY(); d.getPlayer().updateY();
gs.getPlayer().updateCollision((int) d.getPlayer().getxPos(),(int) d.getPlayer().getyPos()); 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(); Rectangle tempDoor = rectangleObject.getRectangle();
if(Intersector.overlaps(gs.getPlayer().getCollisionSprite(), tempDoor) && !d.getPlayer().checkKey()){ 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(); d.getPlayer().updateDirection();
} }
@ -895,4 +916,14 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
gs.startLoadingScreen(); gs.startLoadingScreen();
} }
public boolean hasEnemies(){
for(Entity e : d.getCurrentEntities()){
if(e != null && !e.isToDelete()){
return true;
}
}
return false;
}
} }

@ -86,7 +86,8 @@ public class MapGenerator {
// Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke! // Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke!
MapLayer collisionLayer = tempRoom.getLayers().get(0); 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); TiledMapTileLayer staticLayer = (TiledMapTileLayer) tempRoom.getLayers().get(2);
RectangleMapObject bottom = (RectangleMapObject) collisionLayer.getObjects().get(0); 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 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); RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, mapDimensionY*48 - 48, 48, 48);
doorLayer.getObjects().add(door); exitLayer.getObjects().add(door);
} }
else{ else{
// X: Exakte Mitte der Gesamtlänge, Y: Gesamtlänge // X: Exakte Mitte der Gesamtlänge, Y: Gesamtlänge
@ -123,6 +124,9 @@ public class MapGenerator {
collisionLayer.getObjects().add(tempLeft); collisionLayer.getObjects().add(tempLeft);
collisionLayer.getObjects().add(tempRight); collisionLayer.getObjects().add(tempRight);
RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, mapDimensionY*48 - 48, 48, 48);
doorLayer.getObjects().add(door);
} }
// Ausgang rechts // Ausgang rechts
@ -132,7 +136,7 @@ public class MapGenerator {
staticLayer.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][6])); //rechts 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); RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door); exitLayer.getObjects().add(door);
} }
else{ else{
// X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge // X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge
@ -145,6 +149,9 @@ public class MapGenerator {
AnimatedObject tempObject = new AnimatedObject(torchT, 48, 96); AnimatedObject tempObject = new AnimatedObject(torchT, 48, 96);
tempObject.getSprite().setPosition((tempX + 1) * 48, ((tempY / 2) + 2) * 48); tempObject.getSprite().setPosition((tempX + 1) * 48, ((tempY / 2) + 2) * 48);
temp.getObjects().add(tempObject); temp.getObjects().add(tempObject);
RectangleMapObject door = new RectangleMapObject(mapDimensionX*48 - 48, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door);
} }
collisionLayer.getObjects().remove(right); collisionLayer.getObjects().remove(right);
@ -163,7 +170,7 @@ public class MapGenerator {
staticLayer.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[1][6])); //unten staticLayer.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[1][6])); //unten
RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, 48); RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, 48);
doorLayer.getObjects().add(door); exitLayer.getObjects().add(door);
} }
else{ else{
// X: Exakte Mitte der Gesamtlänge, Y: 0 // X: Exakte Mitte der Gesamtlänge, Y: 0
@ -179,6 +186,9 @@ public class MapGenerator {
collisionLayer.getObjects().add(tempLeft); collisionLayer.getObjects().add(tempLeft);
collisionLayer.getObjects().add(tempRight); collisionLayer.getObjects().add(tempRight);
RectangleMapObject door = new RectangleMapObject((mapDimensionX / 2) * 48, 0, 48, 48);
doorLayer.getObjects().add(door);
} }
// Ausgang links // Ausgang links
@ -188,7 +198,7 @@ public class MapGenerator {
staticLayer.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[2][6])); //links staticLayer.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[2][6])); //links
RectangleMapObject door = new RectangleMapObject(0, (mapDimensionY / 2) * 48, 48, 48); RectangleMapObject door = new RectangleMapObject(0, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door); exitLayer.getObjects().add(door);
} }
else{ else{
// X: 0, Y: Exakte Mitte der Gesamtlänge // X: 0, Y: Exakte Mitte der Gesamtlänge
@ -210,6 +220,9 @@ public class MapGenerator {
collisionLayer.getObjects().add(tempTop); collisionLayer.getObjects().add(tempTop);
collisionLayer.getObjects().add(tempBottom); collisionLayer.getObjects().add(tempBottom);
RectangleMapObject door = new RectangleMapObject(0, (mapDimensionY / 2) * 48, 48, 48);
doorLayer.getObjects().add(door);
} }
temp.setMap(tempRoom); temp.setMap(tempRoom);
@ -240,6 +253,7 @@ public class MapGenerator {
MapLayer collisionLayer = new MapLayer(); MapLayer collisionLayer = new MapLayer();
TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48); TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48);
TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48); TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY + 2, 48, 48);
MapLayer exitLayer = new MapLayer();
MapLayer doorLayer = new MapLayer(); MapLayer doorLayer = new MapLayer();
RectangleMapObject bottom = new RectangleMapObject(0, 0, mapDimensionX*48, 48); RectangleMapObject bottom = new RectangleMapObject(0, 0, mapDimensionX*48, 48);
@ -323,6 +337,7 @@ public class MapGenerator {
layers.add(collisionLayer); layers.add(collisionLayer);
layers.add(dynamicLayer); layers.add(dynamicLayer);
layers.add(staticLayer); layers.add(staticLayer);
layers.add(exitLayer);
layers.add(doorLayer); layers.add(doorLayer);
for(int i = 0; i < r.getItems().size(); i++){ for(int i = 0; i < r.getItems().size(); i++){

Loading…
Cancel
Save