Merge branch 'jonathan'

Frühjahrsputz
master
Jonathan Hager 6 years ago
commit d6df830e3b

@ -29,10 +29,15 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
int[] tile;
int[] posRoom;
int level;
int roomX;
int roomY;
@Override
public void create(){
roomX = 8;
roomY = 6;
e = new Entity[5];
batch = new SpriteBatch();
v = new MainMenu();
@ -108,19 +113,42 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
d.getPlayer().setyPos(m.getPlayerSpriteY());
if(v == null){
// Position des Players, etc. werden aktualisiert
updateObjects();
// Raum, in dem sich der Player jetzt befindet, wird aktualisiert
updateRoom();
// Render methode zum rendern der einzelnen Sprites wird aufgerufen
m.render(batch, d.getPlayer(), e, tile, level, posRoom);
}
}
}
@Override
public void dispose () {
batch.dispose();
}
public void updateObjects(){
d.getPlayer().update();
}
public void updateRoom(){
// tile[] beinhaltet die x und y Nummer des tiles, in dem sich der Player befindet
tile[0] = (int) d.getPlayer().getxPos() / 48;
tile[1] = (int) d.getPlayer().getyPos() / 48;
System.out.println(roomX + " " + roomY);
System.out.println("pos Player tiles: " + tile[0] + " " + tile[1]);
int xPos = tile[0];
int yPos = tile[1];
// oben
if(xPos == 4 && yPos == 6){
if(xPos == (roomX / 2) && yPos == roomY){
System.out.println("oben");
posRoom[1] += 1;
@ -129,7 +157,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
}
// rechts
if(xPos == 8 && yPos == 3){
if(xPos == roomX && yPos == (roomY / 2)){
System.out.println("rechts");
posRoom[0] += 1;
@ -138,7 +166,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
}
// unten
if(xPos == 4 && yPos == 0){
if(xPos == (roomX / 2) && yPos == 0){
System.out.println("unten");
posRoom[1] -= 1;
@ -147,24 +175,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
}
// links
if(xPos == 0 && yPos == 3){
if(xPos == 0 && yPos == (roomY / 2)){
System.out.println("links");
posRoom[0] -= 1;
d.getPlayer().setxPos(100);
d.getPlayer().setyPos(100);
}
// Render methode zum rendern der einzelnen Sprites wird aufgerufen
m.render(batch, d.getPlayer(), e, tile, level, posRoom);
}
}
}
@Override
public void dispose () {
batch.dispose();
}
public void newEntity(Entity ent, int x, int y, int lvl){
@ -182,7 +199,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
i = 10;
break;
}
}
}
}

@ -41,12 +41,11 @@ public class DungeonGenerator {
int xPos = roomAmount / 2;
int yPos = roomAmount / 2;
//int xPos = (int) (Math.random() * roomAmount);
//int yPos = (int) (Math.random() * roomAmount);
tempLevel.setRoom(generateRoom(), xPos, yPos);
// Schleife läuft so lange, bis die entsprechende Anzahl an Räumen generiert wurde
for(int i = 1; i < roomAmount;){
// Zufallszahl für die Richtung wird generiert, Oben: 0, Rechts: 1, Unten: 2, Links: 3
int direction = (int) (Math.random() * 4);

@ -20,6 +20,7 @@ import com.dungeoncrawler.model.Room;
* @author jonathan
*/
public class MapGenerator {
Texture tiles;
TextureRegion[][] splitTiles;
@ -33,6 +34,7 @@ public class MapGenerator {
TiledMap[][][] tempMap = new TiledMap[levelAmount][][];
// Jedes Level wird generiert
for(int i = 0; i < levelAmount; i++){
TiledMap[][] tempLevel = generateLevel(i, d.getLevel()[i]);
tempMap[i] = tempLevel;
@ -55,6 +57,7 @@ public class MapGenerator {
int tempX = 7;
int tempY = 5;
// Raum wird generiertf
TiledMap tempRoom = generateRoom(room, tempX, tempY);
// Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke!
@ -62,21 +65,29 @@ public class MapGenerator {
// Ausgang oben
if(y < l.getRooms()[0].length - 1 && l.getRooms()[x][y + 1] != null){
// X: Exakte Mitte der Gesamtlänge, Y: Gesamtlänge
temp.getCell((tempX / 2) + 1, tempY + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //oben
}
// Ausgang rechts
if(x < l.getRooms().length - 1 && l.getRooms()[x + 1][y] != null){
// X: Gesamtlänge, Y: Exakte Mitte der Gesamtlänge
temp.getCell(tempX + 1, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //rechts
}
// Ausgang unten
if(y > 0 && l.getRooms()[x][y - 1] != null){
// X: Exakte Mitte der Gesamtlänge, Y: 0
temp.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[0][3])); //unten
}
// Ausgang links
if(x > 0 && l.getRooms()[x - 1][y] != null){
// X: 0, Y: Exakte Mitte der Gesamtlänge
temp.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //links
}
@ -92,19 +103,27 @@ public class MapGenerator {
private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY){
TiledMap tempRoom = new TiledMap();
// roomDimension bezieht sich auf die Größe des Raumes, da aber noch die Wände fehlen,
// muss auf die Größe jeweils 2 addiert werden.
int mapDimensionX = roomDimensionX + 2;
int mapDimensionY = roomDimensionY + 2;
// Drei layer für die Map werden erstellt, die jeweils unterschiedliche Sachen speichern sollen:
// collisionLayer: Hier werden alle unsichtbaren Sprites gespeichert, anhand derer die Kollisionen berechnet werden
// 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);
TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48);
// Schleife läuft über jedes Teil des Raumes und generiert ein Tile aus dem tileset
for(int x = 0; x < mapDimensionX + 1; x++){
for(int y = 0; y < mapDimensionY + 1; y++){
TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell();
// Test, ob Tile eine Wand sein muss
if(x == 0 || x == mapDimensionX - 1 || y == 0 || y == mapDimensionY - 1){
cell.setTile(new StaticTiledMapTile(splitTiles[0][5]));
}

Loading…
Cancel
Save