Skip to content
Snippets Groups Projects
GameController.java 1.74 KiB
package lab;

import javafx.animation.AnimationTimer;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.canvas.Canvas;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;

public class GameController {

	private AnimationTimer timer;
	private Level level;

	@FXML
	private Slider angle;
	
    @FXML
    private Canvas canvas;

    @FXML
    private Slider speed;

    @FXML
    private Label playerName;

    @FXML
    void spawn(ActionEvent event) {
		level.getPlayer().spawn();

    }

    @FXML
    void initialize() {
        assert angle != null : "fx:id=\"angle\" was not injected: check your FXML file 'gameWindow.fxml'.";
        assert canvas != null : "fx:id=\"canvas\" was not injected: check your FXML file 'gameWindow.fxml'.";
        assert speed != null : "fx:id=\"speed\" was not injected: check your FXML file 'gameWindow.fxml'.";
		angle.valueProperty().addListener(new ChangeListener<Number>() {
			@Override
			public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
				level.getPlayer().setAngle(newValue.doubleValue());
			}
		});
		speed.valueProperty().addListener(new ChangeListener<Number>() {
			@Override
			public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
				level.getPlayer().setSpeed(newValue.doubleValue());
			}
		});

    }

    public void startGame(String name, int numberOfMonsters) {
    	playerName.setText(name);
    	level = new Level(canvas.getWidth(), canvas.getHeight(), numberOfMonsters);
		timer = new DrawingThread(canvas, level);
		timer.start();

    }
    
	public void stop() {
		timer.stop();
	}

}