You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.7 KiB

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import com.badlogic.gdx.math.Vector2;
import com.throwgame.main.ThrowMath;
/**
*
* @author Jan
*/
public class Level {
private final double G = 0.05;
private final int RADIUS = 100;
private Goal goal;
private Projectile projectile;
private ThrowMath math;
private double angle;
private int xPosPivot;
private int yPosPivot;
private double angleSpeed;
private boolean isReleased;
public Level(Goal goal, Projectile projectile, int xPosPivot, int yPosPivot){
this.goal = goal;
this.projectile = projectile;
this.projectile.setxPos(xPosPivot + RADIUS);
this.projectile.setyPos(yPosPivot);
this.math = new ThrowMath();
this.isReleased = false;
this.xPosPivot = xPosPivot;
this.yPosPivot = yPosPivot;
this.angle = 0;
this.angleSpeed = 0;
}
public void projectileReleased(){
this.isReleased = true;
double v0 = angleSpeed * RADIUS;
double tempAngle = angle - Math.PI / 2;
double vX = v0 * Math.sin(tempAngle);
this.math.initThrow(Math.PI / 2 + angle, G, v0, projectile.getyPos(), projectile.getxPos(), vX);
//projectile.setvX(v0 * Math.sin(tempAngle));
//projectile.setvY(v0 * Math.cos(tempAngle));
}
public void step(){
if(this.isReleased){
stepAir();
}
else{
stepPivot();
}
}
private void stepPivot(){
angleSpeed += 0.0001;
angle -= angleSpeed;
System.out.println(Math.toDegrees(angle));
Vector2 newPosVector = math.pivotGetNewPos(this.angle, this.xPosPivot, this.yPosPivot, RADIUS);
this.projectile.setxPos(xPosPivot + (int) newPosVector.x);
this.projectile.setyPos(yPosPivot + (int) newPosVector.y);
}
private void stepAir(){
Vector2 newPos = math.calculateY(projectile.getxPos());
projectile.setxPos(newPos.x);
projectile.setyPos(newPos.y);
/*Vector2 lol = math.test(projectile, G);
projectile.setxPos((int) lol.x);
projectile.setyPos((int) lol.y);
System.out.println(projectile.getxPos() + " " + projectile.getyPos());
*/
}
public Goal getGoal() {
return goal;
}
public Projectile getProjectile() {
return projectile;
}
public int getPivotX(){
return xPosPivot;
}
public int getPivotY(){
return yPosPivot;
}
public boolean released(){
return isReleased;
}
}