Implemented half/double time mod.

Dynamic bpm, map length in song select menu.
Fixed replay and spinner with these mods.
This commit is contained in:
Pavel Kolchev
2015-03-31 18:14:52 +03:00
parent e83e0da70f
commit 5f3ce74c64
6 changed files with 55 additions and 19 deletions

View File

@@ -1023,11 +1023,6 @@ public class Game extends BasicGameState {
// reset game data
resetGameData();
// needs to play before setting position to resume without lag later
MusicController.play(false);
MusicController.setPosition(0);
MusicController.pause();
// initialize object maps
for (int i = 0; i < osu.objects.length; i++) {
OsuHitObject hitObject = osu.objects[i];
@@ -1119,6 +1114,11 @@ public class Game extends BasicGameState {
leadInTime = osu.audioLeadIn + approachTime;
restart = Restart.FALSE;
// needs to play before setting position to resume without lag later
MusicController.play(GameMod.getSpeedMultiplier(), false);
MusicController.setPosition(0);
MusicController.pause();
}
skipButton.resetHover();

View File

@@ -336,7 +336,7 @@ public class SongMenu extends BasicGameState {
int iconWidth = musicNote.getWidth();
// song info text
if (songInfo == null) {
if (songInfo == null || GameMod.justChanged()) {
songInfo = focusNode.getInfo();
if (Options.useUnicodeMetadata()) { // load glyphs
OsuFile osu = focusNode.osuFiles.get(0);
@@ -349,7 +349,8 @@ public class SongMenu extends BasicGameState {
headerTextY += Utils.FONT_LARGE.getLineHeight() - 8;
Utils.FONT_DEFAULT.drawString(marginX + iconWidth * 1.05f, headerTextY, songInfo[1], Color.white);
headerTextY += Utils.FONT_DEFAULT.getLineHeight() - 2;
Utils.FONT_BOLD.drawString(marginX, headerTextY, songInfo[2], Color.white);
Utils.FONT_BOLD.drawString(marginX, headerTextY, songInfo[2],
(GameMod.DOUBLE_TIME.isActive()) ? Color.red : (GameMod.HALF_TIME.isActive()) ? Color.green : Color.white);
headerTextY += Utils.FONT_BOLD.getLineHeight() - 4;
Utils.FONT_DEFAULT.drawString(marginX, headerTextY, songInfo[3], Color.white);
headerTextY += Utils.FONT_DEFAULT.getLineHeight() - 4;