package lab;

import javafx.animation.AnimationTimer;
import javafx.scene.canvas.Canvas;

public class GameController {

	private World world;
	private Canvas canvas;
	private AnimationTimer animationTimer;
	
	public GameController(Canvas canvas) {
		this.canvas = canvas;
	}
	
	public void startGame() {
		this.world = new World(canvas.getWidth(), canvas.getHeight());	
		//Draw scene on a separate thread to avoid blocking UI.
		animationTimer = new AnimationTimer() {
			private Long previous;
			
			@Override
			public void handle(long now) {
				if (previous == null) {
					previous = now;
				} else {
					drawScene((now - previous)/1e9);
					previous = now;
				}
			}
		};
		animationTimer.start();
	}


	public void stopGame() {
		animationTimer.stop();
	}
	
	private void drawScene(double deltaT) {
		world.draw(canvas);
		world.simulate(deltaT);
	}

	
}