Revert "Revert "Further implementation of "weighted" spinner""
This reverts commit 582af96e12
.
This commit is contained in:
parent
582af96e12
commit
6c7aac53f4
|
@ -38,8 +38,8 @@ import org.newdawn.slick.Image;
|
||||||
*/
|
*/
|
||||||
public class Spinner implements HitObject {
|
public class Spinner implements HitObject {
|
||||||
|
|
||||||
/** The rate at which the spinner slows down in radians/second^2. */
|
/** The rate at which the spinner slows down in rotations/second^2. */
|
||||||
private static final float angularDrag = 500f;
|
private static final float angularDrag = 20f;
|
||||||
|
|
||||||
/** Container dimensions. */
|
/** Container dimensions. */
|
||||||
private static int width, height;
|
private static int width, height;
|
||||||
|
@ -59,7 +59,7 @@ public class Spinner implements HitObject {
|
||||||
/** The total number of rotations needed to clear the spinner. */
|
/** The total number of rotations needed to clear the spinner. */
|
||||||
private float rotationsNeeded;
|
private float rotationsNeeded;
|
||||||
|
|
||||||
/** The current angular velocity of the spinner in radians/second. */
|
/** The current angular velocity of the spinner in rotations/second. */
|
||||||
private float angularVelocity;
|
private float angularVelocity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,6 +126,10 @@ public class Spinner implements HitObject {
|
||||||
if (extraRotations > 0)
|
if (extraRotations > 0)
|
||||||
data.drawSymbolNumber(extraRotations * 1000, width / 2, height * 2 / 3, 1.0f);
|
data.drawSymbolNumber(extraRotations * 1000, width / 2, height * 2 / 3, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rotations per minute
|
||||||
|
g.setColor(new Color(0,0,0));
|
||||||
|
g.drawString(String.format("RPM: %d", Math.round(angularVelocity * 60)), 100, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -179,9 +183,11 @@ public class Spinner implements HitObject {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// not spinning: nothing to do
|
// not spinning: spinner slows down
|
||||||
if (!Utils.isGameKeyPressed()) {
|
if (!Utils.isGameKeyPressed()) {
|
||||||
lastAngle = -1f;
|
lastAngle = -1f;
|
||||||
|
angularVelocity = Math.max(0, angularVelocity - angularDrag * delta / 1000);
|
||||||
|
rotate(angularVelocity * (float)Math.PI * 2 * delta / 1000);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,10 +199,10 @@ public class Spinner implements HitObject {
|
||||||
if (lastAngle >= 0f) { // skip initial clicks
|
if (lastAngle >= 0f) { // skip initial clicks
|
||||||
float angleDiff = Math.abs(lastAngle - angle);
|
float angleDiff = Math.abs(lastAngle - angle);
|
||||||
if (angleDiff < Math.PI / 2) { // skip huge angle changes...
|
if (angleDiff < Math.PI / 2) { // skip huge angle changes...
|
||||||
angularVelocity = Math.max(angularVelocity - angularDrag * delta / 1000,
|
angularVelocity = (float)Math.max(angularVelocity - angularDrag * delta / 1000,
|
||||||
angleDiff / (Math.PI * 2) / ((float)delta / 1000));
|
angleDiff / (Math.PI * 2) / ((float)delta / 1000));
|
||||||
data.changeHealth(delta * GameData.HP_DRAIN_MULTIPLIER);
|
data.changeHealth(delta * GameData.HP_DRAIN_MULTIPLIER);
|
||||||
rotate(angularVelocity * delta / 1000);
|
rotate(angularVelocity * (float)Math.PI * 2 * delta / 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user