diff --git a/src/main/java/lab/GameController.java b/src/main/java/lab/GameController.java index a13d5192cb718e83d99735c0b14d569253de3d18..893113431014ecb3f6747444d902293f9f15c9d2 100644 --- a/src/main/java/lab/GameController.java +++ b/src/main/java/lab/GameController.java @@ -32,6 +32,7 @@ public class GameController { } public void startGame() { + this.world = new World(canvas.getWidth(), canvas.getHeight()); //Draw scene on a separate thread to avoid blocking UI. animationTimer = new DrawingThread(canvas, world); @@ -40,6 +41,14 @@ public class GameController { strengthSlider.valueProperty().addListener(this::strenghtChanged); world.setCannonStrength(strengthSlider.getValue()); + world.setGameListener(new EmptyGameListener() { + @Override + public void stateChanged(int shoots, int hits) { + GameController.this.setShoots(shoots); + GameController.this.setHits(hits); + + } + }); animationTimer.start(); } @@ -63,4 +72,18 @@ public class GameController { , Number oldValue, Number newValue) { world.setCannonStrength(newValue.doubleValue()); } + + + + + + private void setHits(int hits) { + this.hits.setText(""+hits); + } + + private void setShoots(int shoots) { + this.shoots.setText(""+shoots); + } + + } diff --git a/src/main/java/lab/HitListener.java b/src/main/java/lab/HitListener.java index 51cc8dd80725b18868a8000d5eba9764598395d2..d1b4b89bcee4cff29fd70d145dc44cf1d7ee5b85 100644 --- a/src/main/java/lab/HitListener.java +++ b/src/main/java/lab/HitListener.java @@ -1,5 +1,6 @@ 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 817ed95fa86f528fa9878800f2a6126d816533ac..d357add7bc9438229ecb3f4e966735cac78e67f1 100644 --- a/src/main/java/lab/World.java +++ b/src/main/java/lab/World.java @@ -21,13 +21,24 @@ public class World { private DrawableSimulable []entities; public World(double width, double height) { - super(); + this.width = width; this.height = height; Cannon cannon = new Cannon(this, new Point2D(50, 50), new Point2D(100, 20)); + BulletAnimated bullet; 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); + entities[1] = bullet = new BulletAnimated(this, cannon, new Point2D(30, 60), new Point2D(0, 0), 40); + bullet.setHitListener(this::hits); + + /*new HitListener() { + @Override + public void hit() { + hits++; + gameListener.stateChanged(shoots, hits); + } + + });*/ Random rnd = new Random(); for (int i = 2; i < entities.length; i++) { @@ -39,6 +50,11 @@ public class World { } } + private void hits() { + hits++; + gameListener.stateChanged(shoots, hits); + } + public Point2D getCanvasPoint(Point2D worldPoint) { return new Point2D(worldPoint.getX(), height - worldPoint.getY()); }