diff --git a/core/assets/Player.png b/core/assets/Player.png index 74b08ff..543bef7 100644 Binary files a/core/assets/Player.png and b/core/assets/Player.png differ diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index a3075bd..c460d5d 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -10,6 +10,11 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.maps.MapLayers; +import com.badlogic.gdx.maps.MapObjects; +import com.badlogic.gdx.maps.objects.RectangleMapObject; +import com.badlogic.gdx.math.Intersector; +import com.badlogic.gdx.math.Rectangle; import com.dungeoncrawler.view.*; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.DungeonGenerator; @@ -90,6 +95,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public void render(){ + //PASSIERT IN MAINMENU if(v != null){ v.render(batch, d.getPlayer() , e); @@ -97,17 +103,15 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ //PASSIERT IN GAMESCREEN if(m != null){ - //ENTITIES - //d.getPlayer().setxPos(m.getPlayerSpriteX()); - //d.getPlayer().setyPos(m.getPlayerSpriteY()); - + if(v == null){ // Position des Players, etc. werden aktualisiert - updateObjects(); + updateObjects(level, posRoom); // 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, arrows, tile, level, posRoom); } @@ -120,8 +124,34 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ batch.dispose(); } - public void updateObjects(){ + public void updateObjects(int level, int[] posRoom){ + + MapLayers layers = m.getM().getMaps()[level][posRoom[0]][posRoom[1]].getLayers(); + MapObjects objects = layers.get(0).getObjects(); + System.out.println(objects.getCount()); + + float x = d.getPlayer().getxPos(); + float y = d.getPlayer().getyPos(); + d.getPlayer().update(); + + m.setPlayerSpriteX(d.getPlayer().getxPos()); + m.setPlayerSpriteY(d.getPlayer().getyPos()); + + System.out.println("Temp: " + x + " " + y); + System.out.println("Player: " + d.getPlayer().getxPos() + " " + d.getPlayer().getyPos()); + + for(RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)){ + Rectangle rectangle = rectangleObject.getRectangle(); + + if(Intersector.overlaps(rectangle, m.getPlayer().getBoundingRectangle())){ + + d.getPlayer().setxPos(x); + d.getPlayer().setyPos(y); + + System.out.println("Es lädt, es laedt, ich will nicht, dass es laedt, wenn es laedt, muss man immer so lange warten!!!!!"); + } + } } public void updateRoom(){ diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 36f90cb..55036b8 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -41,6 +41,10 @@ public abstract class Entity { xPos += movementX; yPos += movementY; } + public void downgrade(){ + xPos -= movementX; + yPos -= movementY; + } public void die(){ } diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index c355e42..6292850 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -14,7 +14,7 @@ import com.dungeoncrawler.model.Entity; public class Player extends Entity { public Player() { - super(0, 0, 1); + super(200, 200, 1); this.maxhp = 5*lvl; this.hp = this.maxhp; diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index a8c50c2..a7d6ff4 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -33,7 +33,7 @@ public class GameScreen { Sprite[] arrowSprites; //MAP - Map m; + private Map m; TiledMapRenderer tmr; TiledMap tm; OrthographicCamera camera; @@ -41,6 +41,7 @@ public class GameScreen { public GameScreen(Dungeon d) { //PLAYER + p = new Texture("player.png"); regions = TextureRegion.split(p, 48, 48); player = new Sprite(regions[0][2]); @@ -84,7 +85,7 @@ public class GameScreen { int xPosRoom = posRoom[0]; int yPosRoom = posRoom[1]; - tm = m.getMaps()[level][xPosRoom][yPosRoom]; + tm = getM().getMaps()[level][xPosRoom][yPosRoom]; if(tm == null){ System.out.println("Dein scheiß geht net"); @@ -208,6 +209,9 @@ public class GameScreen { public float getPlayerSpriteY(){ return player.getY(); } + public Sprite getPlayer(){ + return player; + } public float getEntitySpriteX(int i){ return entitySprites[i].getX(); @@ -230,5 +234,12 @@ public class GameScreen { public void setEntitySpriteY(int i,float y){ entitySprites[i].setY(y); } + + /** + * @return the m + */ + public Map getM() { + return m; + } } diff --git a/core/src/com/dungeoncrawler/view/MapGenerator.java b/core/src/com/dungeoncrawler/view/MapGenerator.java index a208c36..48703d0 100644 --- a/core/src/com/dungeoncrawler/view/MapGenerator.java +++ b/core/src/com/dungeoncrawler/view/MapGenerator.java @@ -7,7 +7,9 @@ package com.dungeoncrawler.view; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.maps.MapLayer; import com.badlogic.gdx.maps.MapLayers; +import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapTileLayer; import com.badlogic.gdx.maps.tiled.tiles.StaticTiledMapTile; @@ -113,7 +115,8 @@ public class MapGenerator { // 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); + + MapLayer collisionLayer = new MapLayer(); TiledMapTileLayer dynamicLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); TiledMapTileLayer staticLayer = new TiledMapTileLayer(mapDimensionX, mapDimensionY, 48, 48); @@ -135,6 +138,20 @@ public class MapGenerator { } } + RectangleMapObject bottom = new RectangleMapObject(0, 0, mapDimensionX*48, 48); + collisionLayer.getObjects().add(bottom); + + RectangleMapObject left = new RectangleMapObject(0, 0, 48, mapDimensionY*48); + collisionLayer.getObjects().add(left); + + RectangleMapObject top = new RectangleMapObject(0, mapDimensionY*48 - 48, mapDimensionX*48, 48); + collisionLayer.getObjects().add(top); + + RectangleMapObject right = new RectangleMapObject(mapDimensionX*48 - 48, 0, 48, mapDimensionY*48); + collisionLayer.getObjects().add(right); + + collisionLayer.setVisible(false); + layers.add(collisionLayer); layers.add(dynamicLayer); layers.add(staticLayer);