diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 4dcc6f9..a8d6de5 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -59,11 +59,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ float volume; - Texture verticalAttack; - Texture horizontalAttack; - Sprite verticalAttackSprite; - Sprite horizontalAttackSprite; - Timer entityMovement; boolean isPaused; @@ -195,7 +190,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(gs.entitySprites[i].getAttackState() == 2 && d.getCurrentEntities()[i].getId() != 0){ gs.entitySprites[i].resetAttackState(); } - + if(gs.player.getAttackState() == 2){ + playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection()); + } if(overlaps){ d.getCurrentEntities()[i].setxPos(x); d.getCurrentEntities()[i].setyPos(y); @@ -334,6 +331,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ System.out.println("Es laedt, es laedt, ich will nicht, dass es laedt, wenn es laedt, muss man immer so lange warten!!!!!"); } } + d.getPlayer().updateDirection(); } public void updateRoom(){ @@ -442,6 +440,66 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ return garbageCollector; } + + public Entity[] playerAttack(Entity e[], Player p, int attackDirection){ + EntitySprite player = gs.getPlayer(); + EntitySprite[] entitySprites = gs.entitySprites; + + if(player.getAttackState() == 0){ + player.startAttack(); + } + else if(player.getAttackState() == 1){ + player.resetAttackState(); + player.startAttack(); + } + else if(player.getAttackState() == 2){ + + if(attackDirection== 0){ + Texture attackTexture = new Texture("sprites/AttackVert.png"); + Sprite attackSprite = new Sprite(attackTexture); + attackSprite.setX(p.getxPos() - 32f); + attackSprite.setY(p.getyPos() - 8f); + for(int i = 0; i < e.length ; i++){ + if(entitySprites[i] != null){ + if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ + if(e[i] != null){ + if(e[i].getHp() - p.getDmg() <= 0){ + e[i].setToDelete(true); + } + else{ + e[i].setHp(e[i].getHp() - p.getDmg()); + } + } + } + } + } + } + else if(attackDirection== 1){ + Texture attackTexture = new Texture("sprites/AttackVert.png"); + Sprite attackSprite = new Sprite(attackTexture); + attackSprite.setX(p.getxPos()+ 32f); + attackSprite.setY(p.getyPos()- 2f); + for(int i = 0; i< e.length ; i++){ + if(entitySprites[i] != null){ + if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ + if(e[i] != null){ + if(e[i].getHp() - p.getDmg() <= 0){ + e[i].setToDelete(true); + } + else{ + e[i].setHp(e[i].getHp() - p.getDmg()); + } + } + } + } + } + } + + player.resetAttackState(); + } + + return e; + } @Override public boolean keyDown(int keycode) { @@ -481,7 +539,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(keycode == Input.Keys.SPACE){ if(mm != null){} if(gs != null && gs.getIsLoading() == false){ - d.setCurrentEntities(gs.playerAttack(d.getCurrentEntities(), d.getPlayer(), 0)); + d.setCurrentEntities(playerAttack(d.getCurrentEntities(), d.getPlayer(), 0)); } } @@ -533,7 +591,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(mm != null){ } if(gs != null){ - d.getPlayer().setMovementX(0); + if(d.getPlayer().getMovementX() < 0){ + d.getPlayer().setMovementX(0); + } } } @@ -541,7 +601,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(mm != null){ } if(gs != null){ - d.getPlayer().setMovementX(0); + if(d.getPlayer().getMovementX() > 0){ + d.getPlayer().setMovementX(0); + } } } @@ -549,7 +611,10 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(mm != null){ } if(gs != null){ - d.getPlayer().setMovementY(0); + if(d.getPlayer().getMovementY() < 0){ + d.getPlayer().setMovementY(0); + } + } } @@ -557,7 +622,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(mm != null){ } if(gs != null){ - d.getPlayer().setMovementY(0); + if(d.getPlayer().getMovementY() > 0){ + d.getPlayer().setMovementY(0); + } } } diff --git a/core/src/com/dungeoncrawler/view/EntitySprite.java b/core/src/com/dungeoncrawler/view/EntitySprite.java index 4482d2c..ad176ab 100644 --- a/core/src/com/dungeoncrawler/view/EntitySprite.java +++ b/core/src/com/dungeoncrawler/view/EntitySprite.java @@ -51,30 +51,30 @@ public class EntitySprite { public void updateAnimation(Entity e){ if(e != null){ boolean moves = false; - if(e.getMovementX() != 0 || e.getMovementY() != 0){ - moves = true; - } - - direction = e.getDirection(); + if(e.getMovementX() != 0 || e.getMovementY() != 0){ + moves = true; + } + direction = e.getDirection(); - if(getDie() >= 1){ - updateDie(); - } - else if(attackState == 1){ - updateAttack(); - } - else if(moves){ - updateWalking(); - } - else{ - updateIdle(); - } + if(getDie() >= 1){ + updateDie(); + } + else if(attackState == 1){ + updateAttack(); + } + else if(moves){ + updateWalking(); + } + else{ + updateIdle(); + } } } public void updateDie(){ if(die == 2){ sprites[0].setRegion(regions[0][4][9]); + updateFlip(); } else if(frames[3] >= 9){ setDie(2); diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 98fd871..a02c955 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -22,21 +22,13 @@ public class GameScreen { //PLAYER - EntitySprite player; + public EntitySprite player; //ENTITIES - Texture[] entityTextures; public EntitySprite[] entitySprites; - TextureRegion[][] archerRegions; - Texture archerTexture; - TextureRegion[][] swordsmanRegions; - Texture swordsmanTexture; Entity[] entities; - Texture[] arrowTextures; - Sprite[] arrowSprites; - //MAP private Map m; TiledMapRenderer tmr; @@ -56,8 +48,6 @@ public class GameScreen { TextureRegion[][] roomChangeTextureRegion; int roomChangeRow; - boolean playerMoving; - Player p; HudContainer hc; @@ -71,13 +61,6 @@ 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); - */ - entities = d.getCurrentEntities(); @@ -93,11 +76,8 @@ public class GameScreen { player.update(200, 200); //ENTITIES - entityTextures = new Texture[5]; entitySprites = new EntitySprite[15]; - arrowTextures = new Texture[10]; - arrowSprites = new Sprite[10]; //MAP float w = Gdx.graphics.getWidth(); @@ -141,25 +121,14 @@ public class GameScreen { animatePlayer.scheduleTask(new Timer.Task() { @Override public void run() { - - if(player.getAttackState() == 1){ - player.updateAttack(); - } - else if(!playerMoving){ - player.updateIdle(); - } - else{ - player.updateWalking(); - } + player.updateAnimation(p); for(int i = 0; i < entitySprites.length; i++){ if(entitySprites[i] != null){ entitySprites[i].updateAnimation(entities[i]); } } - if(player.getAttackState() == 2){ - playerAttack(entities, p, player.getDirection()); - } + } }, 0, animationSpeed); @@ -189,7 +158,7 @@ public class GameScreen { roomChangeRow++; } } - },0, 0.01f); + },0, 0.02f); } @@ -201,7 +170,7 @@ public class GameScreen { this.p = p; - playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0); + //playerMoving = (p.getMovementX() != 0 || p.getMovementY() != 0); //setzt player Sprite auf richtige Position player.update((int) p.getxPos(), (int) p.getyPos()); @@ -226,9 +195,8 @@ public class GameScreen { } //MAP - tmr.setView(camera); - - tmr.render(); + tmr.setView(camera); + tmr.render(); camera.zoom = 700f; // Standart 700f @@ -318,62 +286,7 @@ public class GameScreen { entitySprites[i] = null; } - public Entity[] playerAttack(Entity e[], Player p, int attackDirection){ - if(player.getAttackState() == 0){ - player.startAttack(); - } - else if(player.getAttackState() == 1){ - player.resetAttackState(); - player.startAttack(); - } - else if(player.getAttackState() == 2){ - - if(attackDirection== 0){ - Texture attackTexture = new Texture("sprites/AttackVert.png"); - Sprite attackSprite = new Sprite(attackTexture); - attackSprite.setX(p.getxPos() - 32f); - attackSprite.setY(p.getyPos() - 8f); - for(int i = 0; i < e.length ; i++){ - if(entitySprites[i] != null){ - if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ - if(e[i] != null){ - if(e[i].getHp() - p.getDmg() <= 0){ - e[i].setToDelete(true); - } - else{ - e[i].setHp(e[i].getHp() - p.getDmg()); - } - } - } - } - } - } - else if(attackDirection== 1){ - Texture attackTexture = new Texture("sprites/AttackVert.png"); - Sprite attackSprite = new Sprite(attackTexture); - attackSprite.setX(p.getxPos()+ 32f); - attackSprite.setY(p.getyPos()- 2f); - for(int i = 0; i< e.length ; i++){ - if(entitySprites[i] != null){ - if(Intersector.overlaps(entitySprites[i].getCollisionSprite(), attackSprite.getBoundingRectangle())){ - if(e[i] != null){ - if(e[i].getHp() - p.getDmg() <= 0){ - e[i].setToDelete(true); - } - else{ - e[i].setHp(e[i].getHp() - p.getDmg()); - } - } - } - } - } - } - - player.resetAttackState(); - } - - return e; - } + public void cleanUp(){ music.dispose(); diff --git a/core/src/com/dungeoncrawler/view/Hud.java b/core/src/com/dungeoncrawler/view/Hud.java deleted file mode 100644 index 38e7dc1..0000000 --- a/core/src/com/dungeoncrawler/view/Hud.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.dungeoncrawler.view; - -import com.dungeoncrawler.model.entities.Player; -/** - * - * @author Jan - */ -public class Hud { - - public Hud(Player p){} - -}