package lab; import javafx.geometry.Dimension2D; import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; public class Level { private double width; private double height; private DrawableSimulable[] entities; public Level(double width, double height) { this.width = width; this.height = height; entities = new DrawableSimulable[9]; entities[0] = new NicerObstacle(this, new Point2D(20, 150)); entities[1] = new Obstacle(this, new Point2D(300, 200), new Dimension2D(80, 40)); entities[2] = new Obstacle(this); entities[3] = new Player(this, new Point2D(20, 250), new Point2D(100, -20)); for (int i = 4; i < entities.length; i++) { entities[i] = new Monster(this); } } public void draw(GraphicsContext gc) { gc.setFill(Color.WHITE); gc.clearRect(0, 0, width, height); for (DrawableSimulable entity : entities) { entity.draw(gc); } } public void simulate(double delay) { for (DrawableSimulable entity : entities) { entity.simulate(delay); } for (int i = 0; i < entities.length; i++) { if (entities[i] instanceof Collisionable c1) { for (int j = i + 1; j < entities.length; j++) { if (entities[j] instanceof Collisionable c2) { if (c1.intersect(c2.getBoundingBox())) { c1.hitBy(c2); c2.hitBy(c1); } } } } } } public double getWidth() { return width; } public double getHeight() { return height; } }