From a15acbcaa86a315ca74d0f61d5c0918b27479d04 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sat, 25 Apr 2020 21:34:12 +0200 Subject: [PATCH] =?UTF-8?q?Aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dungeoncrawler/control/Controller.java | 148 +++++++++--------- .../src/com/dungeoncrawler/model/Dungeon.java | 49 +++--- .../com/dungeoncrawler/view/GameScreen.java | 17 +- 3 files changed, 111 insertions(+), 103 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 3f68050..946621b 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -29,14 +29,21 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ Dungeon d; DungeonGenerator dg; MainMenu v; - Entity[] e; Timer tEntities; GameScreen m; - int[] tile; - int[] posRoom; - int level; + + int tileX; + int tileY; + + int roomPosX; + int roomPosY; + int roomX; int roomY; + + int level; + + int roomAmount; float volume; Entity[] arrows; @@ -65,26 +72,24 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ d = dg.generateDungeon(roomX - 1, roomY - 1, 48, new Player()); dg.ichWillSpielen(d); - tile = new int[2]; - posRoom = new int[2]; + tileX = roomX / 2; + tileY = roomY / 2; - int roomLengthX = d.getLevel()[0].getRooms().length; - int roomLengthY = d.getLevel()[0].getRooms()[0].length; - int roomAmount = d.getLevel()[0].getRooms().length; + 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++){ + for(int i = 0; i < roomAmount; i++){ + for(int j = 0; j < roomAmount; j++){ if(d.getLevel()[level].getRooms()[i][j] != null){ if(k == startRoom){ // Startraum wurde ausgewählt - posRoom[0] = i; - posRoom[1] = j; + roomPosX = i; + roomPosY = j; } @@ -94,7 +99,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } - e = new Entity[5]; + d.setCurrentLevel(d.getLevel()[level]); + d.setCurrentRoom(d.getCurrentLevel().getRooms()[roomPosX][roomPosY]); + d.setCurrentEntities(d.getCurrentRoom().getEnemies()); Gdx.input.setInputProcessor(this); @@ -103,9 +110,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ entityMovement.scheduleTask(new Timer.Task() { @Override public void run() { - for(int i = 0; i < e.length; i++){ - if(e[i] != null){ - e[i].randomMove(roomX, roomY); + for(int i = 0; i < d.getCurrentEntities().length; i++){ + if(d.getCurrentEntities()[i] != null){ + d.getCurrentEntities()[i].randomMove(roomX, roomY); } } } @@ -125,16 +132,21 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(m != null){ if(v == null){ - e = d.getLevel()[level].getRooms()[posRoom[0]][posRoom[1]].getEnemies(); // Position des Players, etc. werden aktualisiert - updateObjects(level, posRoom); + updateObjects(level, roomPosX, roomPosY); + + + // tile[] beinhaltet die x und y Nummer des tiles, in dem sich der Player befindet + tileX = (int) d.getPlayer().getxPos() / 48; + tileY = (int) d.getPlayer().getyPos() / 48; - // Raum, in dem sich der Player jetzt befindet, wird aktualisiert - updateRoom(); + if(tileX == 0 || tileX == roomX || tileY == 0 || tileY == roomY){ + updateRoom(); + } // Render methode zum rendern der einzelnen Sprites wird aufgerufen - m.render(batch, d.getPlayer(), e, arrows, tile, level, posRoom); + m.render(batch, d.getPlayer(), d.getCurrentEntities(), arrows, tileX, tileY, level, roomPosX, roomPosY); } } } @@ -145,11 +157,16 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ batch.dispose(); } - public void updateObjects(int level, int[] posRoom){ + public void updateObjects(int level, int roomPosX, int roomPosY){ - MapLayers layers = m.getM().getMaps()[level][posRoom[0]][posRoom[1]].getLayers(); + MapLayers layers = m.getM().getMaps()[level][roomPosX][roomPosY].getLayers(); MapObjects objects = layers.get(0).getObjects(); - System.out.println(objects.getCount()); + //System.out.println(objects.getCount()); + + updatePlayer(objects); + } + + public void updatePlayer(MapObjects objects){ float x = d.getPlayer().getxPos(); d.getPlayer().updateX(); @@ -185,86 +202,76 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } 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]; - + //System.out.println(roomX + " " + roomY); + //System.out.println("pos Player tiles: " + tileX + " " + tileY); + + // Temp variablen werden wieder auf ihre Plätze geschrieben + + // Entities + d.getCurrentRoom().setEnemies(d.getCurrentEntities()); + + // Room + d.getCurrentLevel().setRoom(d.getCurrentRoom(), roomPosX, roomPosY); + + // Level + d.setLevel(d.getCurrentLevel(), level); + // oben - if(xPos == (roomX / 2) && yPos == roomY){ + if(tileX == (roomX / 2) && tileY == roomY){ System.out.println("oben"); - posRoom[1] += 1; + roomPosY += 1; d.getPlayer().setxPos((roomX / 2)* 48); d.getPlayer().setyPos(48); } // rechts - if(xPos == roomX && yPos == (roomY / 2)){ + if(tileX == roomX && tileY == (roomY / 2)){ System.out.println("rechts"); - posRoom[0] += 1; + roomPosX += 1; d.getPlayer().setxPos(48); d.getPlayer().setyPos((roomY / 2)*48); } // unten - if(xPos == (roomX / 2) && yPos == 0){ + if(tileX == (roomX / 2) && tileY == 0){ System.out.println("unten"); - posRoom[1] -= 1; + roomPosY -= 1; d.getPlayer().setxPos((roomX / 2)*48); d.getPlayer().setyPos(roomY*48 - 48); } // links - if(xPos == 0 && yPos == (roomY / 2)){ + if(tileX == 0 && tileY == (roomY / 2)){ System.out.println("links"); - posRoom[0] -= 1; + roomPosX -= 1; d.getPlayer().setxPos((roomX*48) - 48); d.getPlayer().setyPos((roomY / 2)*48); } - if(posRoom[0] == d.getLevel()[level].getExit()[0] && posRoom[1] == d.getLevel()[level].getExit()[1]){ + if(roomPosX == d.getCurrentLevel().getExit()[0] && roomPosY == d.getCurrentLevel().getExit()[1]){ if(level < 6){ System.out.println("Nächstes Level, here we go"); level++; - tile[0] = roomX / 2; - tile[1] = roomY / 2; + tileX = roomX / 2; + tileY = roomY / 2; int roomAmount = d.getLevel()[level].getRooms().length; - posRoom[0] = roomAmount / 2; - posRoom[1] = roomAmount / 2; + roomPosX = roomAmount / 2; + roomPosY = roomAmount / 2; } } - } - public void newEntity(Entity ent, float x, float 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); - i = 11; - break; - case 1: - e[i] = new Swordsman(x,y,lvl); - i = 11; - break; - } - } - } + d.setCurrentLevel(d.getLevel()[level]); + d.setCurrentRoom(d.getCurrentLevel().getRooms()[roomPosX][roomPosY]); + d.setCurrentEntities(d.getCurrentRoom().getEnemies()); } - - + @Override public boolean keyDown(int keycode) { if(keycode == Input.Keys.A){ @@ -302,7 +309,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.E){ if(v != null){} if(m != null){ - d.getLevel()[level].getRooms()[posRoom[0]][posRoom[1]].setEnemies(m.playerAttack(e, d.getPlayer())); + d.setCurrentEntities(m.playerAttack(d.getCurrentEntities(), d.getPlayer())); } } @@ -423,11 +430,4 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ return false; } - public Entity[] getEntities(){ - return e; - } - - - - } diff --git a/core/src/com/dungeoncrawler/model/Dungeon.java b/core/src/com/dungeoncrawler/model/Dungeon.java index 8f24b91..9bf5893 100644 --- a/core/src/com/dungeoncrawler/model/Dungeon.java +++ b/core/src/com/dungeoncrawler/model/Dungeon.java @@ -14,14 +14,14 @@ import com.dungeoncrawler.model.entities.Player; public class Dungeon { private Level level[]; private Player player; - private int playerRoom; - private int playerLevel; + + private Level currentLevel; + private Room currentRoom; + private Entity[] currentEntities; public Dungeon(Player player){ this.level = new Level[7]; this.player = player; - this.playerRoom = 0; - this.playerLevel = 0; } public void update(){ @@ -61,34 +61,47 @@ public class Dungeon { public void setPlayer(Player player) { this.player = player; } - + /** - * @return the playerRoom + * @return the currentLevel */ - public int getPlayerRoom() { - return playerRoom; + public Level getCurrentLevel() { + return currentLevel; } /** - * @param playerRoom the playerRoom to set + * @param currentLevel the currentLevel to set */ - public void setPlayerRoom(int playerRoom) { - this.playerRoom = playerRoom; + public void setCurrentLevel(Level currentLevel) { + this.currentLevel = currentLevel; } /** - * @return the playerLevel + * @return the currentRoom */ - public int getPlayerLevel() { - return playerLevel; + public Room getCurrentRoom() { + return currentRoom; } /** - * @param playerLevel the playerLevel to set + * @param currentRoom the currentRoom to set */ - public void setPlayerLevel(int playerLevel) { - this.playerLevel = playerLevel; + public void setCurrentRoom(Room currentRoom) { + this.currentRoom = currentRoom; + } + + /** + * @return the currentEntities + */ + public Entity[] getCurrentEntities() { + return currentEntities; + } + + /** + * @param currentEntities the currentEntities to set + */ + public void setCurrentEntities(Entity[] currentEntities) { + this.currentEntities = currentEntities; } - } diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index c3fc86f..a0d76ab 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -12,11 +12,9 @@ import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapRenderer; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.math.Intersector; -import com.badlogic.gdx.math.Rectangle; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.entities.*; -import com.badlogic.gdx.utils.Timer; public class GameScreen { //CONTROLS @@ -52,10 +50,10 @@ public class GameScreen { public GameScreen(Dungeon d, float volume) { //CONTROLS - ctr = new Texture("controls.png"); - controls = new Sprite(ctr); - controls.setX(-400f); - controls.setY(0); + ctr = new Texture("controls.png"); + controls = new Sprite(ctr); + controls.setX(-400f); + controls.setY(0); //PLAYER @@ -98,7 +96,7 @@ public class GameScreen { } - public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int[] tile, int level, int[] posRoom) { + public void render (SpriteBatch batch, Player p, Entity[] e, Entity[] arrows, int tileX, int tileY, int level, int roomPosX, int roomPosY) { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); @@ -107,10 +105,7 @@ public class GameScreen { player.setX(p.getxPos()); player.setY(p.getyPos()); - int xPosRoom = posRoom[0]; - int yPosRoom = posRoom[1]; - - tm = getM().getMaps()[level][xPosRoom][yPosRoom]; + tm = getM().getMaps()[level][roomPosX][roomPosY]; if(tm == null){ System.out.println("Dein scheiß geht net");