Ebenenwechsel klappt

master
Jonathan Hager 6 years ago
parent a3f72cc512
commit 3f46d82818

@ -228,6 +228,20 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
d.getPlayer().setxPos((roomX*48) - 48); d.getPlayer().setxPos((roomX*48) - 48);
d.getPlayer().setyPos((roomY / 2)*48); d.getPlayer().setyPos((roomY / 2)*48);
} }
if(posRoom[0] == d.getLevel()[level].getExit()[0] && posRoom[1] == d.getLevel()[level].getExit()[1]){
if(level < 6){
System.out.println("Nächstes Level, here we go");
level++;
tile[0] = roomX / 2;
tile[1] = roomY / 2;
int roomAmount = d.getLevel()[level].getRooms().length;
posRoom[0] = roomAmount / 2;
posRoom[1] = roomAmount / 2;
}
}
} }
public void newEntity(Entity ent, float x, float y, int lvl){ public void newEntity(Entity ent, float x, float y, int lvl){

@ -80,10 +80,54 @@ public class DungeonGenerator {
if(tempLevel.getRooms()[xPos][yPos] == null){ if(tempLevel.getRooms()[xPos][yPos] == null){
tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos);
// i darf nur erhöht werden, wenn auche in Raum generiert wurde // i darf nur erhöht werden, wenn auch ein Raum generiert wurde
i++; i++;
} }
} }
// Exit wird generiert
boolean istFertig = false;
do{
// Zufallszahl für die Richtung wird generiert, Oben: 0, Rechts: 1, Unten: 2, Links: 3
int direction = (int) (Math.random() * 4);
switch (direction) {
// Oben
case 0:
if(yPos != roomAmount - 1){
yPos += 1;
}
break;
// Rechts
case 1:
if(xPos != roomAmount - 1){
xPos += 1;
}
break;
// Unten
case 2:
if(yPos != 0){
yPos -= 1;
}
break;
// Links
case 3:
if(xPos != 0){
xPos -= 1;
}
break;
}
// An der neuen Stelle vom Cursor gibt es noch keinen Raum
if(tempLevel.getRooms()[xPos][yPos] == null){
tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos);
tempLevel.setExit(xPos, 0);
tempLevel.setExit(yPos, 1);
istFertig = true;
}
} while(!istFertig);
return tempLevel; return tempLevel;
} }

@ -46,6 +46,7 @@ public class MapGenerator {
} }
private TiledMap[][] generateLevel(int i, Level l){ private TiledMap[][] generateLevel(int i, Level l){
int sizeX = l.getRooms().length; int sizeX = l.getRooms().length;
int sizeY = l.getRooms()[0].length; int sizeY = l.getRooms()[0].length;
@ -63,7 +64,7 @@ public class MapGenerator {
int mapDimensionY = tempY + 2; int mapDimensionY = tempY + 2;
// Raum wird generiertf // Raum wird generiertf
TiledMap tempRoom = generateRoom(room, tempX, tempY); TiledMap tempRoom = generateRoom(room, tempX, tempY, i);
// 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);
@ -142,7 +143,20 @@ public class MapGenerator {
return tempLevel; return tempLevel;
} }
private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY){ private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY, int lvl){
int bodenX;
int bodenY;
if(lvl < 5){
bodenX = lvl;
bodenY = 0;
}
else{
bodenX = 0;
bodenY = lvl - 4;
}
TiledMap tempRoom = new TiledMap(); TiledMap tempRoom = new TiledMap();
// roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen, // roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen,
@ -185,7 +199,7 @@ public class MapGenerator {
cell.setTile(new StaticTiledMapTile(splitTiles[0][5])); cell.setTile(new StaticTiledMapTile(splitTiles[0][5]));
} }
else{ else{
cell.setTile(new StaticTiledMapTile(splitTiles[0][0])); cell.setTile(new StaticTiledMapTile(splitTiles[bodenX][bodenY]));
} }
staticLayer.setCell(x, y, cell); staticLayer.setCell(x, y, cell);

Loading…
Cancel
Save