Implement playback speed in replays.
This commit is contained in:
50
src/itdelatrisu/opsu/replay/PlaybackSpeed.java
Normal file
50
src/itdelatrisu/opsu/replay/PlaybackSpeed.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package itdelatrisu.opsu.replay;
|
||||
|
||||
import itdelatrisu.opsu.GameImage;
|
||||
import itdelatrisu.opsu.GameMod;
|
||||
import org.newdawn.slick.Image;
|
||||
|
||||
public enum PlaybackSpeed {
|
||||
NORMAL(GameImage.REPLAY_1XPLAYBACK, 1f),
|
||||
DOUBLE(GameImage.REPLAY_2XPLAYBACK, 2f),
|
||||
HALF(GameImage.REPLAY_05XPLAYBACK, 0.5f);
|
||||
|
||||
/** The file name of the button image. */
|
||||
private GameImage gameImage;
|
||||
|
||||
/** The speed modifier of the playback. */
|
||||
private float modifier;
|
||||
|
||||
PlaybackSpeed(GameImage gameImage, float modifier) {
|
||||
this.gameImage = gameImage;
|
||||
this.modifier = modifier;
|
||||
}
|
||||
|
||||
private static int index = 1;
|
||||
|
||||
public static PlaybackSpeed next() {
|
||||
PlaybackSpeed next = values()[index++ % values().length];
|
||||
if((GameMod.DOUBLE_TIME.isActive() && next == PlaybackSpeed.DOUBLE) ||
|
||||
(GameMod.HALF_TIME.isActive() && next == PlaybackSpeed.HALF))
|
||||
next = next();
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
public static void reset() {
|
||||
index = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the image.
|
||||
* @return the associated image
|
||||
*/
|
||||
public Image getImage() { return gameImage.getImage(); }
|
||||
|
||||
/**
|
||||
* Returns the speed modifier.
|
||||
* @return the speed
|
||||
*/
|
||||
public float getModifier() { return modifier; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user