diff --git a/Zoelda/src/main/entities/Player.java b/Zoelda/src/main/entities/Player.java index 261bd72..2547d18 100644 --- a/Zoelda/src/main/entities/Player.java +++ b/Zoelda/src/main/entities/Player.java @@ -3,6 +3,7 @@ package main.entities; import java.util.ArrayList; import ea.Taste; +import ea.Vektor; import main.Main; import main.SheetLoader; @@ -75,24 +76,30 @@ public class Player extends LivingEntity { if (Main.instance.tasteGedrueckt(Taste.F)) { zustandSetzen("die"); } - - if (actionFigur.aktuellesVerhalten().equals("swipe") && actionFigur.aktuelleFigur().aktuellesBild() == 1) { - ArrayList entities = Main.instance.getWorld().getCurrentMap().getEntities(); - for (Entity e : entities) { - if (e instanceof LivingEntity) { - ((LivingEntity) e).takeDamage(0.1f); - } - } - } } - // auf Kollisionen prüfen - checkTileCollisions(Main.instance.getWorld().getCurrentMap()); // LivingEntity auch updaten lassen super.update(); } else { velX = 0; velY = 0; } + + // auf Kollisionen prüfen + checkTileCollisions(Main.instance.getWorld().getCurrentMap()); + + if (actionFigur.aktuellesVerhalten().equals("swipe") && actionFigur.aktuelleFigur().aktuellesBild() == 1) { + ArrayList entities = Main.instance.getWorld().getCurrentMap().getEntities(); + for (Entity e : entities) { + if (e instanceof LivingEntity && e != this) { + LivingEntity le = (LivingEntity) e; + Vektor toE = vectorToEntity(le); + toE = toE.normiert(); + le.velX += toE.x * 0.05f; + le.velY += toE.y * 0.05f; + le.takeDamage(0.1f); + } + } + } } } diff --git a/Zoelda/src/main/entities/Snake.java b/Zoelda/src/main/entities/Snake.java index 24f612e..3dcdef4 100644 --- a/Zoelda/src/main/entities/Snake.java +++ b/Zoelda/src/main/entities/Snake.java @@ -5,12 +5,11 @@ import java.util.ArrayList; import ea.Vektor; import main.Main; import main.SheetLoader; -import main.Tile; public class Snake extends LivingEntity { private static SheetLoader loader = new SheetLoader("/res/images/snake_spritesheet_calciumtrice.png", 32, 32, - new int[] { 10, 10, 10, 10, 10, 8}); + new int[] { 10, 10, 10, 10, 10, 8 }); public Snake() { super(loader.getFigur(0), "idle"); @@ -41,7 +40,7 @@ public class Snake extends LivingEntity { } } } - if (nearestPlayer != null && lineOfSightClear(nearestPlayer)) { + if (nearestPlayer != null && lineOfSightClear(nearestPlayer) && !actionFigur.aktuellesVerhalten().equals("damage")) { if (dist(nearestPlayer) < 1f) { zustandSetzen("attack"); } else { @@ -64,7 +63,16 @@ public class Snake extends LivingEntity { zustandSetzen("idle"); } } + if (actionFigur.aktuellesVerhalten().equals("damage") && actionFigur.aktuelleFigur().aktuellesBild() < actionFigur.aktuelleFigur().animation().length - 1){ + zustandSetzen("walk"); + } this.checkTileCollisions(Main.instance.getWorld().getCurrentMap()); super.update(); } + + @Override + public void takeDamage(float damage) { + zustandSetzen("damage"); + super.takeDamage(damage); + } }