package org.open2jam.game.position; import org.open2jam.game.position.NoteDistanceCalculator; import org.open2jam.game.speed.Speed; import org.open2jam.game.speed.Speed; import org.open2jam.render.entities.NoteEntity; /** * * @author Thai Pangsakulyanont */ public class WSpeed implements NoteDistanceCalculator { private final NoteDistanceCalculator base; private Speed speedObj; private double speed = 0.5; private double time = 0; private boolean positive = true; private static final double W_SPEED_FACTOR = 0.0005d; public WSpeed(NoteDistanceCalculator base, Speed speed) { this.base = base; this.speedObj = speed; } @Override public void update(double now, double delta) { base.update(now, delta); time += delta; if(time < 3000 * speedObj.getSpeed()) { speed += (positive ? 1 : -1) * W_SPEED_FACTOR * delta; if (speed > 10) speed = 10; if (speed < 0.5) speed = 0.5; } else { time = 0; positive = !positive; } } @Override public String toString() { return "W-SPEED"; } @Override public double calculate(double now, double target, double speed, NoteEntity noteEntity) { return base.calculate(now, target, 1, noteEntity) * this.speed; } }