diff --git a/Zoelda/lib/Dokumentation.zip b/Zoelda/lib/Dokumentation.zip new file mode 100644 index 0000000..bc870ca Binary files /dev/null and b/Zoelda/lib/Dokumentation.zip differ diff --git a/Zoelda/src/main/entities/Coin.java b/Zoelda/src/main/entities/Coin.java index a66d229..6a0278c 100644 --- a/Zoelda/src/main/entities/Coin.java +++ b/Zoelda/src/main/entities/Coin.java @@ -17,7 +17,7 @@ public class Coin extends AnimatedEntity { actionFigur.neuerZustand(loader.getFigur(0), "gold"); actionFigur.neuerZustand(loader.getFigur(1), "silver"); actionFigur.neuerZustand(loader.getFigur(2), "bronze"); - zustandSetzen("gold"); + zustandSetzen("bronze"); posX = 4f; posY = 4f; diff --git a/Zoelda/src/main/entities/Entity.java b/Zoelda/src/main/entities/Entity.java index d3b0fa3..82fbb11 100644 --- a/Zoelda/src/main/entities/Entity.java +++ b/Zoelda/src/main/entities/Entity.java @@ -232,6 +232,14 @@ public abstract class Entity implements Ticker { posX = x; posY = y; } + + public float getPosX() { + return posX; + } + + public float getPosY() { + return posY; + } public void deleteEntity() { deleteEntity = true; diff --git a/Zoelda/src/main/entities/LivingEntity.java b/Zoelda/src/main/entities/LivingEntity.java index 101a38d..8bd5d59 100644 --- a/Zoelda/src/main/entities/LivingEntity.java +++ b/Zoelda/src/main/entities/LivingEntity.java @@ -21,8 +21,9 @@ public abstract class LivingEntity extends AnimatedEntity { actionFigur.zustandSetzen(getDeathAnimationName()); velX = 0; velY = 0; - if (actionFigur.aktuelleFigur().aktuellesBild() == actionFigur.aktuelleFigur().animation().length - 1) { + if (actionFigur.aktuelleFigur().aktuellesBild() == actionFigur.aktuelleFigur().animation().length - 1 && !isReadyToDelete()) { deleteEntity(); + onDeath(); } } super.update(); @@ -40,4 +41,7 @@ public abstract class LivingEntity extends AnimatedEntity { public abstract String getDeathAnimationName(); public abstract String getDamageAnimationName(); + + protected void onDeath() { + } } diff --git a/Zoelda/src/main/entities/Snake.java b/Zoelda/src/main/entities/Snake.java index 25ad686..c0fa734 100644 --- a/Zoelda/src/main/entities/Snake.java +++ b/Zoelda/src/main/entities/Snake.java @@ -80,4 +80,16 @@ public class Snake extends LivingEntity { public String getDamageAnimationName() { return "damage"; } + + @Override + protected void onDeath() { + int count = (int) (Math.random() * 3); + for (int i = 0; i < count; i++) { + Coin c = new Coin(); + float x = posX + (float) Math.random() * width - width / 2; + float y = posY + (float) Math.random() * height - height / 2; + c.setPos(x, y); + Main.instance.getWorld().getCurrentMap().addAnimatedEntity(c); + } + } } diff --git a/Zoelda/src/main/maps/Map.java b/Zoelda/src/main/maps/Map.java index 6c0c7e3..785ecc0 100644 --- a/Zoelda/src/main/maps/Map.java +++ b/Zoelda/src/main/maps/Map.java @@ -18,6 +18,7 @@ public abstract class Map extends Knoten implements Ticker { protected Tile[][] tiles; // Die Tiles der map in einem 2D Array. private ArrayList entities; + private boolean started; public DoorTile topDoor; public DoorTile leftDoor; @@ -72,6 +73,9 @@ public abstract class Map extends Knoten implements Ticker { public void addAnimatedEntity(AnimatedEntity e) { entities.add(e); add(e.actionFigur); + if (started) { + Main.instance.manager.anmelden(e, 20); + } } public abstract Map clone(); @@ -122,6 +126,7 @@ public abstract class Map extends Knoten implements Ticker { Main.instance.manager.anmelden(e, 20); } } + started = true; } public void stop() { @@ -142,6 +147,7 @@ public abstract class Map extends Knoten implements Ticker { Main.instance.manager.abmelden(e); } } + started = false; } public void connectDoors(DoorTile door, DoorTile door2) { diff --git a/Zoelda/src/main/worlds/TestWorld.java b/Zoelda/src/main/worlds/TestWorld.java index 69c117a..da2a681 100644 --- a/Zoelda/src/main/worlds/TestWorld.java +++ b/Zoelda/src/main/worlds/TestWorld.java @@ -12,16 +12,16 @@ public class TestWorld extends World { Map m2 = maps[3].clone(); getCurrentMap().connectDoors(getCurrentMap().leftDoor, m2.leftDoor); - for (int i = 0; i < 5; i++) { - Snake s = new Snake(); - s.setPosX((float) (Math.random() * 5 + 2)); - getCurrentMap().addAnimatedEntity(s); - } - for (int i = 0; i < 15; i++) { Coin c = new Coin(); c.setPosX(i * 0.5f + 4); getCurrentMap().addAnimatedEntity(c); } + + for (int i = 0; i < 5; i++) { + Snake s = new Snake(); + s.setPosX((float) (Math.random() * 5 + 2)); + getCurrentMap().addAnimatedEntity(s); + } } }