Skip to content
Snippets Groups Projects
Verified Commit f93d74f5 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Java 17

DrawingThread.
parent 4bbef6da
No related merge requests found
Pipeline #41 failed with stages
in 0 seconds
...@@ -3,24 +3,24 @@ ...@@ -3,24 +3,24 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>vsb-cs-java1</groupId> <groupId>vsb-cs-java1</groupId>
<artifactId>lab06</artifactId> <artifactId>lab08</artifactId>
<version>0.0.1-SNAPHOST</version> <version>0.0.1-SNAPHOST</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.openjfx</groupId> <groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId> <artifactId>javafx-controls</artifactId>
<version>11</version> <version>17.0.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.openjfx</groupId> <groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId> <artifactId>javafx-fxml</artifactId>
<version>11</version> <version>17.0.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency> <dependency>
......
package lab;
import javafx.animation.AnimationTimer;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
public class DrawingThread extends AnimationTimer {
private final Canvas canvas;
private final GraphicsContext gc;
private final World world;
private long lasttime = -1;
public DrawingThread(Canvas canvas, World world) {
this.canvas = canvas;
this.gc = canvas.getGraphicsContext2D();
this.world = world;
}
/**
* Draws objects into the canvas. Put you code here.
*/
@Override
public void handle(long now) {
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
world.draw(gc);
if (lasttime > 0) {
//time are in nanoseconds and method simulate expects seconds
world.simulate((now - lasttime) / 1e9);
}
lasttime = now;
}
}
...@@ -60,7 +60,7 @@ public class GameController { ...@@ -60,7 +60,7 @@ public class GameController {
this.world = new World(canvas.getWidth(), canvas.getHeight()); this.world = new World(canvas.getWidth(), canvas.getHeight());
this.world.setGameListener(new GameListenerImpl()); this.world.setGameListener(new GameListenerImpl());
//Draw scene on a separate thread to avoid blocking UI. //Draw scene on a separate thread to avoid blocking UI.
animationTimer = new AnimationTimerImpl(); animationTimer = new DrawingThread(canvas, world);
angleSlider.valueProperty().addListener(this::angleChanged); angleSlider.valueProperty().addListener(this::angleChanged);
world.setCannonAngle(angleSlider.getValue()); world.setCannonAngle(angleSlider.getValue());
...@@ -74,10 +74,6 @@ public class GameController { ...@@ -74,10 +74,6 @@ public class GameController {
animationTimer.stop(); animationTimer.stop();
} }
private void drawScene(double deltaT) {
world.draw(canvas);
world.simulate(deltaT);
}
@FXML @FXML
private void firePressed() { private void firePressed() {
...@@ -139,20 +135,6 @@ public class GameController { ...@@ -139,20 +135,6 @@ public class GameController {
scoreList.setItems(FXCollections.observableList(highScores)); scoreList.setItems(FXCollections.observableList(highScores));
} }
private final class AnimationTimerImpl extends AnimationTimer {
private Long previous;
@Override
public void handle(long now) {
if (previous == null) {
previous = now;
} else {
drawScene((now - previous)/1e9);
previous = now;
}
}
}
private class GameListenerImpl implements GameListener { private class GameListenerImpl implements GameListener {
@Override @Override
......
...@@ -3,7 +3,6 @@ package lab; ...@@ -3,7 +3,6 @@ package lab;
import java.util.Random; import java.util.Random;
import javafx.geometry.Point2D; import javafx.geometry.Point2D;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
public class World { public class World {
...@@ -45,9 +44,8 @@ public class World { ...@@ -45,9 +44,8 @@ public class World {
return new Point2D(worldPoint.getX(), height - worldPoint.getY()); return new Point2D(worldPoint.getX(), height - worldPoint.getY());
} }
public void draw(Canvas canvas) { public void draw(GraphicsContext gc) {
GraphicsContext gc = canvas.getGraphicsContext2D(); gc.clearRect(0, 0, getWidth(), getHeight());
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
for(DrawableSimulable entity: entities) { for(DrawableSimulable entity: entities) {
entity.draw(gc); entity.draw(gc);
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment