diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index f6d0ebd..8059552 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -9,7 +9,6 @@ import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; -import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.dungeoncrawler.view.*; import com.dungeoncrawler.model.Dungeon; @@ -23,11 +22,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ Dungeon d; DungeonGenerator dg; MainMenu v; - Player p; Entity[] e; Timer t; View m; Archer a; + int[] tile; + int[] posRoom; + int level; @Override public void create(){ @@ -35,10 +36,42 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ e = new Entity[5]; batch = new SpriteBatch(); v = new MainMenu(); - p = new Player(); - d = new Dungeon(p); dg = new DungeonGenerator(); - dg.ichWillSpielen(); + + d = dg.generateDungeon(0, 0, 0, new Player()); + dg.ichWillSpielen(d); + + tile = new int[2]; + posRoom = new int[2]; + + int roomLengthX = d.getLevel()[0].getRooms().length; + int roomLengthY = d.getLevel()[0].getRooms()[0].length; + int roomAmount = d.getLevel()[0].getRooms().length; + + int startRoom = (int) (Math.random() * roomAmount); + + level = 0; + + int k = 0; + for(int i = 0; i < roomLengthX; i++){ + for(int j = 0; j < roomLengthY; j++){ + if(d.getLevel()[level].getRooms()[i][j] != null){ + + if(k == startRoom){ + // Startraum wurde ausgewählt + posRoom[0] = i; + posRoom[1] = j; + + } + + k++; + } + + } + } + + e = new Entity[5]; + Gdx.input.setInputProcessor(this); t = new Timer(); a = new Archer(0,0,0); @@ -49,11 +82,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ for(int i = 0; i< e.length; i++){ if(e[i] == null){} else{ - e[i].rdmMove(p.getxPos(), p.getyPos()); - m.setPlayerSpriteX(p.getxPos()); - m.setPlayerSpriteY(p.getyPos()); - m.setEntitySpriteX(i,p.getxPos()); - m.setEntitySpriteY(i,p.getxPos()); + e[i].rdmMove(d.getPlayer().getxPos(), d.getPlayer().getyPos()); + m.setPlayerSpriteX(d.getPlayer().getxPos()); + m.setPlayerSpriteY(d.getPlayer().getyPos()); + m.setEntitySpriteX(i, d.getPlayer().getxPos()); + m.setEntitySpriteY(i, d.getPlayer().getxPos()); } } } @@ -65,20 +98,68 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public void render(){ //PASSIERT IN MAINMENU if(v != null){ - v.render(batch, p , e); + v.render(batch, d.getPlayer() , e); } + //PASSIERT IN GAMESCREEN (view) if(m != null){ //ENTITIES - p.setxPos(m.getPlayerSpriteX()); - p.setyPos(m.getPlayerSpriteY()); + d.getPlayer().setxPos(m.getPlayerSpriteX()); + d.getPlayer().setyPos(m.getPlayerSpriteY()); + + if(v == null){ - - //RENDER - m.render(batch, p, e); - + d.getPlayer().update(); + + tile[0] = (int) d.getPlayer().getxPos() / 48; + tile[1] = (int) d.getPlayer().getyPos() / 48; + + System.out.println("pos Player tiles: " + tile[0] + " " + tile[1]); + + int xPos = tile[0]; + int yPos = tile[1]; + + // oben + if(xPos == 4 && yPos == 6){ + System.out.println("oben"); + + posRoom[1] += 1; + d.getPlayer().setxPos(100); + d.getPlayer().setyPos(100); + } + + // rechts + if(xPos == 8 && yPos == 3){ + System.out.println("rechts"); + + posRoom[0] += 1; + d.getPlayer().setxPos(100); + d.getPlayer().setyPos(100); + } + + // unten + if(xPos == 4 && yPos == 0){ + System.out.println("unten"); + + posRoom[1] -= 1; + d.getPlayer().setxPos(100); + d.getPlayer().setyPos(100); + } + + // links + if(xPos == 0 && yPos == 3){ + 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 @@ -110,19 +191,19 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public boolean keyDown(int keycode) { if(keycode == Input.Keys.LEFT){ if(v != null){ - v.moveCursor(3); + v.moveCursor(3); } if(m != null){ - p.setMovementX(-3); + d.getPlayer().setMovementX(-3); } } if(keycode == Input.Keys.RIGHT){ if(v != null){ - v.moveCursor(1); + v.moveCursor(1); } if(m != null){ - p.setMovementX(3); + d.getPlayer().setMovementX(3); } } @@ -131,7 +212,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.moveCursor(2); } if(m != null){ - p.setMovementY(-3); + d.getPlayer().setMovementY(-3); } } @@ -140,7 +221,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.moveCursor(0); } if(m != null){ - p.setMovementY(3); + d.getPlayer().setMovementY(3); } } @@ -149,8 +230,10 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(v.click() == -1){} else if(v.click() == 0){ v = null; - m = new View(); + newEntity(a, 200, 200, 200); + m = new View(d); + System.out.println("NICE"); } } @@ -165,7 +248,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.stopCursor(3); } if(m != null){ - p.setMovementX(0); + d.getPlayer().setMovementX(0); } } @@ -174,7 +257,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.stopCursor(1); } if(m != null){ - p.setMovementX(0); + d.getPlayer().setMovementX(0); } } @@ -183,7 +266,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.stopCursor(2); } if(m != null){ - p.setMovementY(0); + d.getPlayer().setMovementY(0); } } @@ -192,7 +275,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.stopCursor(0); } if(m != null){ - p.setMovementY(0); + d.getPlayer().setMovementY(0); } } diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index c418582..1686c57 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -38,11 +38,11 @@ public class DungeonGenerator { // TODO: Zufällig Türen setzen - //int xPos = roomAmount / 2; - //int yPos = roomAmount / 2; + int xPos = roomAmount / 2; + int yPos = roomAmount / 2; - int xPos = (int) (Math.random() * roomAmount); - int yPos = (int) (Math.random() * roomAmount); + //int xPos = (int) (Math.random() * roomAmount); + //int yPos = (int) (Math.random() * roomAmount); tempLevel.setRoom(generateRoom(), xPos, yPos); @@ -53,8 +53,8 @@ public class DungeonGenerator { switch (direction) { // Oben case 0: - if(yPos != 0){ - yPos -= 1; + if(yPos != roomAmount - 1){ + yPos += 1; } break; // Rechts @@ -65,8 +65,8 @@ public class DungeonGenerator { break; // Unten case 2: - if(yPos != roomAmount - 1){ - yPos += 1; + if(yPos != 0){ + yPos -= 1; } break; // Links @@ -95,12 +95,10 @@ public class DungeonGenerator { Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]); - return tempRoom; } private int[] generatePos(int sizeX, int sizeY, int tileSize){ - int[] position = new int[2]; int xPos = (int) (Math.random() * sizeX); @@ -109,25 +107,24 @@ public class DungeonGenerator { return position; } - public void ichWillSpielen(){ - Dungeon d = this.generateDungeon(200, 200, 200, new Player()); + public void ichWillSpielen(Dungeon d){ for(int i=0;i= 0; k--){ + if(temp.getRooms()[j][k] == null){ + System.out.print("0 "); + } + else{ + System.out.print("1 "); + } } + System.out.println(); } - System.out.println(); - } } } } diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index c2c2fef..4e281fb 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -27,7 +27,8 @@ public abstract class Entity { } public void update(){ - + xPos += movementX; + yPos += movementY; } public void die(){ @@ -127,23 +128,6 @@ public abstract class Entity { } return -1; } - - public int direction(){ - if(movementX == -3){ - return 3; - } - if(movementX == 3){ - return 1; - } - if(movementY == 3){ - return 0; - } - if(movementY == -3){ - return 2; - } - return -1; - } - public float getxPos() { return xPos; diff --git a/core/src/com/dungeoncrawler/model/Level.java b/core/src/com/dungeoncrawler/model/Level.java index f136a45..62caaac 100644 --- a/core/src/com/dungeoncrawler/model/Level.java +++ b/core/src/com/dungeoncrawler/model/Level.java @@ -33,7 +33,7 @@ public class Level { } public void setRoom(Room room, int x, int y){ - if(x < this.rooms.length){ + if(x < this.rooms.length && y < this.rooms.length){ this.rooms[x][y] = room; } } diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index 60a543b..c355e42 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -24,6 +24,4 @@ public class Player extends Entity { // TODO: Sinnvolle Werte finden } - - } diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index 3a07d3b..be57833 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -5,7 +5,6 @@ */ package com.dungeoncrawler.view; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.maps.MapLayers; @@ -29,7 +28,9 @@ public class MapGenerator { splitTiles = TextureRegion.split(this.tiles, 48, 48); } - public TiledMap[][][] generateMap(int levelAmount, Dungeon d){ + public TiledMap[][][] generateMap(Dungeon d){ + int levelAmount = d.getLevel().length; + TiledMap[][][] tempMap = new TiledMap[levelAmount][][]; for(int i = 0; i < levelAmount; i++){ @@ -51,30 +52,66 @@ public class MapGenerator { Room room = l.getRooms()[x][y]; if(room != null){ - TiledMap tempRoom = generateRoom(room, sizeX, sizeY); + int tempX = 7; + int tempY = 5; + + TiledMap tempRoom = generateRoom(room, tempX, tempY); + + // Wenn es Fehler gibt, dann wohl hier: Viel Spaß beim Suchen! Danke! + TiledMapTileLayer temp = (TiledMapTileLayer) tempRoom.getLayers().get(2); + + // Ausgang oben + if(y < l.getRooms()[0].length - 1 && l.getRooms()[x][y + 1] != null){ + 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){ + 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){ + temp.getCell((tempX / 2) + 1, 0).setTile(new StaticTiledMapTile(splitTiles[0][3])); //unten + } + + // Ausgang links + if(x > 0 && l.getRooms()[x - 1][y] != null){ + temp.getCell(0, (tempY / 2) + 1).setTile(new StaticTiledMapTile(splitTiles[0][3])); //links + } + tempLevel[x][y] = tempRoom; } - else{ - tempLevel[x][y] = null; - } + } } return tempLevel; } - private TiledMap generateRoom(Room r, int sizeX, int sizeY){ + private TiledMap generateRoom(Room r, int roomDimensionX, int roomDimensionY){ TiledMap tempRoom = new TiledMap(); + int mapDimensionX = roomDimensionX + 2; + int mapDimensionY = roomDimensionY + 2; + MapLayers layers = tempRoom.getLayers(); - TiledMapTileLayer collisionLayer = new TiledMapTileLayer(7, 5, 48, 48); - TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(7, 5, 48, 48); - TiledMapTileLayer staticLayer = new TiledMapTileLayer(7, 5, 48, 48); + TiledMapTileLayer collisionLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); + TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); + TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); - for(int x = 0; x < 7; x++){ - for(int y = 0; y < 5; y++){ + for(int x = 0; x < mapDimensionX + 1; x++){ + for(int y = 0; y < mapDimensionY + 1; y++){ + TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell(); - cell.setTile(new StaticTiledMapTile(splitTiles[0][0])); + + if(x == 0 || x == mapDimensionX - 1 || y == 0 || y == mapDimensionY - 1){ + cell.setTile(new StaticTiledMapTile(splitTiles[0][5])); + } + else{ + cell.setTile(new StaticTiledMapTile(splitTiles[0][0])); + } + staticLayer.setCell(x, y, cell); } } @@ -85,4 +122,26 @@ public class MapGenerator { return tempRoom; } + + public void ichWillSpielen(TiledMap[][][] map){ + + for(int i=0;i= 0; k--){ + if(temp[j][k] == null){ + System.out.print("0 "); + } + else{ + System.out.print("1 "); + } + } + System.out.println(); + } + } + } } diff --git a/core/src/com/dungeoncrawler/view/View.java b/core/src/com/dungeoncrawler/view/View.java index 0956e7e..4d622aa 100644 --- a/core/src/com/dungeoncrawler/view/View.java +++ b/core/src/com/dungeoncrawler/view/View.java @@ -6,13 +6,11 @@ import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.Sprite; -import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapRenderer; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.dungeoncrawler.model.Dungeon; -import com.dungeoncrawler.model.DungeonGenerator; import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.entities.*; @@ -31,13 +29,12 @@ public class View { Texture archerTexture; //MAP - Map tm; + Map m; TiledMapRenderer tmr; TiledMap test; OrthographicCamera camera; - Dungeon d; - public View() { + public View(Dungeon d) { float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); float wc = w/2; @@ -58,34 +55,38 @@ public class View { //MAP - tm = new Map(); + m = new Map(); camera = new OrthographicCamera(1, h/w); - d = new DungeonGenerator().generateDungeon(10, 10, 48, new Player()); + MapGenerator mg = new MapGenerator(new Texture(Gdx.files.internal("tiles.gif"))); - TiledMap[][][] maps = mg.generateMap(7, d); - tm.setMaps(maps); - for(int i=0;i