package org.open2jam.game.speed;
import org.open2jam.game.speed.Speed;
/**
*
* @author Thai Pangsakulyanont
*/
public class SpeedMultiplier implements Speed {
private double speed = 1;
private double currentSpeed = 1;
private static final double MAX_SPEED = 10;
private static final double MIN_SPEED = 0.5;
private static final double SPEED_STEP = 0.5d;
private static final double SPEED_FACTOR = 0.005d;
public SpeedMultiplier(double speed) {
this.speed = currentSpeed = speed;
}
@Override
public double getSpeed() {
return speed;
}
@Override
public void setSpeed(double speed) {
this.speed = speed;
}
@Override
public double getCurrentSpeed() {
return currentSpeed;
}
@Override
public void update(double delta) {
if (currentSpeed < speed) {
currentSpeed += SPEED_FACTOR * delta;
if (currentSpeed > speed) currentSpeed = speed;
}
else if (currentSpeed > speed) {
currentSpeed -= SPEED_FACTOR * delta;
if (currentSpeed < speed) currentSpeed = speed;
}
}
@Override
public void increase() {
setSpeed(speed + SPEED_STEP > MAX_SPEED ? MAX_SPEED : speed + SPEED_STEP);
}
@Override
public void decrease() {
setSpeed(speed - SPEED_STEP < MIN_SPEED ? MIN_SPEED : speed - SPEED_STEP);
}
@Override
public String toString() {
return "x" + speed;
}
}