import java.util.AbstractMap;
import java.util.Map;
public class Velocity {
private Map.Entry<Double, Double> acceleration;
private Map.Entry<Double, Double> move;
private Position position;
private Onground onground;
private Map.Entry<Double, Double> velocity;
public void updateAcceleration(Map.Entry<Double, Double> acceleration) {
this.acceleration = acceleration;
if (onJump())
velocity = new AbstractMap.SimpleEntry<>((this.velocity.getKey() + (0.01 * acceleration.getKey())), 0.0);
else
velocity = new AbstractMap.SimpleEntry<>((this.velocity.getKey() + (0.01 * acceleration.getKey())),
(this.velocity.getValue() + (0.01 * acceleration.getValue())));
position.updateVelocity(velocity);
}
public void updateMove(Map.Entry<Double, Double> move) {
this.move = move;
if (onMove())
velocity = move;
position.updateVelocity(velocity);
}
public Velocity(Position position, Onground onground) {
this.onground = onground;
}
public Map.Entry<Double, Double> getVelocity() {
return velocity;
}
// AND, In Air
private boolean onJump() {
if (!this.onground.getOnground())
return false;
return (this.velocity.getValue() < 0.0);
}
// AND, Push Button
private boolean onMove() {
if (!this.onground.getOnground())
return false;
return (move.getValue() >= 0.0);
}
}