diff --git a/src/itdelatrisu/opsu/Options.java b/src/itdelatrisu/opsu/Options.java index 25effa61..5f5408fe 100644 --- a/src/itdelatrisu/opsu/Options.java +++ b/src/itdelatrisu/opsu/Options.java @@ -633,10 +633,10 @@ public class Options { } }, - DANCE_SPINNER_DELAY ("Spinner delay", "SpinnerDelay", "Fiddle with this if spinner goes too fast. Some spinners don't use delays.", Spinner.DELAY, 0, 20) { + DANCE_SPINNER_DELAY ("Spinner delay", "SpinnerDelay", "Fiddle with this if spinner goes too fast.", Spinner.DELAY, 0, 20) { @Override public String getValueString() { - return String.format("%d frames", val); + return String.format("%dms", val); } @Override diff --git a/src/itdelatrisu/opsu/states/Game.java b/src/itdelatrisu/opsu/states/Game.java index f120c8c5..38fa8569 100644 --- a/src/itdelatrisu/opsu/states/Game.java +++ b/src/itdelatrisu/opsu/states/Game.java @@ -637,6 +637,7 @@ public class Game extends BasicGameState { throws SlickException { UI.update(delta); Pippi.update(delta); + yugecin.opsudance.spinners.Spinner.update(delta); int mouseX = input.getMouseX(), mouseY = input.getMouseY(); skipButton.hoverUpdate(delta, mouseX, mouseY); if (isReplay || GameMod.AUTO.isActive()) diff --git a/src/yugecin/opsudance/spinners/BeamSpinner.java b/src/yugecin/opsudance/spinners/BeamSpinner.java index f44dd269..a26fadfd 100644 --- a/src/yugecin/opsudance/spinners/BeamSpinner.java +++ b/src/yugecin/opsudance/spinners/BeamSpinner.java @@ -36,6 +36,10 @@ public class BeamSpinner extends Spinner { @Override public double[] getPoint() { + if (!waitForDelay()) { + return point; + } + index = ++index % 4; final int MOD = 60; diff --git a/src/yugecin/opsudance/spinners/CircleSpinner.java b/src/yugecin/opsudance/spinners/CircleSpinner.java index f6b10557..33f9085c 100644 --- a/src/yugecin/opsudance/spinners/CircleSpinner.java +++ b/src/yugecin/opsudance/spinners/CircleSpinner.java @@ -34,7 +34,9 @@ public class CircleSpinner extends Spinner { @Override public double[] getPoint() { - ang += 15; + if (waitForDelay()) { + ang += 15; + } double rad = Options.width / 4.0f; diff --git a/src/yugecin/opsudance/spinners/CubeSpinner.java b/src/yugecin/opsudance/spinners/CubeSpinner.java index 9415be8e..b9a727f1 100644 --- a/src/yugecin/opsudance/spinners/CubeSpinner.java +++ b/src/yugecin/opsudance/spinners/CubeSpinner.java @@ -63,7 +63,7 @@ public class CubeSpinner extends Spinner { @Override public double[] getPoint() { - if( ++index >= 16 ) + if(waitForDelay() && ++index >= 16 ) { index = 0; azimuth += 2.0d; diff --git a/src/yugecin/opsudance/spinners/DonutSpinner.java b/src/yugecin/opsudance/spinners/DonutSpinner.java index 2d8f1759..149d28f4 100644 --- a/src/yugecin/opsudance/spinners/DonutSpinner.java +++ b/src/yugecin/opsudance/spinners/DonutSpinner.java @@ -34,7 +34,9 @@ public class DonutSpinner extends Spinner { @Override public double[] getPoint() { - ang += 15; + if (waitForDelay()) { + ang += 15; + } double rad = Options.width / 4.0f; diff --git a/src/yugecin/opsudance/spinners/HalfCircleSpinner.java b/src/yugecin/opsudance/spinners/HalfCircleSpinner.java index 7b55ee98..3dcdba4e 100644 --- a/src/yugecin/opsudance/spinners/HalfCircleSpinner.java +++ b/src/yugecin/opsudance/spinners/HalfCircleSpinner.java @@ -35,7 +35,9 @@ public class HalfCircleSpinner extends Spinner { @Override public double[] getPoint() { - ang += 15; + if (waitForDelay()) { + ang += 15; + } if( ang > skipang - 160 ) { diff --git a/src/yugecin/opsudance/spinners/LessThanThreeSpinner.java b/src/yugecin/opsudance/spinners/LessThanThreeSpinner.java index 9c19d88d..01bab098 100644 --- a/src/yugecin/opsudance/spinners/LessThanThreeSpinner.java +++ b/src/yugecin/opsudance/spinners/LessThanThreeSpinner.java @@ -32,7 +32,9 @@ public class LessThanThreeSpinner extends Spinner { @Override public double[] getPoint() { - angle += 18; + if (waitForDelay()) { + angle += 18; + } if( angle > 360 ) angle = 0; double theta = angle / 180d * Math.PI; double[] pos = new double[] { diff --git a/src/yugecin/opsudance/spinners/RektCircleSpinner.java b/src/yugecin/opsudance/spinners/RektCircleSpinner.java index 8ec7b527..2ce9e00f 100644 --- a/src/yugecin/opsudance/spinners/RektCircleSpinner.java +++ b/src/yugecin/opsudance/spinners/RektCircleSpinner.java @@ -38,8 +38,7 @@ public class RektCircleSpinner extends Spinner { @Override public double[] getPoint() { - if( ++delay < DELAY ) - { + if (!waitForDelay()) { return point; } delay = 0; diff --git a/src/yugecin/opsudance/spinners/Spinner.java b/src/yugecin/opsudance/spinners/Spinner.java index ace5aa3c..462e6ed0 100644 --- a/src/yugecin/opsudance/spinners/Spinner.java +++ b/src/yugecin/opsudance/spinners/Spinner.java @@ -22,7 +22,7 @@ public abstract class Spinner { private double[][] points; private int length; private int index; - private int delay; + private static int delay; public static int DELAY = 3; public abstract void init(); @@ -33,11 +33,22 @@ public abstract class Spinner { } public double[] getPoint() { - if (++delay > DELAY) { + if (waitForDelay()) { index = ++index % length; - delay = 0; } return points[index]; } + public boolean waitForDelay() { + if (delay >= DELAY) { + delay = 0; + return true; + } + return false; + } + + public static void update(int delta) { + delay += delta; + } + }