diff --git a/core/assets/Archer-64.png b/core/assets/Archer-64.png deleted file mode 100644 index 26ecf00..0000000 Binary files a/core/assets/Archer-64.png and /dev/null differ diff --git a/core/assets/HorizontalArrow.png b/core/assets/HorizontalArrow.png deleted file mode 100644 index 0f41aa5..0000000 Binary files a/core/assets/HorizontalArrow.png and /dev/null differ diff --git a/core/assets/Player.png b/core/assets/Player.png index 174204e..74b08ff 100644 Binary files a/core/assets/Player.png and b/core/assets/Player.png differ diff --git a/core/assets/Swordsman.png b/core/assets/Swordsman.png new file mode 100644 index 0000000..cf73c7e Binary files /dev/null and b/core/assets/Swordsman.png differ diff --git a/core/assets/animplay.png b/core/assets/animplay.png deleted file mode 100644 index 881f12f..0000000 Binary files a/core/assets/animplay.png and /dev/null differ diff --git a/core/assets/badlogic.jpg b/core/assets/badlogic.jpg deleted file mode 100644 index 4390da6..0000000 Binary files a/core/assets/badlogic.jpg and /dev/null differ diff --git a/core/assets/cursor.png b/core/assets/cursor.png new file mode 100644 index 0000000..92230ec Binary files /dev/null and b/core/assets/cursor.png differ diff --git a/core/assets/key.png b/core/assets/key.png new file mode 100644 index 0000000..2376f7f Binary files /dev/null and b/core/assets/key.png differ diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index a382bf0..2c7b453 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -10,103 +10,78 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.dungeoncrawler.view.View; +import com.dungeoncrawler.view.*; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.DungeonGenerator; -import com.dungeoncrawler.model.entities.Player; -import com.dungeoncrawler.model.entities.Archer; +import com.dungeoncrawler.model.entities.*; +import com.dungeoncrawler.model.Entity; import com.badlogic.gdx.utils.Timer; public class Controller extends ApplicationAdapter implements InputProcessor{ SpriteBatch batch; Dungeon d; DungeonGenerator dg; - View v; - Player p; - Archer a; - Timer tAttack; - Timer coords; + MainMenu v; + Player p; + Entity[] e; + Timer t; + Map m; @Override public void create(){ batch = new SpriteBatch(); - p = new Player(200f, 200f); + v = new MainMenu(); + p = new Player(); d = new Dungeon(p); - v = new View(); - p.setxPos(v.getPlayerX()); - p.setyPos(v.getPlayerY()); - dg = new DungeonGenerator(); dg.ichWillSpielen(); - - d = new Dungeon(p); - a = new Archer(500f, 200f, 1); - a.setxPos(v.getArcherX()); - a.setyPos(v.getArcherY()); - + e = new Entity[5]; + //TEST + Archer a = new Archer(0,0,0); + newEntity(a, 200, 500, 200); + Swordsman s = new Swordsman(0,0,0); + newEntity(s, 500, 200, 500); + // Gdx.input.setInputProcessor(this); - tAttack = new Timer(); - tAttack.scheduleTask(new Timer.Task() { + t = new Timer(); + t.scheduleTask(new Timer.Task() { @Override public void run() { - if(p.getxPos() == a.getxPos()){ - if(p.getyPos() > a.getyPos()){ - a.attack(0); //UP - if(v.getArrowTravel() == 0){ - v.arrow(a,0); - } - } - else if(p.getyPos() < a.getyPos()){ - a.attack(2); //DOWN - if(v.getArrowTravel() == 0){ - v.arrow(a,2); - } - } - - } - if(p.getyPos() == a.getyPos()){ - if(p.getxPos() > a.getxPos()){ - a.attack(1); //RIGHT - if(v.getArrowTravel() == 0){ - v.arrow(a,1); - } - } - else if(p.getxPos() < a.getxPos()){ - a.attack(3); //LEFT - if(v.getArrowTravel() == 0){ - v.arrow(a,3); - } + for(int i = 0; i< e.length; i++){ + if(e[i] == null){} + else{ + e[i].rdmMove(); } } - else{ - a.rdmMove(); - } } - },0,0.5f); - - coords = new Timer(); - - coords.scheduleTask(new Timer.Task() { - @Override - public void run() { - System.out.println("Player:"); - System.out.println("X:" + p.getxPos()); - System.out.println("Y:" + p.getyPos()); - System.out.println("Archer:"); - System.out.println("X:" + a.getxPos()); - System.out.println("Y:" + a.getyPos()); - - } - },0,2f); + },0,0.1f); + } + + public void newEntity(Entity ent, int x, int y, int lvl){ + for(int i = 0; i < e.length ; i++){ + if(e[i] == null){ + switch(ent.getId()){ + case 0: + e[i] = new Archer(x,y,lvl); + v.newEntity(i,ent,x,y); + i = 10; + break; + case 1: + e[i] = new Swordsman(x,y,lvl); + v.newEntity(i,ent,x,y); + i = 10; + break; + } + + } + } } @Override public void render(){ - v.setPlayerX(p.getxPos()); - v.setPlayerY(p.getyPos()); - v.setArcherX(a.getxPos()); - v.setArcherY(a.getyPos()); - v.render(batch, p , a); + if(v != null){ + v.render(batch, p , e); + } } @Override @@ -117,26 +92,50 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public boolean keyDown(int keycode) { if(keycode == Input.Keys.LEFT){ - p.setMovementX(-3); - p.move(); + if(v != null){ + v.moveCursor(3); + } + if(m != null){ + p.setMovementX(-5); + } } if(keycode == Input.Keys.RIGHT){ - p.setMovementX(3); - p.move(); - } - - if(keycode == Input.Keys.UP){ - p.setMovementY(3); - p.move(); + if(v != null){ + v.moveCursor(1); + } + if(m != null){ + p.setMovementX(5); + } } if(keycode == Input.Keys.DOWN){ - p.setMovementY(-3); - p.move(); + if(v != null){ + v.moveCursor(2); + } + if(m != null){ + p.setMovementY(-5); + } } - if(keycode == Input.Keys.W){ - + + if(keycode == Input.Keys.UP){ + if(v != null){ + v.moveCursor(0); + } + if(m != null){ + p.setMovementY(5); + } + } + + if(keycode == Input.Keys.ENTER){ + if(v != null){ + if(v.click() == -1){} + else if(v.click() == 0){ + v = null; + m = new Map(); + System.out.println("NICE"); + } + } } return true; } @@ -144,28 +143,40 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public boolean keyUp(int keycode) { if(keycode == Input.Keys.LEFT){ + if(v != null){ + v.stopCursor(3); + } + if(m != null){ p.setMovementX(0); - p.move(); - v.tlinksstop(); + } } if(keycode == Input.Keys.RIGHT){ + if(v != null){ + v.stopCursor(1); + } + if(m != null){ p.setMovementX(0); - p.move(); - v.trechtsstop(); + } } if(keycode == Input.Keys.DOWN){ + if(v != null){ + v.stopCursor(2); + } + if(m != null){ p.setMovementY(0); - p.move(); - v.tuntenstop(); + } } if(keycode == Input.Keys.UP){ + if(v != null){ + v.stopCursor(0); + } + if(m != null){ p.setMovementY(0); - p.move(); - v.tobenstop(); - } + } + } return true; } @@ -175,9 +186,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } @Override - public boolean touchDown(int i, int i1, int i2, int i3) { - return false; - } + public boolean touchDown(int screenX, int screenY, int pointer, int button) + { + + return false; + } @Override public boolean touchUp(int i, int i1, int i2, int i3) { diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 86b4955..670781a 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -31,23 +31,73 @@ public class DungeonGenerator { } private Level generateLevel(){ - int roomAmount = (int) (Math.random() * 6) + 5; Level tempLevel = new Level(roomAmount); - for(int i = 0; i < roomAmount; i++){ - Room tempRoom = generateRoom(); - tempLevel.setRoom(tempRoom, i); - } + System.out.println(roomAmount); // TODO: Zufällig Türen setzen + 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); + + 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); + + switch (direction) { + // Oben + case 0: + if(yPos != 0){ + yPos -= 1; + } + break; + // Rechts + case 1: + if(xPos != roomAmount - 1){ + xPos += 1; + } + break; + // Unten + case 2: + if(yPos != roomAmount - 1){ + yPos += 1; + } + break; + // Links + case 3: + if(xPos != 0){ + xPos -= 1; + } + break; + default: + System.out.println("Die Random Methode ist kacke!!!!!!!!!!!!!!!!!!"); + break; + } + + // An der neuen Stelle vom Cursor gibt es noch keinen Raum + if(tempLevel.getRooms()[xPos][yPos] == null){ + tempLevel.setRoom(generateRoom(), xPos, yPos); + + // i darf nur erhöht werden, wenn auche in Raum generiert wurde + i++; + } + } return tempLevel; } private Room generateRoom(){ + int itemAmount = (int) (Math.random() * 2); + int enemyAmount = (int) (Math.random() * 6); - return null; + Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]); + + + return tempRoom; } private int[] generatePos(int sizeX, int sizeY, int tileSize){ @@ -61,16 +111,24 @@ public class DungeonGenerator { } public void ichWillSpielen(){ - Dungeon d = this.generateDungeon(200, 200, 200, new Player(200,200)); + Dungeon d = this.generateDungeon(200, 200, 200, new Player()); for(int i=0;i= 100){ - ArrowTravel = 0; - tArrowLeft.stop(); - } - } - }, 0,1/50f); - tArrowLeft.stop(); - tArrowRight.scheduleTask(new Timer.Task() { - @Override - public void run() { - Arrow.setX(Arrow.getX() + 3f); - ArrowTravel++; - if(ArrowTravel >= 100){ - ArrowTravel = 0; - tArrowRight.stop(); - } - } - }, 0,1/40f); - tArrowRight.stop(); - tArrowUp.scheduleTask(new Timer.Task() { - @Override - public void run() { - Arrow.setY(Arrow.getY() + 3f); - ArrowTravel++; - if(ArrowTravel >= 100){ - ArrowTravel = 0; - tArrowUp.stop(); - } - } - }, 0,1/50f); - tArrowUp.stop(); - tArrowDown.scheduleTask(new Timer.Task() { - @Override - public void run() { - Arrow.setY(Arrow.getY() - 3f); - ArrowTravel++; - if(ArrowTravel >= 100){ - ArrowTravel = 0; - tArrowDown.stop(); - } - } - }, 0,1/50f); - tArrowDown.stop(); - - } - - - public void render (SpriteBatch batch, Player p, Archer a) { - Gdx.gl.glClearColor(1, 1, 1, 1); - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - player.setX(player.getX()+ p.getMovementX()); - player.setY(player.getY()+ p.getMovementY()); - archer.setX(a.getxPos()); - archer.setY(a.getyPos()); - - if(p.getMovementX() == 3){ - trechts.start(); - if(player.isFlipX() == true){ - player.flip(false, false); - } - } - if(p.getMovementX() == -3){ - tlinks.start(); - if(player.isFlipX() == true){ - - } - else{ - player.flip(true, false); - } - } - if(p.getMovementY() == 3){ - toben.start(); - } - if(p.getMovementY() == -3){ - tunten.start(); - } - - batch.begin(); - title.draw(batch); - button.draw(batch); - player.draw(batch); - archer.draw(batch); - Errow.draw(batch); - if(ArrowTravel > 0 && ArrowTravel < 100){ - Arrow.draw(batch); - } - batch.end(); - } - - public void arrow(Archer a, int i){ - switch(i){ - case 0: //UP - Arrow.setX(a.getxPos()); - Arrow.setY(a.getyPos()); - tArrowUp.start(); - break; - case 1: //RIGHT - Arrow.setX(a.getxPos()); - Arrow.setY(a.getyPos()); - tArrowRight.start(); - break; - case 2: //DOWN - for(int n = 0; n < 50; n++){ - Arrow.setX(a.getxPos()); - Arrow.setY(a.getyPos()); - tArrowDown.start(); - } - break; - case 3: //LEFT - Arrow.setX(a.getxPos()); - Arrow.setY(a.getyPos()); - tArrowLeft.start(); - break; - } - - - } - - public void tuntenstop(){ - tunten.stop(); - PlayerFrame = 0; - player.setRegion(regions[PlayerZeile][PlayerFrame]);} - public void tobenstop(){ - toben.stop(); - PlayerFrame = 0; - player.setRegion(regions[PlayerZeile][PlayerFrame]);} - public void tlinksstop(){ - tlinks.stop(); - PlayerFrame = 0; - player.setRegion(regions[PlayerZeile][PlayerFrame]); - player.flip(true, false);} - public void trechtsstop(){ - trechts.stop(); - PlayerFrame = 0; - player.setRegion(regions[PlayerZeile][PlayerFrame]);} - - public int getArrowTravel(){ - return ArrowTravel; - } - - public float getPlayerX(){ - return player.getX(); - } - public float getPlayerY(){ - return player.getY(); - } - public float getArcherX(){ - return archer.getX(); - } - public float getArcherY(){ - return archer.getY(); - } - public void setPlayerX(float x){ - player.setX(x); - } - public void setPlayerY(float y){ - player.setY(y); - } - public void setArcherX(float x){ - archer.setX(x); - } - public void setArcherY(float y){ - archer.setY(y); - } - - - }