-
Jan Kožusznik authoredVerified97e94c4a
Forked from
vyuka-koz01 / Java 1 / labs / lab06
4 commits ahead of the upstream repository.
GameController.java 1.49 KiB
package lab;
import javafx.animation.AnimationTimer;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.geometry.Point2D;
import javafx.scene.canvas.Canvas;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
public class GameController {
private World world;
@FXML
private Slider angleSlider;
@FXML
private Slider strengthSlider;
@FXML
private Canvas canvas;
@FXML
private Label shoots;
@FXML
private Label hits;
private AnimationTimer animationTimer;
public GameController() {
}
public void startGame(Point2D[][] dragonInit) {
this.world = new World(canvas.getWidth(), canvas.getHeight(), dragonInit);
//Draw scene on a separate thread to avoid blocking UI.
animationTimer = new DrawingThread(canvas, world);
angleSlider.valueProperty().addListener(this::angleChanged);
world.setCannonAngle(angleSlider.getValue());
strengthSlider.valueProperty().addListener(this::strenghtChanged);
world.setCannonStrength(strengthSlider.getValue());
animationTimer.start();
}
public void stopGame() {
animationTimer.stop();
}
@FXML
private void firePressed() {
world.fire();
}
private void angleChanged(ObservableValue<? extends Number> observable
, Number oldValue, Number newValue) {
world.setCannonAngle(newValue.doubleValue());
}
private void strenghtChanged(ObservableValue<? extends Number> observable
, Number oldValue, Number newValue) {
world.setCannonStrength(newValue.doubleValue());
}
}