Fixed theme song loading in JAR files. (follow-up ce0eccd
)
Removed theme.osu, replaced with a comma-deliminated line in the configuration file. Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
parent
ce0eccd32b
commit
5083229572
|
@ -1,12 +0,0 @@
|
||||||
[General]
|
|
||||||
// theme song file name (mp3/ogg supported)
|
|
||||||
AudioFilename: theme.ogg
|
|
||||||
|
|
||||||
[Metadata]
|
|
||||||
// theme song title and artist
|
|
||||||
Title:welcome to osu!
|
|
||||||
Artist:nekodex
|
|
||||||
|
|
||||||
[HitObjects]
|
|
||||||
// length of theme song, in ms (third field)
|
|
||||||
1,1,48000,1,0,0:0:0:0:
|
|
|
@ -22,7 +22,6 @@ import itdelatrisu.opsu.states.Options;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.IntBuffer;
|
import java.nio.IntBuffer;
|
||||||
|
|
||||||
import javazoom.jl.converter.Converter;
|
import javazoom.jl.converter.Converter;
|
||||||
|
@ -35,7 +34,6 @@ import org.newdawn.slick.SlickException;
|
||||||
import org.newdawn.slick.openal.Audio;
|
import org.newdawn.slick.openal.Audio;
|
||||||
import org.newdawn.slick.openal.SoundStore;
|
import org.newdawn.slick.openal.SoundStore;
|
||||||
import org.newdawn.slick.util.Log;
|
import org.newdawn.slick.util.Log;
|
||||||
import org.newdawn.slick.util.ResourceLoader;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for all music.
|
* Controller for all music.
|
||||||
|
@ -261,16 +259,10 @@ public class MusicController {
|
||||||
* Plays the theme song.
|
* Plays the theme song.
|
||||||
*/
|
*/
|
||||||
public static void playThemeSong() {
|
public static void playThemeSong() {
|
||||||
try {
|
OsuFile osu = Options.getOsuTheme();
|
||||||
URL themeURL = ResourceLoader.getResource(Options.OSU_THEME_NAME);
|
if (osu != null) {
|
||||||
File themeFile = new File(themeURL.toURI());
|
|
||||||
OsuFile osu = OsuParser.parseFile(themeFile, null, false);
|
|
||||||
URL audioURL = ResourceLoader.getResource(osu.audioFilename.getName());
|
|
||||||
osu.audioFilename = new File(audioURL.toURI());
|
|
||||||
play(osu, true);
|
play(osu, true);
|
||||||
themePlaying = true;
|
themePlaying = true;
|
||||||
} catch (Exception e) {
|
|
||||||
Log.error("Failed to load theme song.", e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ package itdelatrisu.opsu.states;
|
||||||
import itdelatrisu.opsu.GUIMenuButton;
|
import itdelatrisu.opsu.GUIMenuButton;
|
||||||
import itdelatrisu.opsu.GameMod;
|
import itdelatrisu.opsu.GameMod;
|
||||||
import itdelatrisu.opsu.Opsu;
|
import itdelatrisu.opsu.Opsu;
|
||||||
|
import itdelatrisu.opsu.OsuFile;
|
||||||
import itdelatrisu.opsu.SoundController;
|
import itdelatrisu.opsu.SoundController;
|
||||||
import itdelatrisu.opsu.Utils;
|
import itdelatrisu.opsu.Utils;
|
||||||
|
|
||||||
|
@ -83,11 +84,6 @@ public class Options extends BasicGameState {
|
||||||
*/
|
*/
|
||||||
public static final String FONT_NAME = "kochi-gothic.ttf";
|
public static final String FONT_NAME = "kochi-gothic.ttf";
|
||||||
|
|
||||||
/**
|
|
||||||
* The theme song OsuFile file name.
|
|
||||||
*/
|
|
||||||
public static final String OSU_THEME_NAME = "theme.osu";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The beatmap directory.
|
* The beatmap directory.
|
||||||
*/
|
*/
|
||||||
|
@ -108,6 +104,12 @@ public class Options extends BasicGameState {
|
||||||
*/
|
*/
|
||||||
private static File skinDir;
|
private static File skinDir;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The theme song string:
|
||||||
|
* filename, title, artist, length (ms)
|
||||||
|
*/
|
||||||
|
private static String themeString = "theme.ogg,welcome to osu!,nekodex,48000";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Game options.
|
* Game options.
|
||||||
*/
|
*/
|
||||||
|
@ -1289,6 +1291,31 @@ public class Options extends BasicGameState {
|
||||||
return skinDir;
|
return skinDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a dummy OsuFile containing the theme song.
|
||||||
|
* @return the theme song OsuFile
|
||||||
|
*/
|
||||||
|
public static OsuFile getOsuTheme() {
|
||||||
|
String[] tokens = themeString.split(",");
|
||||||
|
if (tokens.length != 4) {
|
||||||
|
Log.error("Theme song string is malformed.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
OsuFile osu = new OsuFile(null);
|
||||||
|
osu.audioFilename = new File(tokens[0]);
|
||||||
|
osu.title = tokens[1];
|
||||||
|
osu.artist = tokens[2];
|
||||||
|
try {
|
||||||
|
osu.endTime = Integer.parseInt(tokens[3]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
Log.error("Theme song length is not a valid integer", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return osu;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads user options from the options file, if it exists.
|
* Reads user options from the options file, if it exists.
|
||||||
*/
|
*/
|
||||||
|
@ -1325,6 +1352,9 @@ public class Options extends BasicGameState {
|
||||||
case "Skin":
|
case "Skin":
|
||||||
skinDir = new File(value);
|
skinDir = new File(value);
|
||||||
break;
|
break;
|
||||||
|
case "ThemeSong":
|
||||||
|
themeString = value;
|
||||||
|
break;
|
||||||
case "Port":
|
case "Port":
|
||||||
i = Integer.parseInt(value);
|
i = Integer.parseInt(value);
|
||||||
if (i > 0 && i <= 65535)
|
if (i > 0 && i <= 65535)
|
||||||
|
@ -1475,6 +1505,8 @@ public class Options extends BasicGameState {
|
||||||
writer.newLine();
|
writer.newLine();
|
||||||
writer.write(String.format("Skin = %s", getSkinDir().getAbsolutePath()));
|
writer.write(String.format("Skin = %s", getSkinDir().getAbsolutePath()));
|
||||||
writer.newLine();
|
writer.newLine();
|
||||||
|
writer.write(String.format("ThemeSong = %s", themeString));
|
||||||
|
writer.newLine();
|
||||||
writer.write(String.format("Port = %d", port));
|
writer.write(String.format("Port = %d", port));
|
||||||
writer.newLine();
|
writer.newLine();
|
||||||
writer.write(String.format("ScreenResolution = %d", resolutionIndex));
|
writer.write(String.format("ScreenResolution = %d", resolutionIndex));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user