diff --git a/core/assets/sprites/RoomChange.png b/core/assets/sprites/RoomChange.png new file mode 100644 index 0000000..71cd668 Binary files /dev/null and b/core/assets/sprites/RoomChange.png differ diff --git a/core/assets/sprites/body.png b/core/assets/sprites/body.png index cee3b69..f870dd6 100644 Binary files a/core/assets/sprites/body.png and b/core/assets/sprites/body.png differ diff --git a/core/assets/sprites/hair.png b/core/assets/sprites/hair.png index 33eb1ea..c57c599 100644 Binary files a/core/assets/sprites/hair.png and b/core/assets/sprites/hair.png differ diff --git a/core/assets/sprites/head.png b/core/assets/sprites/head.png index 3eb90a2..94d279c 100644 Binary files a/core/assets/sprites/head.png and b/core/assets/sprites/head.png differ diff --git a/core/assets/sprites/legs.png b/core/assets/sprites/legs.png index 221a850..34244a3 100644 Binary files a/core/assets/sprites/legs.png and b/core/assets/sprites/legs.png differ diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index cacdcbe..3ac4def 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -163,7 +163,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ float x = d.getPlayer().getxPos(); d.getPlayer().updateX(); - m.getPlayer().getCollisionSprite().setX(d.getPlayer().getxPos()); + m.getPlayer().updateCollisionX((int) d.getPlayer().getxPos()); for(RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)){ Rectangle rectangle = rectangleObject.getRectangle(); @@ -178,8 +178,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ float y = d.getPlayer().getyPos(); d.getPlayer().updateY(); - m.getPlayer().getCollisionSprite().setX(d.getPlayer().getxPos()); - m.getPlayer().getCollisionSprite().setY(d.getPlayer().getyPos()); + m.getPlayer().updateCollision((int) d.getPlayer().getxPos(),(int) d.getPlayer().getyPos()); for(RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)){ Rectangle rectangle = rectangleObject.getRectangle(); @@ -216,6 +215,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomPosY += 1; d.getPlayer().setxPos((roomX / 2)* 48); d.getPlayer().setyPos(48); + m.startLoadingScreen(); } // rechts @@ -225,6 +225,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomPosX += 1; d.getPlayer().setxPos(48); d.getPlayer().setyPos((roomY / 2)*48); + m.startLoadingScreen(); } // unten @@ -234,6 +235,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomPosY -= 1; d.getPlayer().setxPos((roomX / 2)*48); d.getPlayer().setyPos(roomY*48 - 48); + m.startLoadingScreen(); } // links @@ -243,11 +245,17 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ roomPosX -= 1; d.getPlayer().setxPos((roomX*48) - 48); d.getPlayer().setyPos((roomY / 2)*48); + m.startLoadingScreen(); } if(roomPosX == d.getCurrentLevel().getExit()[0] && roomPosY == d.getCurrentLevel().getExit()[1]){ if(level < 6){ System.out.println("Nächstes Level, here we go"); + + d.getPlayer().setMovementY(0f); + d.getPlayer().setMovementX(0f); + m.startLoadingScreen(); + level++; tileX = roomX / 2; @@ -287,6 +295,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public boolean keyDown(int keycode) { + if(keycode == Input.Keys.A){ if(v != null){ } @@ -321,13 +330,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.E){ if(v != null){} - if(m != null){ + if(m != null && m.getIsLoading() == false){ d.setCurrentEntities(m.playerAttack(d.getCurrentEntities(), d.getPlayer(), batch)); } } if(keycode == Input.Keys.F){ if(v != null){} - if(m != null){ + if(m != null && m.getIsLoading() == false){ //Item k = new Sword(1); //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); @@ -342,7 +351,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.G){ if(v != null){} - if(m != null){ + if(m != null && m.getIsLoading() == false){ Item k = new Potion(1); //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); @@ -350,7 +359,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } if(keycode == Input.Keys.H){ if(v != null){} - if(m != null){ + if(m != null && m.getIsLoading() == false){ Item k = new Key(1); //m.addItem(k); //d.setCurrentItemContainer(m.playerPickUp(d.getCurrentItemContainer(), d.getPlayer())); @@ -466,19 +475,20 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ v.cleanUp(); v = null; m = new GameScreen(d, volume); - - + m.startLoadingScreen(); return true; + case 1: v.cleanUp(); v = null; m = new GameScreen(d, volume); + m.startLoadingScreen(); return true; } return true; } - if(m != null){ + if(m != null && m.getIsLoading() == false){ return true; diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 58988bb..b890e6f 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -48,6 +48,14 @@ public class GameScreen { Timer animations; + Timer roomChangeTimer; + int roomChangeAnimationState; + boolean roomLoading; + Texture roomChangeTexture; + Sprite roomChangeSprite; + TextureRegion[][] roomChangeTextureRegion; + int roomChangeRow; + // Sound public Music music; @@ -149,11 +157,37 @@ public class GameScreen { invXPos[7] = HudSprite.getX() + 112f; invYPos[7] = HudSprite.getY() + 10f; + + + roomChangeTimer = new Timer(); + roomLoading = false; + roomChangeTexture = new Texture("sprites/RoomChange.png"); + roomChangeSprite = new Sprite(roomChangeTexture); + roomChangeTextureRegion = roomChangeSprite.split(roomChangeTexture, 528, 432); + roomChangeRow = 0; + roomChangeSprite.setPosition(0f, 0f); + + roomChangeTimer.scheduleTask(new Timer.Task() { + @Override + public void run() { + if(roomChangeRow >= 9){ + roomLoading = false; + roomChangeRow = 0; + roomChangeTimer.stop(); + } + else{ + roomChangeRow++; + } + } + },0, 0.02f); + + } 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); @@ -232,6 +266,8 @@ public class GameScreen { //BATCH batch.begin(); HudSprite.draw(batch); + //DRAWING LOADING SCREEN IF LOADING + //DRAWING INVENTORY for(int i = 0; i < InventoryItemSprites.length ;i++){ @@ -321,7 +357,10 @@ public class GameScreen { } } */ - + roomChangeSprite.setRegion(roomChangeTextureRegion[0][roomChangeRow]); + if(roomLoading == true){ + roomChangeSprite.draw(batch); + } batch.end(); } @@ -488,6 +527,10 @@ public class GameScreen { music.dispose(); } + public void startLoadingScreen(){ + roomLoading = true; + roomChangeTimer.start(); + } //GETTER public PlayerSprite getPlayer(){ @@ -507,6 +550,9 @@ public class GameScreen { public void setEntitySpriteY(int i,float y){ entitySprites[i].setY(y); } + public boolean getIsLoading(){ + return roomLoading; + } /** * @return the m diff --git a/core/src/com/dungeoncrawler/view/MainMenu.java b/core/src/com/dungeoncrawler/view/MainMenu.java index 1d84a94..7a7df68 100644 --- a/core/src/com/dungeoncrawler/view/MainMenu.java +++ b/core/src/com/dungeoncrawler/view/MainMenu.java @@ -15,9 +15,7 @@ import com.badlogic.gdx.utils.Timer; public class MainMenu{ - Timer torch; - TextureRegion[][] torchRegions; - int torchSpalte; + //MENU-SCREEN Texture startButtonTexture; diff --git a/core/src/com/dungeoncrawler/view/PlayerSprite.java b/core/src/com/dungeoncrawler/view/PlayerSprite.java index 1173ec4..dd5686e 100644 --- a/core/src/com/dungeoncrawler/view/PlayerSprite.java +++ b/core/src/com/dungeoncrawler/view/PlayerSprite.java @@ -28,11 +28,11 @@ public class PlayerSprite { frames = new int[4]; for(int i = 0; i < regions.length; i++){ - regions[i] = TextureRegion.split(textures[i], 32, 64); + regions[i] = TextureRegion.split(textures[i], 48, 96); sprites[i] = new Sprite(textures[i]); } - collisionSprite = new Rectangle(0, 0, 32, 16); + collisionSprite = new Rectangle(0, 0, 48, 16); } public void update(int xPos, int yPos){ @@ -40,8 +40,19 @@ public class PlayerSprite { sprites[i].setPosition(xPos, yPos); } + updateCollision(xPos, yPos); + + } + + public void updateCollision(int xPos, int yPos){ collisionSprite.setPosition(xPos, yPos); } + public void updateCollisionX(int xPos){ + collisionSprite.setX(xPos); + } + public void updateCollisionY(int yPos){ + collisionSprite.setY(yPos); + } /** * @return the sprites