Skip to content
Snippets Groups Projects
Dragon.java 1.38 KiB
Newer Older
koz01's avatar
koz01 committed
package lab;

import javafx.geometry.Point2D;
koz01's avatar
koz01 committed
import javafx.geometry.Rectangle2D;
koz01's avatar
koz01 committed
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;

public class Dragon {
	private static final int SIZE_OF_DRAGON = 50;

	private final World world; 
	
	private Point2D position;
	
koz01's avatar
koz01 committed
	private Point2D velocity;
koz01's avatar
koz01 committed
	
	private final Point2D dimension;
	
	private final Image image;

	public Dragon(World world, Point2D position, Point2D velocity) {
		this(world, position, velocity, new Point2D(SIZE_OF_DRAGON, SIZE_OF_DRAGON));
	}
	
	public Dragon(World world, Point2D position, Point2D velocity, Point2D dimension) {
		this.world = world;
		this.position = position;
		this.velocity = velocity;
		this.dimension = dimension;
		this.image = Constants.DRAGON_IMAGE;
	}
	
	public void draw(GraphicsContext gc) {
		Point2D p = world.getCanvasPoint(position);
		gc.drawImage(image, p.getX(), p.getY(), dimension.getX(), dimension.getY());
	}
	
	
	public void simulate(double deltaT) {
		position = position.add(velocity.multiply(deltaT));
koz01's avatar
koz01 committed
		position = new Point2D((position.getX() + world.getWidth()) % world.getWidth(), (position.getY() + world.getHeight()) % world.getHeight());
	}
	
	public Rectangle2D getboundingBox() {
		return new Rectangle2D(position.getX(), position.getY(), dimension.getX(), dimension.getY());
	}

	public void hit() {
		velocity = new Point2D(-velocity.getX(), -velocity.getY());
koz01's avatar
koz01 committed
	}
}