Skip to content
Snippets Groups Projects
Player.java 1.29 KiB
package lab;

import javafx.geometry.Point2D;
import javafx.geometry.Rectangle2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.transform.Affine;
import javafx.scene.transform.Rotate;

public class Player {
	private Level level;
	private Point2D position;
	private Point2D speed;

	public Player(Level level, Point2D position, Point2D speed) {
		this.level = level;
		this.position = position;
		this.speed = speed;
	}

	public void draw(GraphicsContext gc) {
		gc.save();
		Point2D center = position.add(10, 25);
		double angle = speed.angle(1, 0);
		if (speed.getY() < 0) {
			angle = -angle;
		}
		Rotate rotateMatrix = Affine.rotate(angle, center.getX(), center.getY());
		gc.setTransform(new Affine(rotateMatrix));
		gc.setFill(Color.AQUA);
		gc.setStroke(Color.GREEN);
		gc.setLineWidth(5);
		gc.fillRect(center.getX(), center.getY(), 50, 1);
		gc.fillRoundRect(position.getX(), position.getY(), 20, 50, 20, 20);
		gc.strokeRoundRect(position.getX(), position.getY(), 20, 50, 20, 20);
		gc.restore();
	}

	public void simulate(double delay) {
		position = position.add(speed.multiply(delay/1_000_000_000));
//		speed = speed.multiply(0.9994);
	}

	public Rectangle2D getBoundingBox() {
		return new Rectangle2D(position.getX(), position.getY(), 20, 50);
	}

}