diff --git a/src/main/java/lab/BulletAnimated.java b/src/main/java/lab/BulletAnimated.java index d23228736b2a041317f29330b446d46a0572257a..0120333824cb9650b60cdbbaf4bb798b460d61a9 100644 --- a/src/main/java/lab/BulletAnimated.java +++ b/src/main/java/lab/BulletAnimated.java @@ -113,4 +113,9 @@ public class BulletAnimated implements DrawableSimulable, Collisionable{ speed = initialSpeed; } + public void setHitListener(HitListener hitListener) { + this.hitListener = hitListener; + System.out.println(hitListener.getClass()); + } + } diff --git a/src/main/java/lab/HitListener.java b/src/main/java/lab/HitListener.java index 51cc8dd80725b18868a8000d5eba9764598395d2..5e58e3e2cdc1cc412a4baba3e915b1ecb4cf9ddd 100644 --- a/src/main/java/lab/HitListener.java +++ b/src/main/java/lab/HitListener.java @@ -1,5 +1,7 @@ package lab; +@FunctionalInterface public interface HitListener { void hit(); + } diff --git a/src/main/java/lab/World.java b/src/main/java/lab/World.java index f73df601576a2b5379934322d951e64136862f5e..18896e1b0863c4797c55aaa0756056487875ae5c 100644 --- a/src/main/java/lab/World.java +++ b/src/main/java/lab/World.java @@ -27,7 +27,9 @@ public class World { Cannon cannon = new Cannon(this, new Point2D(50, 50), new Point2D(100, 20)); entities = new DrawableSimulable[2 + NUMBER_OF_DRAGONS]; entities[0] = cannon; - entities[1] = new BulletAnimated(this, cannon, new Point2D(30, 60), new Point2D(0, 0), 40); + BulletAnimated bulletAnimated; + entities[1] = bulletAnimated = new BulletAnimated(this, cannon, new Point2D(30, 60), new Point2D(0, 0), 40); + bulletAnimated.setHitListener(this::hit); Random rnd = new Random(); for (int i = 2; i < entities.length; i++) { @@ -118,5 +120,11 @@ public class World { public void setGameListener(GameListener gameListener) { this.gameListener = gameListener; } + + + private void hit() { + hits++; + gameListener.stateChanged(shoots, hits); + } }